Articles of 木偶

傀儡模块pipe理与软件开发生命周期方法的最佳实践?

人们如何在您的源代码库中组织他们的Puppet清单和模块? 我没有看到任何明显的方式在一个木偶大师阶段分阶段实施木偶变化。 其他人如何pipe理? 每个服务器组/ SDLC阶段一个主服务器实例? 我非常希望在每个阶段使用相同的Puppet模块,只是使用Subversion来更改应用于每个服务器组/ SDLC阶段的Puppet模块的版本,因此我可以分阶段实施更改。 我正在寻找一种方法来利用相同的模块,避免重复模块造成的事故和变化。 我有一堆服务器正在使用puppet进行pipe理,有几个SDLC(软件开发生命周期)阶段。 灾难恢复,生产,分期,用户验收testing,testing,开发,培训 编辑澄清第二部分: 你如何维护你的分支在你的源回购? 例如,使用开发和testing分支,以及定义从哪里获取补丁的文件。 你编辑: repo:/dev/patchessource.txt包含“patchserver / dev” repo:/test/patchessource.txt包含“patchserver / test” 并有不同的文件,并且必须保持这种差异,合并,从开发到testing的一切,或者人们有不同的文件为每个环境,并作为一个整体迁移: repo:/dev/devpatchsource.txt包含“patchserver / dev” repo:/dev/testpatchsource.txt包含“patchserver / test” 这样,当你把你的开发商回购合并到你的testing回购,你不必担心改写特定的设置覆盖你的testing的具体设置? 我没有看到一个明显的解决scheme,使后续的pipe理员可能不熟悉源代码pipe理工具。 任何提示将非常感谢。

为什么Puppet代理不能识别环境?

我在puppet.confconfiguration了dynamic环境,例如: modulepath = $confdir/environments/$environment/modules manifest = $confdir/environments/$environment/site/manifests/site.pp environmentpath = /etc/puppetlabs/puppet/environments 我的environments目录具有manifest/site.pp文件和modules目录的环境。 然而,当我运行代理sudo puppet agent –test –environment=test我得到以下错误(我没有在代理的puppet.conf文件中设置production环境): Warning: Local environment: "test" doesn't match server specified node environment "production", switching agent to "production". 它只适用于生产环境的模块。 我正在使用木偶企业3.7.3。

木偶:如何写出适当的“条件和条件”声明?

我写了一个“今日消息”Puppet模块,影响我公司所有的代理服务器。 在模板文件中,我有以下“if语句”: <% if @hostname !~ /^haproxy\d+/ and @hostname =~ /proxy\d+/ -%> if [ "$(cat $LBMEMFILE)" = "0" ]; then echo -e "\e[35m Membeship in LB: Yes" elif [ "$(cat $LBMEMFILE)" = "2" ]; then echo -e "\e[35m Membeship in LB: No $LISTMEMFILE" fi <% end -%> 它的意义: 如果主机名为proxy0-100而不是^ haproxy0-100,则向motd脚本添加一行。 但由于某种原因,这种说法不起作用。 我也尝试使用“除非”,但无济于事。 如果我删除第一行中的“和”之后的语句,它就像一个魅力。 这是我得到的错误: Error: […]

如何在hiera_hash()调用中返回默认的哈希键?

为了清理我的客户端的木偶Hiera数据,大幅减lessPuppet清单中Hiera调用的数量,我正在改变构造 some_name::key1: a_value_1 some_name::key2: a_value_2 […] some_name::keyX: a_value_X 成 some_name: key1: a_value_1 key2: a_value_2 […] keyX: a_value_X 所以,而不是有X hiera()调用,我只有一个hiera_hash()调用。 这完美的工作,直到遇到这样的情况: # some_manifest.pp hiera(some_name::key1, default_value_1) hiera(some_name::key2, default_value_2) […] hiera(some_name::keyX, default_value_X) 这里的问题是,我无法find一种方式来提供所有键的默认值以一个干净简洁的方式。 如果在层次结构中找不到hiera_hash(key_to_be_searched, default_hash)将返回hiera_hash(key_to_be_searched, default_hash)的值。 但是你不能检查散列(在层次结构中find)是否包含(至less) default_hash定义的所有键。 例如,如果我有这样的hiera数据: test: foo: bar bar: baz 加上这一点的DSL: $test_default = { foo => '1', bar => '2', baz => 'foo', } […]

使用puppet-apache模块安装apache时出错

我使用puppet实验室的apache模块来安装和configurationapache。 我使用的是Debian 7(wheezy),下面是我在puppet-master中用作site.pp的清单文件。 从puppet客户端执行puppet apply –test安装apache。 但是我得到错误。 node 'debian.yaalie.com' { class {'apache': } apache::vhost { 'debian.yaalie.com': port => '80', docroot => '/var/www/' } } 错误: Error: Execution of '/usr/bin/apt-get -q -y -o DPkg::Options::=–force-confold install apache2' returned 100: Reading package lists… Building dependency tree… Reading state information… The following extra packages will be installed: apache2-mpm-worker apache2-utils […]

木偶定义types并从1 .erb文件创build多个模板

我需要find解决我遇到的这个问题。 我有一个散列(它应该被重写为稍后的智能类参数),我在我的template.erb中迭代来生成多个文件资源,我已经定义了一个数组。 我想迭代在通过第一组键值对后停止,然后开始写入下一个文件。 我会举一个例子来说明一下。 #### init.pp #### class testing ( $nameid = ['alex','ben'], $game_code = { alex_super_mario => { "type" => "1", "characters" => { "bowser" => "123", "luigi" => "456", "princess" => "789" } }, ben_mega_man => { "type" => "2", "characters" => { "something" => "111213", "else" => "131415", "lastone" => "161718" } […]

在傀儡中,你能禁止一个特定的通知日志条目吗? LVM伪造模块

使用Forge中的LVM模块,“size”属性设置逻辑卷的所需大小。 “size_is_minsize”参数表示“大小”只是最小的期望大小(如果逻辑卷大于“大小”,则可以)。 但是,在这种情况下,每一个木偶运行都会生成一个通知。 例如: Notice: /Stage[main]/Filesystems/Logical_volume[tmp]/size: size changed '106G' to '100G'有什么办法可以避免这个提示? 例如,我们可以将提供者或清单中的“size”参数更改为106G吗?

木偶代理 – 启动为sudo

我有问题让我的Puppet代理启动。 我将使用带有–onetime参数的代理程序,因为我希望代理程序可以取消其configuration,而不是Puppet主推送。 我在Debian主机上为master和agent使用Puppet 2.73版本。 我所处的环境中,每个用户对于木偶代理执行的行为都必须logging下来,所以sudo似乎是启动木偶代理的明显select。 但是,启动Puppet代理作为sudo,我收到一些错误: user@puppetagent$ sudo puppet agent –onetime /usr/lib/ruby/vendor_ruby/facter/kernel.rb:14: command not found: /bin/uname -s /usr/lib/ruby/vendor_ruby/facter/kernel.rb:14: command not found: /bin/hostname /usr/lib/ruby/vendor_ruby/facter/kernel.rb:14: command not found: /bin/uname -s /usr/lib/ruby/vendor_ruby/facter/kernel.rb:14: command not found: /bin/hostname /usr/lib/ruby/vendor_ruby/facter/kernel.rb:14: command not found: /bin/dnsdomainname /usr/lib/ruby/vendor_ruby/puppet/util.rb:215: command not found: /bin/hostname /usr/lib/ruby/vendor_ruby/facter/kernel.rb:14: command not found: /bin/uname -s /usr/lib/ruby/vendor_ruby/facter/kernel.rb:14: command not found: /bin/uname -s […]

Facter不显示自定义的Puppet事实

因为Puppetboard没有显示自定义的事实。 根据这个来源 ,参数-p需要显示所有事实,包括习惯一次。 我已经尝试过了,但结果似乎与facter的结果相同。 我尝试了facter –custom-dir=/var/lib/puppet/lib/facter invalid option: –custom-dir=/var/lib/puppet/lib/facter ,结果是: invalid option: –custom-dir=/var/lib/puppet/lib/facter 问题是为什么不显示习惯傀儡的事实和如何解决这个问题?

在工头中禁用Puppet ENC部分

我看了好几天了,我很郁闷。 我们希望使用福尔曼作为一个监测和provisionnig工具。 我们想停用Foreman的ENC,只使用Hiera。 我怎么能pipe理呢? 至于为什么: 我的老板就是这样想的 工头无法parsing来自Hiera的参数 例: 定义repo_file_manager( $ repository_url =“http:// $ {yum_client :: lib :: repository_server} / repos / $ {name} /”, $ ensure ='present', $ gpgcheck ='0', $ enable ='1'){ $ repoconfdir ='/etc/yum.repos.d' file {“$ {repoconfdir} / $ {name} .repo”: 确保=> $确保, group =>'root', mode =>'0644', owner =>'root', require => File ['/ […]