Articles of puppet

使用Puppetdb ENCvariables?

我正在阅读关于添加自定义事实的木偶文档 。 大部分信息似乎与在代理上运行的模块相关。 在我的情况下,我只是想要一个简单的环境variables,我可以从主节点为每个节点设置。 然后我的ENC会做一个PuppetDb查询来查看它应该服务的环境。 我可以这样做,还是所有的事实都来自代理?

木偶使用主人的SSH密钥git克隆?

我正在使用vcsrepo puppet模块来同步git存储库。 # install git repo vcsrepo { "/home/repo": ensure => present, provider => git, source => "[email protected]:pk2klic/test.git", } 它正在主服务器上,我已经做了一个RSA密钥,并上传公钥到bitbucket。 我有许多代理节点,因此手动上传每个节点的密钥是不切实际的。 有没有解决方法,我可以使用主人的ssh密钥克隆应用我的木偶文件? 还是我最好尝试创build一个在每个节点上创build新密钥的自动化过程?

在分布式服务器上部署Java Web应用程序

我不得不将这个应用程序部署到三台服务器上,而且很快就要四台。 这是一个痛苦,我正在寻求自动化。 我要编写这个脚本,但这是一个很普遍的问题,那里有太多的工具(木偶,厨师,托盘,MCollective),我认为有人可能有一个现成的战略,他们愿意分享。 我们有3个networking服务器(不久将有4个)。 以下是我目前用来部署的步骤: login到生产Web服务器1 > service httpd stop > service tomcat5 stop login到QA服务器 > scp ROOT.war [email protected]:/usr/share/tomcat5/webapps/ 但是,有时候它会更复杂,我可能需要复制以下任一项:/etc/httpd/conf.d/mod_jk.conf /etc/tomcat5/context.xml 但是我不能仅仅从QA复制context.xml,因为连接string在QA和生产中是不同的。 重新启动所有内容(在ROOT.war传输完毕后) > service tomcat5 start > service httpd start 通常,我部署到server1,testing,然后部署到server2和server3。 我喜欢等到服务器2完成准备就绪之前,我开始部署到服务器3 – 可以木偶这样做(检查HTTP的HTTP状态)? 那么,我可以让Puppet部署server1,然后让它进行部署,并等待server2,server3,并很快成为server4? 分阶段推出,也许容易回滚将是我正在寻找的function。

任意软件configurationpipe理与Puppet?

我正在评估Puppet作为内部软件configuration和分配系统的潜在替代品。 我正在寻找关于Puppet是否可以满足执行特定于节点的任意软件configuration更改的某些要求的build议。 我们目前的系统提供了一个跟踪单个服务器的CMDB,它们的基本信息(操作系统,IP地址,硬件平台等)以及所有安装的软件组件。 这包括从内部开发的软件应用到操作系统补丁,实用程序等。当前系统还提供基于sftp / ssh的软件分发/安装function,并在端点上运行脚本来执行安装程序。 一个关键的要求(我们目前的系统提供)是为任何给定的组件定义任意软件configuration值的能力。 每个跟踪组件都有一些预定义的configuration参数,其中一些对所有服务器都是通用的,其中一些可能会被特定服务器覆盖,而其中一些服务器必须被覆盖。 在我们当前的系统中,我们在将软件分发包推送到端点之前configuration这些参数。 这些分发程序包中有脚本,它们使用configuration参数来生成作为分发和安装的一部分而推出的configuration文件。 在过去的几天里,我已经阅读了很多关于Puppet的文档,但是Puppet能否提供这个关键function对我来说还是不是很明显。 我可以确定的最好的是,它肯定会要求编写自定义事实作为configuration参数,但除此之外,我还没有能够确定是否可以configuration这些事实的具体值,并导致这些值configuration在端点。 只要查看PE控制台中节点的“Inventory”部分,这与我正在查找的节点类似,但是我需要能够按层次组织它(相关configuration参数或“事实”按类别/组件/等等分组)。 ,以及为这些自定义事实指定默认值和/或重写值的能力。 在这一点上,我不确定Puppet是否可以提供这种function,或者如果可以的话,我会去设置它。 我已经看到Hiera的参考资料,但关于它的详细信息或示例用例,所以我不知道这是否对我的情况有任何用处。 FWIW,这种解决scheme最初只能用于pipe理Windows服务器,但最终还会扩展到Linux机箱。 感谢您提供的任何build议。

木偶提供程序不安装先决条件

我已经为虚拟机克隆了一个模块 ,但是当我尝试将虚拟机应用到节点时,出现Error: Could not find a suitable provider for virt ,这是可以理解的,因为init.pp的内容指定了虚拟化内核应该已经在运行了(Xen或OpenVZ内核)。 然而,随着包括init.pp,我期望一个失败的消息运行puppet agent –test –debug节点上的debug: class virt { fail "testfail" case $::virtual { /^xen/: { include virt::xen } #/^kvm/: { include virt::kvm } /^openvzhn/: { include virt::openvz } } } 但是,它与上面的错误失败, Error: Could not find a suitable provider for virt 。 我的节点定义: node 'hostname' { […]

木偶重复声明:类

我对傀儡有一点新意,但是我不确定这会怎样成为一个重复的声明,请问有人可以给我一些方向,这是否是正确的使用类传递参数? Error: Duplicate declaration: Class[Jenkins_dotfiles] is already declared in file /tmp/puppet-manifests-test/manifests/site.pp:193; cannot redeclare at /tmp/puppet-manifests-test/manifests/site.pp:193 有了这个代码: $user = 'jenkins' $group = 'staff' $home = "/Users/${user}" … if ($is_jenkins) { class { 'jenkins_dotfiles': home => '/var/root', user => 'root'; 'jenkins_dotfiles': home => $home, user => $user; jenkins_dotfiles /舱单/ init.pp class jenkins_dotfiles($home, $user) { … }

使用Puppet来pipe理shell命令

例如,让我们试着让Puppet 安装opengeo套件 。 做类似的事情 wget -qO- http://apt.opengeo.org/gpg.key | apt-key add – echo "deb http://apt.opengeo.org/suite/v3/ubuntu lucid main" >> /etc/apt/sources.list 我们可以用 exec {'getKey': command => "wget -qO- http://apt.opengeo.org/gpg.key | apt-key add -", } exec {'addRepo': command => "echo "deb http://apt.opengeo.org/suite/v3/ubuntu lucid main" >> /etc/apt/sources.list", } 问题1:如果我们再次运行木偶脚本,wget和echo是否会运行两次? 我们将在/etc/apt/sources.d结尾重复回购。 运行package { "opengeo-suite": }两次不会试图安装这个包两次,它只是确保它的安装。 问题2:做apt-get install opengeo-suite有几个用户input的promopts。 木偶会不知何故知道使用的默认input,还是会崩溃?

我怎样才能解决木偶拒绝开始,并要求“master.pp”?

我正在使用最新版本的puppet ,一直在逐步跟随Apress“Pro Puppet”指南。 我已经安装了puppet sudo aptitude install ruby libshadow-ruby1.8 sudo aptitude install puppet puppetmaster facter 我编辑了/etc/puppet/puppet.conf来包含certname [master] certname=puppet.mydomain.com 我编辑了/ etc / hosts并添加了以下行 127.0.0.1 puppet.mydomain.com puppet 我已经设置了服务器的主机名 echo "puppet.mydomain.com" > /etc/hostname hostname -F /etc/hostname 然后我尝试从命令行运行puppet 。 puppet master –verbose –no-daemonize puppet给我这个错误: Could not parse for environment production: Could not find file /master.pp 我正在用sudo运行所有的命令,错误信息的最后一行总是说找不到master.pp以及它到达我当前工作目录前的path。 我究竟做错了什么? 我还应该提到,我没有为puppet.mydomain.com设置DNSlogging – […]

命令文件'nagios.cmd#015'不存在问题如果passivecheck被发送到NSCA守护进程

介绍 由于/usr/local/nagios/etc/nsca.cfg被replace为默认configuration,如果opsview已经重新启动,驻留在/etc/init.d/opsview的这个文件的引用被改为/ usr / local / nagios / etc / nsca_puppet.cfg,后者使用Puppet ERB模板进行部署。 目标 目的是发送使用nsca的被动检查到Opsview。 假设是执行: echo -e "HOST\tService\t0\tRemote File does not exist" | \ sudo /usr/local/nagios/bin/send_nsca -H host -c \ /usr/local/nagios/etc/send_nsca.cfg 将更新驻留在Opsview中的(被动)检查。 结果 尾随/ var / log / messages指示以下内容: Jan 24 14:27:37 host nsca[X]: Handling the connection for <ip>… Jan 24 14:27:37 host nsca[X]: Command […]

在Ubuntu 10.04上使用Puppet安装PHP 5.2

我正在使用Puppet(使用Puppet和Drush安装Drupal的目标)在Ubuntu上安装PHP 5.2,但是它安装的软件包都是PHP 5.3。 我find了手动安装PHP 5.2的说明: http://2bits.com/drupal-planet/various-ways-running-php-52-ubuntu-1004-lucid-lynx.html (方法3) 但是这不符合Puppet的模型。 有没有人find一个更好的方法来安装PHP 5.2(用于Drupal 6)与Puppet?