你如何配置和使用你的 Puppet 文件桶?
我想:
我是 Puppet 的初学者,我想知道我是否正在使用 Puppet 部署应用程序的正确方法。
应用程序位于 tar.gz 文件中,该文件包含带有版本号的文件。所以,我这样做是为了部署(我在服务器上并重新启动客户端以获取新的 tarball):
nodes.pp
node 'server1.domain.com' inherits basenode {
apps { apps:
version => 56,
apps_name => "apps_tarball.tgz",
}
init.pp (modules)
exec {"apps_wget":
command => "/usr/bin/wget http://web_server/${version}-${apps_name} -O /tmp/${container_zip_name}",
unless => "test -f /tmp/${version}-${apps_name}",
require => [ Package["wget"] ],
}
exec {"apps_unzip":
cwd => "/usr/local/apps/path",
command => "/usr/bin/unzip /tmp/${version}-${apps_name}",
unless => "test -f /usr/local/apps/path/apps-version-${version}",
require => [ Package["unzip"], Exec["container_wget"] ],
}
Run Code Online (Sandbox Code Playgroud)
但是,当我要升级时,我不知道说Puppet删除旧目录?例如,如果我想将版本 56 升级到 57:我必须删除 56 的版本目录。
我听说过 Capristrano,使用 Puppet 来管理包、配置文件和使用 Capristrano 部署应用程序似乎更好,不是吗?
谢谢。
是否可以告诉 puppet 为一个(或所有)节点编译目录并将该特定数据保存在某处?
我对获取所有需要的包及其每个节点的版本特别感兴趣,但获取任何数据的通用方法也适用。
我们正在研究一种为基于 RHEL/RHEL 的服务器执行自动更新的方法。
最初的想法:使用 Puppet,我们禁用默认存储库并指向我们自己的存储库。然后,我们使用ensure => latest我们想要自动更新的包。
问题:我们看到某些服务在更新后重新启动(废话)。
问题:有人对如何更好地自动化 Linux 更新和减轻服务自动重启的策略有任何建议吗?我们更喜欢包含 Puppet 的解决方案,但是,如果我们需要使用其他服务,那不是交易破坏者。
可能的解决方案:我提交了一个解决方案,该解决方案实现了@voretaq7 和@ewwhite 建议的许多内容。好像这就是我暂时要走的路线。如果您有其他建议,请发表评论或提交答案。
我们有很多服务器,但仍想全部更新。实际的方法是任何系统管理员从一个服务器到另一个服务器并制作一个aptitude update && aptitude upgrade- 这仍然不是很酷。
我现在正在寻找一个更好、更智能的解决方案。人偶可以做这个工作吗?你怎么做呢?
到目前为止我读过的 Puppet 教程还没有提到如何构建 puppet .pp。
任何人都可以分享一些有效和扩展的经验吗?
使用 Puppet 时,我收到类似的错误消息
returned 1 instead of one of [0]
有没有办法输出/获取实际的错误消息?
注意:有很多理论问题。
最近我正在阅读有关 Puppet(和类似系统)的文章,我相信它可以让我的工作更轻松很多。但我试着——不幸的是不能——去理解我能“傀儡”的东西。我可以想象“云”或 HA 集群,其中更多服务器上的相同配置。但是工作站呢?我有一台电脑(带有 kvm 的 Centos)、一台笔记本电脑(fedora)和个人服务器,它可以(或应该)被人偶化吗?什么是(缺点)优势?或者在我们公司我们有数百台服务器(主要是centos),但每台服务器都有点不同。无法决定在一个地方有很多配置是否更好..(不)优势?我会很高兴您的所有意见或与此主题的链接。
我正在调查是否可以让 puppet 生态系统利用我们现有的 Microsoft Enterprise CA 而不是自己的 CA。
由于 puppet 吹捧所有系统都是“标准 SSL”,我的猜测是完全有可能在不改变 puppet 的情况下做到这一点,但是除非编辑 puppet 以对企业进行适当的调用,否则这可能是一个巨大的手动难题CA。
有没有人试过这个?是不是“这里有龙,转身离开!” 情况?
我想知道如何建立:datadir:在hiera.yaml与日伪和流浪最佳利用。目前我在 Ubuntu 13.10 上使用 vagrant 1.5.0 和 virtualbox 4.2,Ubuntu 12.04 来宾运行 puppet 3.1.1
我正在尝试设置一个类似于这篇博文Puppet Best Practices: Environment specific configs 的环境。具体来说,我的 Vagrantfile 包含:
config.vm.define "servername" do |servername|
servername.vm.box = "precise-puppet-3"
servername.vm.network "private_network", ip: "192.168.213.2",
virtualbox__intnet: "networkname"
# Provision with puppet.
servername.vm.provision :puppet do |puppet|
puppet.hiera_config_path = "puppet/hiera.yaml"
puppet.manifests_path = "puppet/manifests"
puppet.module_path = "puppet/modules"
puppet.manifest_file = "servername.pp"
puppet.facter = {
"vagrant" => "1",
"server" => "servername",
}
end
end
Run Code Online (Sandbox Code Playgroud)
我可以确认hiera_config_path是正确的,因为如果我删除hiera.yaml.
puppet/hiera.yaml 包含: …