前段时间我尝试过 DevOps 的 Ops 部分,它很有趣,但我没有时间和理由在任何项目中尝试它。但是上周我开始了新工作,老板问我是否可以配置服务器来为公司项目制作诸如暂存环境之类的东西。除此之外,我开始考虑将项目迁移到更多的 DevOps 而不仅仅是开发。
我已经推出了 Docker,这对我来说非常棒而且非常简单。但是前段时间我在尝试 Puppet,所以我想到了一个问题:“有什么理由将 Puppet 与 Docker 一起使用?”。Docker 似乎做了 Puppet 会做的所有事情,但方式更简单。
PS 前段时间在 Hacker News 上有Consul,它是很好的配置和服务发现,所以即使配置也可以解决(我也在考虑实现这个)。
我收到了一些主机名错误的代理的请求。我已经更正了这一点,但仍然有带有错误主机名的未完成请求。
我试过:
$puppet cert list
"wrong.host.name" (SHA256) 8E:...:51
$ puppet cert revoke wrong.host.name
Error: Could not find a serial number for wrong.host.name
$ puppet cert clean wrong.host.name
Error: Could not find a serial number for wrong.host.name
Run Code Online (Sandbox Code Playgroud)
摆脱它们的正确方法是什么?
我可以使用 PuppetLabsvcsrepo
来克隆公共 git 存储库,但我也希望能够使用主机的 SSH 密钥克隆私有存储库。
为了实现这一点Vagrantfile
和/或manifests/default.pp
为了实现这一点,配置会是什么样子?
几周前我在 Mac OS 10.8.4 上安装了 puppet 3.x,现在想删除它。
installer.dmg 不附带卸载程序,也没有要删除的 .app 包。
如何从 Mac OS X 卸载 puppet?
对于我的服务器安装,我需要 wget 并编译一个源包(geos、GeoIP 和 py 绑定)。是否有预定义的 puppet 类来获取包源并编译它们?
我使用 packageinstall
属性来确保X
安装了给定的包。
但是,即使安装了软件包,也会puppet
尝试重新安装它,当然会以异常退出(“X 已安装”)。当包名称与服务名称匹配时不会发生这种情况。我使用本地 RPM 和 RPM 提供程序。
我如何避免这种异常?
我还实施了一个解决方法:如果我成功安装 RPM,我会创建一个名为/X_DONE
. 然后我根据该文件安装依赖项,而不是包。
处理这种情况的正确方法是什么?
编辑:失败的清单:
file {"$tmp_dir/$php_pdo":
ensure => present,
source => "puppet:///files/services/$php_pdo"
}
package {"php_pdo":
require => File["$tmp_dir/$php_pdo"],
ensure => installed,
provider => rpm,
source => "$tmp_dir/$php_pdo"
}
Run Code Online (Sandbox Code Playgroud)
和例外:
err: /Stage[main]/Apache-php/Package[php_pdo]/ensure: change from absent to present failed: Execution of '/bin/rpm -i --oldpackage /tmp/puppet/php-pdo-5.1.6-27.el5_5.3.x86_64.rpm' returned 1: package php-pdo-5.1.6-27.el5_5.3.x86_64 is already installed
Run Code Online (Sandbox Code Playgroud) 是否可以更改主机 ssh 指纹?需要执行此操作的一个示例是与克隆源具有相同指纹的虚拟机克隆;这会给 Puppet 等应用程序带来问题。
我已经开始阅读有关 puppet 的文章,发现分发 puppet 清单有两种主要方式;一是使用puppet master,二是使用git分发。
两个不同的版本有什么优缺点。对于同时使用 windows 和 linux 服务器的环境,有什么建议?