我想从 puppet 管理挂载的分区,其中包括修改/etc/fstab和创建用作挂载点的目录。在mount资源类型更新fstab就好了,但使用file创建的挂载点是有点棘手。
例如,默认情况下目录的所有者是root,如果挂载分区的根 (/) 有另一个所有者,puppet 会尝试更改它,我不希望这样。我知道我可以设置该目录的所有者,但我为什么要关心挂载分区上的内容?我想做的就是安装它。有没有办法让puppet不关心作为挂载点的目录的权限?
这就是我现在正在使用的:
define extra_mount_point(
$device,
$location = "/mnt",
$fstype = "xfs",
$owner = "root",
$group = "root",
$mode = 0755,
$seltype = "public_content_t"
$options = "ro,relatime,nosuid,nodev,noexec",
) {
file { "${location}/${name}":
ensure => directory,
owner => "${owner}",
group => "${group}",
mode => $mode,
seltype => "${seltype}",
}
mount { "${location}/${name}":
atboot => true,
ensure => mounted,
device => "${device}",
fstype => "${fstype}",
options => …Run Code Online (Sandbox Code Playgroud) 从 0.24.8 开始,Puppet 模板可以调用 Puppet 函数吗?
我可以通过调用清单中的函数,将返回值分配给变量,然后在模板中使用 lookupvar('variable') 来获得类似的功能,但我想去掉中间人。
我正在使用 Puppet 为 MySQL 提供参数化类:
class mysql::server( $password ) {
package { 'mysql-server': ensure => installed }
package { 'mysql': ensure => installed }
service { 'mysqld':
enable => true,
ensure => running,
require => Package['mysql-server'],
}
exec { 'set-mysql-password':
unless => "mysqladmin -uroot -p$password status",
path => ['/bin', '/usr/bin'],
command => "mysqladmin -uroot password $password",
require => Service['mysqld'],
}
}
Run Code Online (Sandbox Code Playgroud)
我该如何保护$password?目前,我从节点定义文件中删除了默认的puppet全局可读权限,并通过 ACL明确授予了读取权限。
我假设其他人也遇到过类似的情况,所以也许有更好的做法。
有没有办法使用 puppet 设置服务器的主机名?
我可以编写自定义类型,但也许有更简单的方法。
谢谢
[编辑] 抱歉,我应该提到我运行 puppet masterless,首先设置 puppet,然后设置其他所有内容。
上周我花了所有的精力来学习 Puppet。现在我患有精神缓冲区溢出,并且对能够驯服这头野兽几乎没有信心。我遇到了许多带注释的示例,但由于它们无数的变化,我无法区分推荐的(最近的)Puppet 风格和约定,以及临时的“为我工作”的方法。我受不了,因为它似乎是关于基本级别的东西。
所以。使用 Puppet 管理组和用户,用户的主要组等于他们自己的用户名,其他组可以lan用于局域网登录、wheel管理员、shell在任意节点上具有 shellmail的用户、用户、daemons各种守护进程。管理员登录将在所有节点上进行,更糟糕的是,局域网登录也可能是 shell 登录。
据我了解,如果您使用在某个时候实现的虚拟定义,则可以多次定义用户。听起来很棒,那么对于一个用户来说,这如何与多个组一起工作呢?假设 Bob 可以同时使用 LAN 节点和节点 beastie.wan;他的登录名是否thebob定义了两次,分别在 lanusers.ppgroups => ["lan"]和 shellusers.pp 中groups => ["shell"]?如果 Bob 希望他的 lan 密码与他的 shell 密码分开怎么办?
我目前使用的代码没有虚拟定义,用户只是硬编码的单个包含。有一次,我遇到了一个使用虚拟的例子,这就是我卡住的地方,因为我不明白如何扩展代码,以便 Puppet 创建一个主要组和我首先定义的所需组,然后将用户加入这些组.
对。请正确提示我。
我正在创建一个用户如下
user { $username:
comment => "$name",
shell => "$shell",
managehome => false,
password => "$password",
groups => $groups
}
Run Code Online (Sandbox Code Playgroud)
现在你可以看到我在做一个 managehome 是假的 现在稍后我需要将文件推送到用户的主目录。
$key = "${homedir}/${name}/file"
file { $key:
ensure => present,
owner => $username,
group => $username,
mode => 600,
content => "$keyvalue",
subscribe => User[$username],
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能为此获取用户的主目录?
我想知道如何手动(使用 openssl 而不是 puppet ca 命令)创建 Puppet 可以使用的 CA?目标是编写此类 CA 的脚本,以将它们部署在多个 puppetmaster 上,而不是通过 puppet cert 命令在它们上创建证书。
关于如何做到这一点的任何想法?我只能找到类似的东西:https : //wiki.mozilla.org/ReleaseEngineering/PuppetAgain/HowTo/Set_up_a_standalone_puppetmaster 但它无法工作 - 在创建 CA 和客户端证书并将它们应用到 puppetmaster 之后,它抱怨:
Feb 16 09:35:20 test puppet-master[81728]: Could not prepare for execution: The certificate retrieved from the master does not match the agent's private key.
Feb 16 09:35:20 test puppet-master[81728]: Certificate fingerprint: 4F:08:AE:01:B9:14:AC:A4:EA:A7:92:D7:02:E9:34:39:1C:5F:0D:93:A0:85:1C:CF:68:E4:52:B8:25:D1:11:64
Feb 16 09:35:20 test puppet-master[81728]: To fix this, remove the certificate from both the master and the agent and then start a …Run Code Online (Sandbox Code Playgroud) 我正在使用 puppet(理论上)让 npcd 在安装时启动,但是在 Ubuntu 上,该服务随 RUN="no" 的 /etc/default/npcd 中的默认设置一起安装:
$ cat /etc/default/npcd
# Default settings for the NPCD init script.
# Should NPCD be started? ("yes" to enable)
RUN="no"
# Additional options that are passed to the daemon.
DAEMON_OPTS="-d -f /etc/pnp4nagios/npcd.cfg"
Run Code Online (Sandbox Code Playgroud)
我认为这个 puppet 配置块会处理以下事情:
service { "npcd":
enable => true,
ensure => "running",
require => Package["pnp4nagios"],
}
Run Code Online (Sandbox Code Playgroud)
但可惜,它没有,而且没有实际重写 /etc/default 中的文件,我不知道该怎么做。有没有一种直接的方法来启用我没有看到的服务?
作为记录,我使用的是 Ubuntu 12.04.2 和 puppet 版本 3.1.0。
当包含由 puppet 控制的文件的包即将更改该文件时,是否可以在控制台上收到通知?意思是,在 yum 中进行 yum update 时,是否可以注入自定义警告?
我有 IP 地址列表,我想查找与该 IP 地址关联的实例是否仍在运行或终止。我每天都在启动和终止大量实例,只想从 puppetmaster 中删除它们的证书。
如果有任何替代方法,我可以实现我的目标,我可以做到。
puppet ×10
linux ×3
amazon-ec2 ×1
aws-cli ×1
certificate ×1
groups ×1
mysql ×1
openssl ×1
puppetmaster ×1
service ×1
ssl ×1
ubuntu ×1
users ×1
yum ×1