标签: puppet

如何从 puppet 管理挂载的分区(fstab + 挂载点)

我想从 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)

linux puppet

14
推荐指数
2
解决办法
2万
查看次数

从 Puppet 模板调用 Puppet 函数?

从 0.24.8 开始,Puppet 模板可以调用 Puppet 函数吗?

我可以通过调用清单中的函数,将返回值分配给变量,然后在模板中使用 lookupvar('variable') 来获得类似的功能,但我想去掉中间人。

puppet

13
推荐指数
1
解决办法
8367
查看次数

在 Puppet 中,我如何保护密码变量(在本例中为 MySQL 密码)?

我正在使用 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明确授予了读取权限。

我假设其他人也遇到过类似的情况,所以也许有更好的做法。

mysql linux puppet best-practices

13
推荐指数
1
解决办法
7016
查看次数

使用 puppet 设置主机名?

有没有办法使用 puppet 设置服务器的主机名?

我可以编写自定义类型,但也许有更简单的方法。

谢谢

[编辑] 抱歉,我应该提到我运行 puppet masterless,首先设置 puppet,然后设置其他所有内容。

puppet

13
推荐指数
1
解决办法
2万
查看次数

Puppet:如何创建和管理 unix 用户和组

上周我花了所有的精力来学习 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 创建一个主要组和我首先定义的所需组,然后将用户加入这些组.

对。请正确提示我。

users groups puppet

13
推荐指数
1
解决办法
6588
查看次数

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)

我怎样才能为此获取用户的主目录

linux puppet

13
推荐指数
1
解决办法
1万
查看次数

如何手动创建 Puppet CA 和证书?

我想知道如何手动(使用 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)

ssl certificate openssl puppet

13
推荐指数
1
解决办法
8728
查看次数

使用 puppet 修复 /etc/default/ 中已禁用的服务?

我正在使用 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。

ubuntu service puppet

13
推荐指数
3
解决办法
3952
查看次数

当 yum 更改 puppet 控制的文件时通知

当包含由 puppet 控制的文件的包即将更改该文件时,是否可以在控制台上收到通知?意思是,在 yum 中进行 yum update 时,是否可以注入自定义警告?

yum puppet

13
推荐指数
1
解决办法
989
查看次数

是否可以根据其 IP 地址获取 aws ec2 实例 ID

我有 IP 地址列表,我想查找与该 IP 地址关联的实例是否仍在运行或终止。我每天都在启动和终止大量实例,只想从 puppetmaster 中删除它们的证书。

如果有任何替代方法,我可以实现我的目标,我可以做到。

puppet amazon-ec2 amazon-web-services puppetmaster aws-cli

13
推荐指数
2
解决办法
2万
查看次数