Articles of 傀儡

如何部署滚动操作系统升级和使用Puppet或MCollective重新启动?

我正在寻找为我的基础架构执行定期滚动升级的最佳方式。 通常情况下,这涉及到每个主机上一次一个这样做: sudo yum update -y && sudo reboot 但是,我正在达到这个可扩展性的极限。 我只想在每个angular色中一次重新引导一个节点,这样,我就不会同时closures所有负载均衡器或数据库集群成员。 理想情况下,我想要做一些事情: for role in $(< roles_list.txt) ; do mco package update_all_and_reboot \ –batch 1 –batch-sleep 90 \ -C $role -F environment=test done 但是,这似乎并不存在。 我不确定使用“shell”代理是否是最好的方法? mco shell run 'yum update -y && reboot' \ –batch 1 –batch-sleep 90 不过,我只是在看这个工作的错误工具吗? 有什么更好的办法来pipe理这种types的滚动重启,但我可以以某种方式与我的木偶指派的angular色联系起来,这样我就可以放心,我没有一次性取下任何重要的东西,但我仍然可以做一些并行更新和重新启动?

使用Puppet从PPA安装包

我正在尝试使用预装的docker自动configuration虚拟机。 我的默认init.pp如下所示: class { 'apt': always_apt_update => true, } package { [ #'build-essential', #'vim', #'curl', #'zsh', #'git-core', #'htop', #'wget', #'linux-image-generic-lts-raring', 'python-software-properties' #'lxc-docker' ]: ensure => 'installed', } apt::ppa { 'ppa:dotcloud/lxc-docker':} # refresh apt source exec { "apt-update": command => "/usr/bin/apt-get update && apt-get install lxc-docker –force-yes", returns => 100 } 最后一个exec命令返回(我认为返回100是一个成功的apt-get更新的默认值): info:/ Stage [main] // […]

如何向aptitude或apt-get提供dpkgconfiguration参数?

当安装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) […]

Docker / Ansible与AWS中的Ansible,Puppet和Foreman不可变的服务器模型?

我们正在遇到一个有趣的争论,正在陷入两个阵营。 我感兴趣的任何想法或陷阱我们可能会失踪的任何特定的问题。 真的,任何能够帮助我们做出决定的东西,或者指出我们没有考虑到的事情。 我知道这个裙带着“无意见”的规则,但我希望这仍然是一个可以接受的问题。 对不起,长度也有一些微妙的差别。 1)一方(我 – 我不是没有偏见)发现云系统非常有趣的不变的服务器模型。 为此,我们将基础架构的所有组件移植到Docker中。 我们的自定义应用程序通过Jenkins直接构build到部署到本地Docker Registry的Docker镜像中。 然后,我们创build了一大组Ansibleangular色和一个能够伸手去找空服务器的剧本,安装Docker,然后告诉Docker根据需要安装所有的容器。 几分钟后,整个应用程序及其所有的支持基础架构就被连接起来并工作 – logging,监视,数据库创build/填充等。完成的机器是一个独立的QA或开发环境,具有应用。 我们计划扩大规模的计划是制作新的手册,从基础可信AMI(可能是一张非常光滑的图像)构build新的AWS服务器,对生产应用程序进行滚动部署以处理configurationpipe理和发布,而且通常不会再次编辑服务器 – 只是让他们重新。 我并不担心在实践中得到我所描述的工作 – 只要这是一个合理的模型。 2)另一个阵营希望使用Puppet来处理configurationpipe理,Ansible部署我们的自定义应用程序,这些应用程序是我们构build过程中生成的压缩包,Foreman负责处理整个stream程的触发和pipe理,Katello做一些基础图像pipe理。 发布将涉及Puppet根据需要更改configuration和Ansible部署更新的组件与一定数量的工头协调。 如果我们需要新的服务器,那么服务器的build立就会相当快,但是不要把它们作为标准stream程的一部分来处理。 尽pipe使用寿命长,但它更接近凤凰服务器模式。 所以我的问题真的归结为这个:是不是一成不变的服务器模型,我已经用上面描述的这些工具实际上是现实的了? 我喜欢这样一个想法,即我们的暂存过程实际上可以在现场构build完整的应用程序副本,让QA锤击它,然后只是翻转数据库存储和一些DNS设置以使其生存。 还是不可变的服务器模型在实践中失败? 我们在AWS和云环境方面拥有丰富的经验,所以这不是关注的问题 – 更重要的是如何让一个相当复杂的应用程序可靠地部署到今后。 这是我们特别感兴趣的,因为我们经常发布。 我们有Ansible,除了为我们创buildEC2服务器之外,还需要做大部分工作,这并不困难。 我很难理解为什么你真的需要木偶/工头/ Katello在这个模型中。 Docker比任何自定义的部署脚本更加清洁和简单。 Ansible似乎比Puppet简单得多,当你不必担心必须现场configuration它们,而只需使用新configuration再次构build它们。 我是KISS校长的粉丝,尤其是在墨菲法则猖獗的自动化领域。 国际海事组织越好,机械越less。 任何想法/意见或build议的方法将不胜感激!

stream浪汉可以指向一个Puppet清单目录来执行吗?

我正在使用Vagrant来启动一些初始的Puppetconfiguration,并且对如何在puppet执行工作stream程中包含/运行多个清单(除了site.pp之外)感到困惑,而没有将额外的清单模块化并包含它们。 在我指向Vagrant(见下文)的puppet清单目录中,我有两个清单,我想执行:site.pp和hierasetup.pp。 config.vm.provision "puppet" do |puppet| puppet.manifests_path = "puppet_files/manifests" puppet.module_path = "puppet_files/modules" puppet.manifest_file = "site.pp" puppet.options = "–verbose –debug" end 目前我有site.pp是调用hierasetup.pp的清单。 我的网站.pp看起来像这样: File { owner => 'root', group => 'root', mode => '0644', } import "hierasetup.pp" include jboss 但是,我得到了有关“导入”的弃用错误: 警告:在/tmp/vagrant-puppet-1/manifests/site.pp:33不推荐使用'import'。 请参阅http://links.puppetlabs.com/puppet-import-deprecation (在grammar.ra:610:在_reduce_190中) 根据引用的URL下的“事情要尝试”,它说:“ 为了保持你的节点定义在单独的文件,指定一个目录作为你的主要清单 ”。 此外,这主要performance的傀儡文件说: “ build议:如果你主要使用主要的清单,而不是依赖ENC,可以考虑把清单设置改为$ confdir / manifests,这样可以将顶级代码分成多个文件,同时避免import关键字。也将符合简单环境的行为。 “ 看来,木偶可以引用一个完整的目录,而不是只是一个特定的清单文件,这样我可以期望,stream浪者会为此做出规定,并允许我删除“ puppet.manifest_file =”site.pp […]

什么目录和文件结构用于Puppet?

到目前为止,我读过的木偶教程没有提到如何构build木偶.pp 。 任何人都可以分享一些有用的工作和扩展的经验吗?

如何在puppet中为服务使用自定义状态命令?

我正在使用backports的PostgreSQL 9.1中的debian squeeze。 木偶版本2.7.14。 不幸的是init脚本返回状态的错误退出码。 所以我写了一个自定义status命令来检测postgresql是否在运行。 service { 'postgresql': ensure => running, enable => true, hasstatus => false, hasrestart => true, status => "pg_lsclusters -h | awk 'BEGIN {rc=0} {if ($4 != \"online\") rc=3} END { exit rc }'", provider => debian, } 我的命令像一个魅力,但傀儡似乎有问题。 我总是得到notice: /Stage[main]/Postgresql/Service[postgresql]/ensure: ensure changed 'stopped' to 'running'虽然它已经在notice: /Stage[main]/Postgresql/Service[postgresql]/ensure: ensure changed 'stopped' […]

在NTP中禁用修补程序panic 0的缺点是什么?

我们有时会遇到这样的问题,即新服务器在BIOS中有错误的时间,所以有时间可以closures一个月。 当你在VMware中暂停虚拟机,然后取消暂停,时间也会消失。 由于NTP在最大偏移量之后不同步,因此我正考虑在/etc/ntp.conf中使用修补程序恐慌0。 什么原因导致NTP停止同步时间的默认最大偏移量为1000秒? 我们使用Puppet来设置NTP,我正在考虑在ntp.conf中设置tinker panic 0,所以NTP会同步。 这样做的缺点是什么?

configurationpipe理过度使用3个节点群集?

我们有2-3个节点集群用于我们的负载均衡器和各种Web应用程序。 我必须首先在QA中进行更改,然后分阶段(在2-3台服务器上),然后在生产(2-3台)服务器上进行。 厨师或傀儡这样的configurationpipe理工具是否适合这里? 或者它是矫枉过正? 如果这是过度杀伤有任何提示,使这更容易。

傀儡主机名问题

我在网上search,我看到一些其他人有这个问题在其他名单/董事会。 当我运行sudo puppetd ​​–waitforcert 60 – 在主服务器上签名证书后第二次testing时, notice: Got signed certificate warning: Certificate validation failed; considering using the certname configuration option err: /File[/var/lib/puppet/lib]: Failed to generate additional resources during transaction: Certificates were not trusted: hostname was not match with the server certificate 我不知道我明白了什么问题或如何解决它。 所以这就是我问的原因。 我在局域网上的两台服务器上设置了木偶。 傀儡大师被称为“傀儡”,另一个服务器被命名为“傀儡客”。 我把木偶放到puppetclient的/ etc / hosts上。 运行主机名-f将在相应的服务器上显示木偶和pupperclient。 我不知道还有什么要尝试的。 有没有人有任何见解?