标签: puppet

跨多个服务器管理应用程序,或 PXE 与 cfEngine/Chef/Puppet

我们有一个应用程序正在几个(5 个左右,并且会增长)机器上运行。所有机器的硬件都是相同的,理想情况下软件也是如此。到目前为止,我一直在手动管理它们,并且不想再(静态 IP 地址、禁用所有必要的服务、安装所需的软件包......)。任何人都可以平衡以下选项的利弊,或者提出更明智的建议?

1:在所有机器上单独安装centos并使用chef/cfengine/puppet管理配置。这会很好,因为我想要一个借口来学习使用其中一个应用程序,但我不知道这是否真的是最好的解决方案。

2:制作一个完美的盒子并对其进行成像。通过 PXE 提供映像,每当我想进行修改时,我只需从新映像重新启动这些框即可。集群人员通常如何处理诸如在 /etc/sysconfig/network-scripts/ifcfg* 文件中包含 mac 地址之类的事情?我们也使用infiniband,如果hwaddr错误,它也拒绝启动。这些可以在启动时正确生成吗?

我倾向于使用 PXE 解决方案,但我认为使用 munin 或 nagios 进行监控会更复杂一些。任何人都有这种类型的问题的经验?

所有服务器都装有固态硬盘,速度快且功能强大。

谢谢,马特。

networking linux cluster centos puppet

15
推荐指数
2
解决办法
5576
查看次数

Puppet:确保文件为空

我想确定 motd 文件是空的。我很想这样做:

file { "/etc/motd":
  ensure => empty
}
Run Code Online (Sandbox Code Playgroud)

这显然行不通。

有没有一种简单的方法来确保文件为空而不是使用“源”声明并将空文件存储在文件存储库中?

puppet

15
推荐指数
1
解决办法
7281
查看次数

去中心化 Puppet 架构的优缺点

我们目前有大约 300 个 RHEL 服务器连接到 Puppetmaster 服务器。但是,我们注意到了一些性能瓶颈,这是我们系统的故障点。总的来说,我对 puppet 还很陌生,我正在考虑创建一个去中心化的 puppet 架构,而不是让 Puppet 客户端连接到 Puppetmaster 服务器。除了我怀疑会发生的事情之外,例如性能提升和缺乏为新机器签名和交换 SSL 证书,设置分散式架构的其他优点和缺点是什么?

redhat puppet puppetmaster

15
推荐指数
1
解决办法
2529
查看次数

带有加密 ubuntu 主目录的 NFS

我在使用 vagrant 设置 NFS 时遇到问题:

在我的本地机器上,我安装了 NFS:

apt-get install nfs-common nfs-kernel-server
Run Code Online (Sandbox Code Playgroud)

在我的 Vagrantfile 中将其设置为使用:

config.vm.share_folder("v-root", "/vagrant", ".", :nfs => true)
Run Code Online (Sandbox Code Playgroud)

vagrant up我得到:

exportfs: /home/<user>/path/to/dir does not support NFS export

Mounting NFS shared folders failed. This is most often caused by the NFS
client software not being installed on the guest machine. Please verify
that the NFS client software is properly installed, and consult any resources
specific to the linux distro you're using for more information on how to …
Run Code Online (Sandbox Code Playgroud)

ubuntu nfs puppet vagrant ubuntu-12.04

15
推荐指数
2
解决办法
7345
查看次数

Puppet 和launchd 服务?

我们有一个配置了 Puppet 的生产环境,并且希望能够在我们的开发机器上设置一个类似的环境:红帽、Ubuntu 和 OSX 的混合。正如所料,OSX 是这里的怪人,可悲的是,我在让它工作时遇到了很多麻烦。

我的第一次尝试是使用macports,使用以下声明:

package { 'rabbitmq-server':
    ensure   => installed,
    provider => macports,
}
Run Code Online (Sandbox Code Playgroud)

但遗憾的是,这会产生以下错误:

Error: /Stage[main]/Rabbitmq/Package[rabbitmq-server]: Could not evaluate: Execution of '/opt/local/bin/port -q installed rabbitmq-server' returned 1: usage: cut -b list [-n] [file ...]
       cut -c list [file ...]
       cut -f list [-s] [-d delim] [file ...]
    while executing
"exec dscl -q . -read /Users/$env(SUDO_USER) NFSHomeDirectory | cut -d ' ' -f 2"
    (procedure "mportinit" line 95)
    invoked from within
"mportinit ui_options global_options …
Run Code Online (Sandbox Code Playgroud)

mac-osx puppet

15
推荐指数
1
解决办法
2384
查看次数

由于某些 ssl 错误,新服务器无法从 Puppetmaster 获取配置

生产环境中的三台机器出现了一些硬件问题并已退役。基础架构团队已重新安装它们并为它们提供相同的主机名和 IP 地址。目的是在这些系统上运行 Puppet,以便可以再次调试这些系统。


试图

1) 通过发出以下命令从 Puppetmaster 中删除旧的 Puppet 证书:

puppet cert revoke grb16.company.com
puppet cert clean grb16.company.com
Run Code Online (Sandbox Code Playgroud)

2) 删除旧证书后,通过从重新安装的节点之一发出以下命令来创建新证书请求:

[root@grb16 ~]# puppet agent -t
Info: csr_attributes file loading from /etc/puppet/csr_attributes.yaml
Info: Creating a new SSL certificate request for grb16.company.com
Info: Certificate Request fingerprint (SHA256): 6F:2D:1D:71:67:18:99:86:2C:22:A1:14:80:55:34:35:FD:20:88:1F:36:ED:A7:7B:2A:12:09:4D:F8:EC:BF:6D
Exiting; no certificate found and waitforcert is disabled
[root@grb16 ~]#
Run Code Online (Sandbox Code Playgroud)

3) 一旦证书请求在 Puppetmaster 上可见,就会发出以下命令来签署证书请求:

[root@foreman ~]# puppet cert sign grb16.company.com
Notice: Signed certificate request for grb16.company.com
Notice: Removing file Puppet::SSL::CertificateRequest grb16.company.com at '/var/lib/puppet/ssl/ca/requests/grb16.company.com.pem' …
Run Code Online (Sandbox Code Playgroud)

ssl certificate puppet puppetmaster puppet-agent

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

systemd 服务中延迟时间的含义是什么?

我已经在 CentOS 7 上安装了 Puppet Enterprise。我可以看到几个 Puppet 服务无法开始说延迟时间结束。这是什么意思?

Sep 03 20:50:16 l-pm1 systemd[1]: pe-puppetdb.service holdoff time over, scheduling restart.
Sep 03 20:50:16 l-pm1 systemd[1]: Starting pe-puppetdb Service...
Run Code Online (Sandbox Code Playgroud)

puppet systemctl

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

Puppet:测试是否定义了资源,或者创建它

我一直在想办法测试一个资源是否已经在另一个文件中定义,如果没有创建它?一个简单的例子:

  if File[$local_container] {
    alert("Testing - It existed $local_container")
  } else {
    file{ "$local_container":
      ensure => directory,
    }
  }
Run Code Online (Sandbox Code Playgroud)

但是 -File[$local_container]似乎总是评估为真。有没有办法做到这一点?

puppet

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

如何从 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 递归镜像目录及其内容?

假设我有一个带有files/etc/foo/{conf0, conf1, conf2, conf3, etc}. 当它们的数量很少时,放置这些文件中的每一个都很简单:

file { 'conf0':
    path => '/etc/foo/conf0',
    ensure => true,
    source => 'puppet:///.../etc/foo/conf0',
}
Run Code Online (Sandbox Code Playgroud)

并重复。但是涉及到相当多的重复,如果有多个配置文件,维护起来很乏味。我想确保它files/etc/foo/被镜像到给定的路径上。也就是说,

file { 'etc foo confs':
   path => '/etc/foo',
   ensure => recursive,
   source => 'puppet:///.../etc/foo',
}
Run Code Online (Sandbox Code Playgroud)

会创建/etc/foo/conf0/etc/foo/conf1等等。这可能吗?

puppet

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