我已经开始傀儡在centos和困惑了一些事情。 首先为puppet-master存在一个手册页,但是对puppetmaster不存在,尽pipe/etc/init.d中的守护进程是puppetmaster 运行命令$ puppet-master –version返回bash:puppet-master:命令未find。 如何知道我为主服务器和客户端运行的版本?
我是Puppet的新手,虽然我一直使用* nix系统多年,但我从来没有像系统pipe理员或操作系统那样工作过。 我目前正在编写Puppet清单来托pipe一组(PHP / MySQL / MongoDB,git中的代码)Web应用程序。 很明显,Puppet需要对实际应用有一定的了解,因为我将为每个应用设置一个虚拟主机,但是我不确定Puppet是否应该pipe理代码部署和数据库创build等事情。 Puppet是应用程序部署的合适工具吗? 如果没有,你能推荐一个更合适的工具吗?
上周我花了所有的精力去学习木偶。 现在我受到精神缓冲的困扰,对这只野兽驯服了一点信心。 我遇到了许多注释的例子,但由于其无数的变化,我无法辨别推荐的(最近的)木偶风格和惯例,以及临时“为我工作”的方法。 我无法忍受,因为它似乎是基本的东西。 所以。 使用Puppet来pipe理组和用户,用户的主组等同于他们自己的用户名,其他组可以是LANlogin,轮询pipe理员,在任意节点上有shell的用户的shell ,用户的mail ,各种守护进程的守护进程。 pipe理员login将在所有节点上,并且使情况变得更糟,一个局域网login也可能是一个shelllogin。 从我所了解的情况来看,如果您使用虚拟定义,可以多次定义一个用户。 听起来很棒,那么对于一个用户来说,这是怎么工作的呢? 说Bob可以同时使用LAN节点和节点beastie.wan; 是他的loginthebob然后定义两次,在lanusers.pp与groups => ["lan"]和shellusers.pp与groups => ["shell"] ? 如果鲍勃希望他的lan密码与他的shell密码分开怎么办? 我目前使用的代码没有虚拟的定义,用户只是硬编码的单一包含。 有一次,我遇到了一个使用虚拟的例子 ,这是我卡住的地方,因为我不明白如何扩展代码,以便Puppet创build一个主要组,并首先定义所需的组,然后在这些组中join用户。 对。 请正确地提醒我。
我使用木偶来分发SSH密钥,如下所示: ssh_authorized_key { "[email protected]": ensure => present, key => 'xxxx', type => 'ssh-rsa', user => 'deploy', } 〜/ .ssh / authorized_keys文件最终包含多个类的键的混合,这是所期望的结果。 但是,如果一个密钥被手动添加到$ HOME / .ssh / authorized_keys中,Puppet会将其保留在原位。 有没有办法总是删除清单中没有明确定义的任何键? 我有木偶版本2.7.1。
我维护两个数据中心,而且随着更多的重要基础设施开始通过傀儡控制,如果我们的主站点发生故障,那么在第二站点的木偶大师工作就显得非常重要。 更好的办法是进行一种主动/主动设置,以便第二个站点上的服务器不在WAN上进行轮询。 有没有任何标准的多站点木偶高可用性方法?
当包含由puppet控制的文件的包将要更改该文件时,是否可以在控制台上收到通知? 意思是,在百胜做百胜更新时,是否可以注入一个自定义警告?
我们有一个使用Puppetconfiguration的生产环境,并且希望能够在我们的开发机器上build立一个类似的环境:Red Hats,Ubuntus和OSX。 正如所料,OSX在这里是个奇怪的人,可惜的是,我在这个工作上遇到很多麻烦。 我第一次尝试使用macports ,使用以下声明: package { 'rabbitmq-server': ensure => installed, provider => macports, } 但是,可悲的是,这产生了以下错误: 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 . […]
我正在寻找CFEngine , Puppet , Chef , bcfg2 , AutomateIt和其他任何configurationpipe理系统可能在那里的一些比较,而且在服务器故障(Server Fault)的服务器故障(Server Fault)上我可以find很less的东西感到非常惊讶。 例如,我只知道上面的三个链接 – 其他两个我在相关的谷歌searchfind。 所以,我对人们认为最好的或者他们喜欢的东西不感兴趣。 我想知道以下几点: configurationpipe理系统的名称。 为什么创build它(而不是使用现有的解决scheme)。 相对优势。 相对弱点。 执照。 链接到项目和例子。
在我目前的工作场所,我照顾两台VMware主机,一台OpenBSD物理机,三台Debian VM和六台Windows Server VM(2008/2012)。 我正在考虑实施一个像Puppet或Chef这样的configurationpipe理工具。 这是合理的,还是将学习工具的开销超过了好处? 可pipe理性和实施成本之间的转折点在哪里?
像Puppet和Chef这样的更为成熟的configurationpipe理(CM)系统使用基于拉式的方法:客户端定期轮询中央主站以获取更新。 他们中的一些人也提供了一种无主的方法(所以基于推送),但是声明它不是“生产”(Saltstack)或“不可扩展”(Puppet)。 我知道的唯一一个系统就是从一开始就是基于推动力的是Ansible。 拉式系统的具体可扩展性优势是什么? 为什么添加更多的推拉大师比push-agent更容易? 例如, agiletesting.blogspot.nl写道: 在“拉”系统中,客户彼此独立地联系服务器,所以整个系统比“推”系统更具可扩展性 另一方面,Rackspace展示了他们可以使用基于推送的模型处理15K系统 。 infastructures.org写道: 我们发誓维护基础设施,使用像SUP,CVSup,rsync服务器,或cfengine的工具拉方法。 每台客户端机器不需要将更改推送给客户端,而是需要负责在启动时对黄金服务器进行轮询,然后定期维护自己的rev级别。 在采用这个观点之前,我们开发了基于ssh,rsh,rcp和rdist的广泛的基于推送的脚本。 我们在r命令(或者ssh)中发现的问题是:当你运行一个基于r命令的脚本把一个变化推送到你的目标机器上时,可能性是,如果你有超过30个目标主机,在任何时候都会下降。 维护委托机器的列表成为一场噩梦。 在编写代码来纠正这个问题的过程中,你将最终得到精心devise的包装代码来处理:来自死亡主机的超时; logging和重试死的主机; 分叉并行,尝试在合理的时间内击中多个主机; 最后检测并阻止源机器上所有可用的TCP套接字与所有出站rsh会话的使用情况。 然后,你仍然有问题,就是为将来要安装的所有新主机安装映像,以及为明天将要重build的任何主机重复安装映像。 在经历了基于r-command复制的麻烦之后,我们发现它不值得。 我们不打算再次使用r-命令来pipe理基础架构,或者使用任何其他推送机制来pipe理基础架构。 它们不像基于拉的方法那样成比例。 这不是一个实现问题,而不是一个build筑问题? 为什么编写一个线程化的推式客户端比一个线程化的拉式服务器更难呢?