标签: puppet

如何使用 Puppet 或 Cfengine 设置 Cobbler?

我听说过很多关于将 Cobbler 与 Puppet/Cfengine 一起使用以进行快速部署和配置的信息。

你能指点我一些教程或分享你如何做的经验吗?

也很想知道您用于快速配置和部署的任何其他系统。谢谢。

deployment configuration puppet cobbler cfengine

8
推荐指数
1
解决办法
5280
查看次数

SSH 密钥管理系统

我希望从基于密码(我开始不知所措)切换到基于 SSH 密钥的系统。

我想知道是否有任何 SSH 密钥管理系统或服务器解决方案,可以让我在机器上分发和撤销密钥?

或者最好的方法是使用 Puppet 来完成这项任务?如果是,那么每个客户端机器的单个密钥对的方法(此处描述:用于管理 ssh 密钥的最佳系统?)是最好的吗?

ssh keys puppet

8
推荐指数
1
解决办法
2001
查看次数

全局 vs 本地傀儡管理

有没有人用 Puppet 管理过几个地理分布的系统?

我有几个几乎完全相似的部署(服务器 IP 除外),我希望将其管理转换为 Puppet。

我有两个选择:

  • 让每个部署托管它自己的 PuppetMaster 以提供本地配置,然后以某种方式同步 PuppetMasters(可能再次与 puppet 同步)

  • 在 AWS EC2 上托管 PuppetMaster 以获得高可用性,并从单点为所有部署提供配置

有没有人尝试过第二种选择,结果如何?我对这种环境下的高可用性性能特别感兴趣。

谢谢。

puppet

8
推荐指数
1
解决办法
2054
查看次数

使用 Puppet 部署我们自己的软件?

(提前为这个问题的愚蠢道歉。我通常是一名程序员,而不是系统管理员,但我已经承担起自动化一些事情,并清理其他一些自动化但不是最漂亮的方式的东西.:-)

我一直在寻找用于将软件部署自动化到一堆服务器的各种工具,例如 cfengine、Puppet 和 Chef。到目前为止,Puppet 看起来最吸引人,但我当然还没有承诺过任何事情。

这些工具看起来都可以很好地使用预先打包的软件使一堆服务器保持最新状态。

我不明白的是:如何使用工具(如 Puppet)来管理我们自己内部软件的部署?我想我不知所措我,因为我已经看到了一千教程展示了如何保持阿帕奇ensure => latest(这很酷的),但是没有一个相当相当于我用例的今天,这是更多的东西一样:

  1. 当一个人按下按钮时,
  2. 从版本控制存储库 B 中拉取分支 A
  3. 运行命令 C 来编译它
  4. 将二进制文件 D 复制到服务器 E1 到 E10
  5. 在每台服务器上,运行命令 F 使所有更改生效

Puppet 听起来很棒,我完全看到了声明式、幂等配置相对于某些 shell 脚本的优势,但我还没有看到任何关于“您想将 shell 脚本更新为 Puppet(或 Chef 或 cfengine)的教程,所以这就是您应该做”。有这样的事情吗?对于其他人来说,如何使用 Puppet 文档中提供的内容并复制我想要的行为是否显而易见?我只是没有得到它吗?

到目前为止,在我看来,人类(#1)会手动打包 Puppet 外部的软件(#2 和 #3),手动更新 Puppet 配置,这将触发 Puppet 更新服务器。 .. 也许?(我在这里有点困惑,因为我相信你能看出来。)

谢谢!

automation deployment puppet

8
推荐指数
1
解决办法
5705
查看次数

Puppet:更新文件(或包)时运行 shell 命令

我想mysql_tzinfo_to_sqltzinfo包(在 Ubuntu 服务器上)更改时运行。我想 Puppet 可以解决这个问题。

我认为 Puppet 会对包版本的更改做出反应,或者如果不是,则对包中包含的文件的时间戳更改做出反应。

我能看到的唯一方法是拥有一个没有直接操作的资源,并有一个依赖它的 exec。

我的问题是:

  1. 是否可以定义一个仅用于通知另一个资源(例如exec)的文件?
  2. 是否可以定义一个包资源,以便在包更改或更新时激活另一个资源(例如exec)?
  3. 是否可以定义运行 shell 命令行(例如带有管道和重定向)而不是来自文件系统的命令的exec资源?

综合起来,似乎势不可挡。

跟进精彩的答案!为了完整起见(并记录在案),我应该注意以下几点:

  1. 感兴趣的完整 shell 命令是 mysql_tzinfo_to_sql | mysql -u root -p password (它将 tzinfo 加载到 MySQL 数据库中以供 MySQL 使用)。
  2. 审计/etc/tzinfo是徒劳的,因为这只是本地时区配置;目标是观察 tzinfo 数据本身的变化(因此观察/usr/share/zoneinfo)。
  3. 同样,观看内容也是错误的——因为它们可能不会改变;最好是观看mtime全部,因为文件时间应该在每次 tzinfo 更新后改变。

此外,詹姆斯·特恩布尔 James Turnbull 在引入审计时写了所有关于审计的内容。元参数参考包含audit参数工作的简短描述。

puppet

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

Puppet 测试文件是否存在

我正在寻找一种方法来测试我的客户端中是否存在文件(只是测试而不是创建)。我在 Chef 中找到了方法 (File.exists),但这对 puppet 来说并不简单。

提前致谢。

puppet

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

将 puppet 客户端迁移到新的 puppetmaster

如何迁移我们现有的 puppet 客户端以指向新的 puppetmaster 服务器?我宁愿不手动转到每个客户端框并生成新证书。

当尝试显而易见的 - 将 /etc/puppet 和 /var/lib/puppet 中的所有文件同步到新服务器时 - 我们收到证书错误

/etc/init.d/puppetmaster start 
* Starting puppet master                
Could not run: Retrieved certificate does not match private key; please remove certificate from server and regenerate it with the current key
Run Code Online (Sandbox Code Playgroud)

我能够通过将/var/lib/ssl/certs/var/lib/ssl/private_key文件从old_hostnameto复制来解决这个问题new_hostname,这基本上是将puppet 客户端迁移到新 puppet master 时的建议 (旧 puppet master 服务器已消失,仅使用备份)

不幸的是,我的客户仍然知道有问题,并给我以下错误:

sudo puppetd --test --server newservername.example.net --noop 
info: Retrieving plugin
err: /File[/var/lib/puppet/lib]: Failed to generate additional resources using 'eval_generate': …
Run Code Online (Sandbox Code Playgroud)

puppet ssl-certificate

8
推荐指数
1
解决办法
5918
查看次数

puppet 中的 include 和 require 有什么区别

如果我有以下代码,我有一个 puppet 课程:

class A {
  require B

....
} 
Run Code Online (Sandbox Code Playgroud)

我收到循环依赖错误。如果我有:

class A {
  include B

....
} 
Run Code Online (Sandbox Code Playgroud)

一切正常

puppet

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

如何向 aptitude 或 apt-get 提供 dpkg 配置参数?

安装 gitolite 时,我发现:

# aptitude install gitolite
The following NEW packages will be installed:
  gitolite 
0 packages upgraded, 1 newly installed, 0 to remove and 29 not upgraded.
Need to get 114 kB of archives. After unpacking 348 kB will be used.
Get:1 http://security.debian.org/ squeeze/updates/main gitolite all 1.5.4-2+squeeze1 [114 kB]
Fetched 114 kB in 0s (202 kB/s)
Preconfiguring packages ...
Selecting previously deselected package gitolite.
(Reading database ... 30593 files and directories currently installed.)
Unpacking gitolite (from .../gitolite_1.5.4-2+squeeze1_all.deb) ...
Setting …
Run Code Online (Sandbox Code Playgroud)

debian puppet chef gitolite debian-squeeze

8
推荐指数
2
解决办法
6531
查看次数

Puppet 为 .erb 文件变量导出资源?

场景:我的配置文件由.erb包含以下代码段的文件定义。

<% backupclients.each do |backup_files| -%>
Job {
  Name = "Server"
  JobDefs = "DefaultJob"
  Client = <%= backup_files %>-fd
  Pool = TeraMonth
  Write Bootstrap = "/var/lib/bacula/<%= backup_files %>.bsr"
}
<% end -%>
Run Code Online (Sandbox Code Playgroud)

服务器的配置文件需要为每个客户端主机重复输入。如果我要创建一个简单的数组,这将毫无问题地工作。然而,我想要做的是让每个主机注册自己,然后使用<<| |>>类似于处理nagios_*类型的编译指示收集数据。

对此的标准示例涉及导出类型。

class ssh {
  @@sshkey { $hostname: type => dsa, key => $sshdsakey }
  Sshkey <<| |>>
}
Run Code Online (Sandbox Code Playgroud)

但是,我无法弄清楚如何编写类型或以允许我从.erb模板中读取该值数组的方式引用它。有没有一种方法可以将导出的资源与.erb文件中的变量循环结合使用?

puppet

8
推荐指数
2
解决办法
4822
查看次数