我正在用Puppet使用R10K。 Puppetfile基本上是DSL: 由于Puppetfile格式实际上是使用Ruby DSL实现的,因此可以使用任何有效的Rubyexpression式。 参考: https : //github.com/puppetlabs/r10k/blob/master/doc/puppetfile.mkd 所以基于此,我可以在Puppetfile编写一些Ruby代码。 我试过了,它确实有效。 但是我不知道和知道的是如何访问一些variables。 最终,我试图做这样的事情: mod 'app', :git => 'https://github.com/apps/app.git', :branch => ${environment} 这样检出的模块分支与检出的环境相同。 显然${environment}不是正确的语法,也不是一个真正的variables名。 所以这个问题的最佳答案是如何获得环境variables,第二个最好的答案是如何引用Puppetfile的variables(以及可用的variables)。
是否有可能从Puppet清单中访问Puppet主configurationvariables(如confdir,masterport等)?
我刚刚configuration了5台新服务器来replace现有的服务器。 目前的服务器都安装web1.domain.com等,并使用木偶来pipe理configuration。 我想设置新的服务器来replace旧的相同的主机名,但似乎傀儡有这个问题,因为私人ssl键在2“web1”服务器之间不同。 什么是升级这些主机最简单的方法? 我现在看到的唯一方法是删除服务器上的/var/lib/puppet/ssl/ca/.pem,并从新主机添加一个新的签名请求。 老主人将无法连接到我的木偶大师。
我想用puppet把/etc/default/grub的一行改为: GRUB_CMDLINE_LINUX="cgroup_enable=memory" 我试图用augeas似乎做这个魔术: exec { "update_grub": command => "update-grub", refreshonly => true, } augeas { "grub-serial": context => "/files/etc/default/grub", changes => [ "set /files/etc/default/grub/GRUB_CMDLINE_LINUX[last()] cgroup_enable=memory", ], notify => Exec['update_grub'], } 它似乎工作,但结果string不引号,也我想确保任何其他值将被空格分隔。 GRUB_CMDLINE_LINUX=cgroup_enable=memory 是否有一些机制如何附加值和逃避整个事情? GRUB_CMDLINE_LINUX="quiet splash cgroup_enable=memory"
我最近开始学习如何使用Vagrant来build立本地开发环境。 (对各种WAMP堆栈选项感到沮丧之后)stream浪者迄今为止是非常棒的…轻微的(ha)学习曲线,但长期看起来很有希望。 完成了试图让我的虚拟机看起来像我的在线服务器的乏味过程…在我看来,有一个失踪的stream浪者片。 现在的过程似乎或多或less像手动试错。 不是第一次快速build立或保持与上游服务器轻松同步的理想select。 诚然,我可能不知道我正在寻找什么…因此,这个问题。 有没有一种简化的方法来从现有的CentOS 5.10服务器导出本地Vagrantconfiguration设置? (木偶,厨师,贝壳等) 像这样的东西是我想象的… (连接到在线服务器…) 检测回购差异,并根据需要启用,禁用,添加本地。 检测软件包,并同步本地进行匹配。 (从本地安装或删除) 获取httpd.conf,调整本地(如果需要),并同步。 获取php.ini,调整本地(如果需要),并同步。 获取MySQL设置,调整本地(如果需要),并同步。 获取时区和同步。 [你的build议,应该同步更多的东西在这里欢迎…] 理想情况下,这将在configuration期间运行,基本保持本地版本与在线版本同步。 这将消除需要不断调整您的本地设置手动保持同步。 如果在线(主机或内部)发生了变化,它会自动传播。 (当然,理想情况下,您可以标记设置来调整行为以满足您的需求) 另外,我想如果我能打包在线服务器,而不打包各种用户特定的数据,那也可以。 然而,从我所能说的看来,这似乎是不可能的,而且肯定不会很有效。 警告 在我个人的情况下,我在一个CentOS 5.10服务器与cPanel。 cPanel似乎做了很多东西,服务器端并不一定立即显而易见。 一个例子是许多包名称以cPanel开头,似乎是专有的,但同时与我可能想要同步的东西有关。 (如cPanel-php53)据我所知,这些不能轻易同步…因此,需要将变通方法置于适当的位置。 另一个例子可能是不同于预期的path,但我不太清楚,因为我对CentOS和cPanel默认安装不够熟悉,以确定任何特质。 我到目前为止所做的… 在做决定之前,我做了一些事情,是否有更好的方法与Vagrant更加配合。 这不是可怕的,但不是真正的“简化”或全面。 这里是细节… 我学会了如何在两台机器上运行yum repolist all ,以及如何使用cd /etc/yum.repos.d; ll;在文件系统中查看repos cd /etc/yum.repos.d; ll; cd /etc/yum.repos.d; ll; ,而不是如何使用这个信息自动同步回购。 我写了一个shell脚本来让本地的包非常接近远程的包。 然而,虽然它做得很公平,但并不完美,我想知道有没有更好的办法。 问题… 我不确定是否允许删除本地特有的软件包。 (也会抛出一些错误) 我还没有整理如何弥补包装“cPanel”似乎是我真正想要(PHP,MySQL等)的替代品,而不是完全从安装列表中删除每个包。 […]
我使用Puppet来生成/etc/exim4.conf并且在生产系统上安装文件之前,我想确保configuration是有效的。 我考虑过 – 使用git钩子来调用exim4 -bV -C filename …但是这不起作用,因为我使用ERB模板来生成文件,所以最终的结果直到Puppet代理运行才会生成。 我已经有一个git挂钩来testingERB语法。 让init脚本检查configuration文件 …但这不够好,因为如果configuration无效,脚本将拒绝重新加载Exim,那么文件已经被安装并直接调用Exim(发送邮件从应用程序,例如)将失败。 理想情况是我想要的是某种Puppet指令,看起来像 file { '/etc/exim4/exim4.conf': content => template("exim/etc/exim4/exim4.conf.erb"), notify => Service[exim4], but_before_we_install_check_syntax_with => '/usr/bin/exim4 -bV -C', } 如何在 Puppet生成之后但在安装之前检查configuration文件的语法? 我在Debian Wheezy系统上使用Exim 4.80和Puppet 2.7.26。
我已经从Puppet Forge安装了camptocamp / nagios ,但似乎它依赖于在GitHub上发布的puppet-apache_c2c 。 我已经按照build议安装了nagios模块: puppet module install camptocamp-nagios 但是,我如何安装缺less的依赖关系? 我已经看到了一些JIRA门票可以提供这个function,但是看起来它还没有实现(状态:准备工程)。 所以现在有什么解决方法吗? 安装非傀儡锻造模块的正确方法是什么?
我已经在CentOS 7上安装了Puppet Enterprise。我可以看到,有几个Puppet服务无法启动延期。 这是什么意思? Sep 03 20:50:16 l-pm1 systemd[1]: pe-puppetdb.service holdoff time over, scheduling restart. Sep 03 20:50:16 l-pm1 systemd[1]: Starting pe-puppetdb Service…
我开始使用木偶来pipe理几台服务器,我不知道如何实现以下function。 我有一个users模块,用于在所有服务器上创build普通用户。 我有一个git模块,用于安装git并在/etc/gitconfig设置系统范围的configuration。 我想要做的是: 在configuration为安装git(不是全部)的服务器上,将(模板化的) .gitconfig放到所有现有用户的主目录中。 显然,pipe理这个模板的变化。 为所有未来的用户添加.gitconfig 。 但我不觉得这属于users模块 – 我认为它属于git模块。 感觉就像我想知道什么时候添加了任何用户(不仅仅是给定的用户实例),然后能够访问该用户创build的参数(例如主目录,真实姓名和用户名)。 从本质上讲,如果我只是为由users模块创build的所有用户部署了一个模板化的.gitconfig ,那么第2部分将很容易。 但是,如果git没有安装在系统上,我并不想让用户拥有.gitconfig文件。 所以我真正想说的是“对于这个系统上的所有托pipe用户,如果安装了git,请pipe理一个.gitconfig文件”。 谢谢!
假设我有一个对每个Debian版本都有不同行为的清单 case $lsbdistcodename{ 'squeeze':{//stuff} 'lenny' : {//stuff} default : die 我想清单抛出一个致命的错误。 我想问题是,我怎么死(如果你会的话)? 傀儡代理/主版本0.24.6。