Articles of 木偶

在模板中引用一个variables,从Puppet Ruby DSL的每个循环加载

hostclass :class do items = scope.lookupvar('items_list') items.each do |item| file("/etc/init.d/#{item}", :content => template(['class/item_init.erb'])) end end 有了用Ruby DSL编写的这个类,我该如何正确引用模板中的variables? 我尝试了<%= item %> , <%= @item %> , <%= scope.lookupvar('item')%>但它们都不起作用 – 它们都返回nil。 UPD 我发现它的工作原理如果在循环中定义$item_name = item ,然后在模板中将其引用为$item_name 。

如何引用当前迭代的木偶哈希循环

我有这样的哈希 net:ip { '': ip => { ip1 => { addr => '192.168.10.1', device => 'eth0', }, ip2 => { addr => '192.168.50.10', device => 'eth10', }, } } 在我的清单中,我这样称呼 define net::ip ( $ip={}, ) { … } 我的问题是我如何引用哈希迭代的当前循环。 我希望能够使用这个清单中的“开发”字段,但由于散列有IP1,IP2我不知道它的数字? 谢谢丹

木偶挂在100%的CPU使用率

我们正在运行puppet来pipe理我们的AWS实例,并正在从一个自定义的apt模块迁移到puppetlabs托pipe的apt模块。 一切似乎都很好,直到在puppet apply会议期间,傀儡进程只要我们愿意,就会在%100上。 我相信我已经把范围缩小到傀儡悬挂,而在apt模块中等待一些“响应”,但是我不能进一步弄明白。 我看到一些相关的错误和问题(如http://projects.puppetlabs.com/issues/12185#note-27 ),但我找不到一个好的答案。 任何帮助,将不胜感激。 我们在Ubuntu 10.10上运行puppet 2.7.20。 木偶apt模块版本是1.1.0。 根据要求,这是挂起之前的最后几行debugging代码: debug: /Stage[main]/Kpython/Kpython::Pip_install[simplejson]/Exec[kpython_pip_install simplejson]: Autorequiring File[/mnt/tmp] debug: /Stage[puppet1]/Kbase::Users/Kbase::Users::Account[tfall]/File[/home/tfall/.ssh]: Autorequiring Group[users] debug: /Stage[puppet1]/Kbase::Users/Kbase::Users::Account[tfall]/File[/home/tfall/.ssh]: Autorequiring User[tfall] debug: /Stage[puppet1]/Kbase::Filesystem/File[/usr/local/krux/kbase]: Autorequiring File[/usr/local/krux] debug: /Stage[main]/Kvagrant/Kruby::Setup_gemset[kvagrant]/Kruby::Wrapper[kvagrant-irb]/Kutil::Symlink_bin[kvagrant-irb]/File[/usr/local/bin/kvagrant-irb]: Autorequiring File[/usr/local/bin] debug: /Stage[main]/Kvagrant/Kruby::Setup_gemset[kvagrant]/Kruby::Wrapper[kvagrant-irb]/Kutil::Symlink_bin[kvagrant-irb]/File[/usr/local/bin/kvagrant-irb]: Autorequiring File[/usr/local/krux/components/kruby/bin/kvagrant-irb] debug: /Stage[main]/Kpython/Kpython::Pip_install[boto]/Exec[kpython_pip_install boto]: Autorequiring File[/mnt/tmp] debug: /Stage[script1]/Kbase::Users::Finalize/Kbase::Users::Init_user[dbrans]/File[/home/dbrans/.ssh/known_hosts]: Autorequiring User[dbrans] debug: /Stage[puppet1]/Kbase::Users/Kbase::Users::Account[vsvaidya]/File[/home/vsvaidya]: Autorequiring Group[users] debug: /Stage[main]/Kvagrant/File[/usr/local/krux/components/kvagrant]: Autorequiring File[/usr/local/krux/components] debug: […]

傀儡variables的最佳实践,推广或专门化?

我试图找出哪些东西应该在puppet清单中的git中,哪些应该在FACTER_my_var类的FACTER_my_varvariables中,并在清单中使用。 场景:您正在部署3个php应用程序,并且已经在其他清单(基本系统,php扩展,用户等)中构build了应用程序的所有层,剩下的就是安装正确的应用程序(从apt回购)并创build一个虚拟主机。 我很想尝试一下: apache::vhost { $::project_hostname: priority => '10', port => '80', docroot => $::project_document_root, logroot => "/var/log/apache2/${$::project_name}", serveradmin => '[email protected]', require => Package[httpd], ssl => false, override => 'all', setenv => ["APP_KERNEL dev"] } 这将在每台服务器上运行, FACTER_project_* vars将在每个服务器的基础上进行设置。 一个明显的限制就是你不能在这个特定的例子中运行多个应用程序。 或者,您是否愿意使用硬编码path和名称的project_x.pp , project_y.pp ?

傀儡节点不断增加自己的主人

我在学习木偶的开始。 到目前为止,我成功地使用仪表板和一些代理来设置我的主人。 但在我的一个testing节点上,我添加节点时犯了一个错误。 我用两个不同的证书添加了两次。 第一个证书只是主机名,另一个是FQDN。 我似乎无法正确删除其中的任何一个。 我使用puppet语法来撤消证书。 但是当下一次傀儡跑来的时候,它再次把自己添加到了仪表板上,给了我所有的错误,因为它不允许做任何事情。 我不知道这是否是由于主设备上的延迟configuration或代理上的configuration。 我怎么能得到一个代理节点干净的石板?

木偶分割function失败

问题 木偶分裂function失败,因为木偶已经升级木偶版本3.5.1 ,而这一直工作,直到3.4.3 码 1 $ports_regex = "80\\|443" 2 3 $ports_string = regsubst($ports_regex, '\\\|', ',', 'G') 4 5 notify{"CP1 ${ports_string}":} 6 7 $ports_array = split($ports_string, ',') 8 9 notify{"CP2 ${ports_array}":} 10 11 each($ports_array) |$port| { 12 notify{"CP3 ${port}":} 13 14 file {"${port}": 15 path => "c:/temp/puppettest/${port}", 16 ensure => present; 17 } 18 } 结果 […]

如果木偶项目中存在单独的文件资源,则文件资源不应跳过文件

似乎傀儡不复制作为recursion资源一部分的文件,如果该文件在其他地方有单独的定义。 有没有办法避免这种情况? 例如,这不起作用: file { '/tmp/foo': ensure => 'directory', source => 'puppet:///modules/foo/foo', recurse => true, } file { '/tmp/foo/installer/requirements.txt': ensure => present, replace => false, require => File['/tmp/foo'], } 输出: $ ls modules/foo/files/foo/installer/ README.rst requirements.txt $ rm -r /tmp/foo ; puppet apply –modulepath modules manifests/site.pp notice: /Stage[main]//File[/tmp/foo]/ensure: created notice: /File[/tmp/foo/installer]/ensure: created notice: /File[/tmp/foo/installer/README.rst]/ensure: defined content […]

Puppet读取命令的输出并将其存储在一个variables中

我对傀儡很陌生,试图执行我的傀儡剧本,但一直没有成功。 我想存储下面的bash命令的输出,并想存储在一个我可以稍后使用的variables中: /usr/bin/head -1 /tmp/testfile.out | cut -d',' -f2'3 我通过我的木偶脚本从另一个位置读取文件 variable => generate('/usr/bin/head -1 /tmp/testfile.out | cut -d',' -f2'), command => "/bin/cp /${variable}/application/myscript.sh /var/tmp/myscript.sh", creates => "/var/tmp/myscript.sh", 但是当我执行这个傀儡脚本它失败。 我也不确定即使上面的一个也是正确的。 任何帮助,将不胜感激。 谢谢 EDITED testfile.out包含一个cron数据,它是使用我的自定义php脚本生成的,在该文件的第一行有应用程序名称。 该文件的示例条目: cat testfile.out server.amazon.com,zimbra,1080,3000 我有一个脚本,坐在一个nfs共享,从应用程序名称$variables开始,我需要复制该服务器上将运行检查所有与zimbra相关的文件和文件夹。 即使我不确定这个脚本是什么,它完全是一个二进制文件..

由于未满足的依赖关系,无法安装puppet

我试图在新鲜的Ubuntu 14.04机器上安装木偶,但我得到以下错误 有些软件包无法安装。 这可能意味着您已经请求了一个不可能的情况,或者如果您使用的是不稳定的分发版本,那么一些所需的软件包尚未创build或已从Incoming中移出。 以下信息可能有助于解决这种情况: The following packages have unmet dependencies: puppet : Depends: puppet-common (= 3.7.0-1puppetlabs1) but it is not going to be installed E: Unable to correct problems, you have held broken packages. 我按照这里的说明做了以下 $ wget https://apt.puppetlabs.com/puppetlabs-release-trusty.deb $ sudo dpkg -i puppetlabs-release-trusty.deb $ sudo apt-get update 我也试过了 apt-get install ruby apt-get -f install […]

在定义yumrepo的types时,获取错误“SERVER上的错误400:无效的参数”

我正在尝试定义一个types来创buildyum回购。 我希望能够从common.yaml中获取数据,并且定义这些数据并对其执行操作。 我没有得到这么远,我得到一个错误的一个无效的参数。 我的代码是这个.. define xh_yumrepo::create_xh_yumrepo ( $descr = '', $baseurl = $baseurl, $enabled = $enabled, $gpgcheck = $gpgcheck, ){ $ensure = 'present' notify{"title is $title":} yumrepo { $title: baseurl => $baseurl, ensure => present, descr => $descr, enabled => $enabled, gpgcheck => $gpgcheck, } } class xh_system::xh_yumrepo ( $yumrepo=hiera_hash('xh_yumrepo', undef), ){ $os=$yumrepo[$operatingsystem] $rel=$os[$operatingsystemmajrelease] notify […]