Articles of 木偶

木偶依赖sorting,确保不存在

Puppet支持资源依赖关系的概念,其中一个资源不会被同步,直到另一个资源首先同步。 例如,以下Puppet片段将创build用户user1和组group1但它将首先创build组: group { 'group1': ensure => present } user { 'user1': ensure => present, gid => 'group1', require => Group['group1'] } 我的问题是:当ensure参数从“present”变为“absent”时,依赖关系如何工作: group { 'group1': ensure => absent } user { 'user1': ensure => absent, gid => 'group1', require => Group['group1'] } 木偶在这样的情况下做什么? 它是首先删除组还是首先删除用户? 或者也许订单没有定义? 一般来说,如果一个资源不存在,那么如何确保一个资源不存在。

运行master / agent时没有findpuppet模块,但使用puppet工作

我已经从Ubuntu 12.04上的Puppet Labs APT存储库安装了puppet 3.1.1。 我从Puppet Forge安装了Ploperations-puppet模块来pipe理我的客户端系统上的puppet代理configuration和软件包安装。 我有一些问题,所以我缩小了写我自己的,但仍然使用ploperations-puppetlabs_apt和stahnma-puppetlabs_yum模块来pipe理存储库。 对于以下testing,代理位于主服务器上。 现在用下面的site.pp node default { class { "puppetlabs_apt": } } 我得到以下错误: # puppet agent –test Info: Retrieving plugin Notice: /File[/var/lib/puppet/lib/puppet]/ensure: removed Notice: /File[/var/lib/puppet/lib/facter/puppet_path.rb]/ensure: removed Notice: /File[/var/lib/puppet/lib/facter/util]/ensure: removed Notice: /File[/var/lib/puppet/lib/facter/certname.rb]/ensure: removed Notice: /File[/var/lib/puppet/lib/facter/root_home.rb]/ensure: removed Notice: /File[/var/lib/puppet/lib/facter/puppet_vardir.rb]/ensure: removed Notice: /File[/var/lib/puppet/lib/facter/pe_version.rb]/ensure: removed Notice: /File[/var/lib/puppet/lib/facter/concat_basedir.rb]/ensure: removed Notice: /File[/var/lib/puppet/lib/facter/confenv.rb]/ensure: removed Notice: /File[/var/lib/puppet/lib/facter/puppet_semantic_version.rb]/ensure: […]

为什么官方的木偶风格指南坚持alignment的箭头?

从http://docs.puppetlabs.com/guides/style_guide.html : 资源属性/值列表中的所有胖逗号箭头( => )应该alignment。 箭头应放置在最长的属性名称之前一个空格。 这似乎适得其反。 以他们的“坏”为例: exec { 'test': subscribe => File['/etc/test'], refreshonly => true, } 如果添加了名称比“refreshonly”更长的属性,则必须重新alignment所有这些箭头,如下所示: exec { 'test': subscribe => File['/etc/test'], refreshonly => true, somenewproperty => whatever, } 每一个属性在该资源将需要改变,为了一个单一的行被改变。 这混淆了修订历史,并且打破了在属性/值声明末尾添加尾随逗号的目的(否则,追加新的attr / val将需要逗号被附加到前面的最后一行,导致两行被改变而不是一个)。 为什么官方的木偶风格指南推荐这个约定?

Facter – 自定义事实,由Puppet代理调用时返回空数据集

根据这个木偶实验室的文章,我可以从shell脚本创build自定义事实。 我创build了一个返回一个事实的bash脚本,它被打包在一个模块facts.d目录中。 该模块通过ENC级别包含在目标系统中。 当被目标上的puppet代理调用时,它返回一个空集合,当在代理上手动运行时,它正确地返回事实。 该脚本具有对主服务器的执行权限,但不具有代理服务器上的权限。 我看到一个与权限和文件types有关的bug报告,但那是windows,应该在puppet版本3中修复。 我究竟做错了什么? ENC定义: — classes: facttest: Shell脚本: #!/bin/bash echo "test_fact1=$(hostname)" 权限: master: -rwxr-xr-x 1 root root … modules/facttest/facts.d/testfact.sh agent: -rw-r–r– 1 root root … /var/lib/puppet/facts.d/testfact.sh 代理消息: Fact file /var/lib/puppet/facts.d/testfact.sh was parsed but returned an empty data set 版本信息: Puppet master: 3.5.1 (Debian) Facter master: 2.0.1 Puppet agent: 3.6.1 (OpenSUSE) Facter […]

木偶:err:/执行/返回:从notrun更改为0失败:命令超时超时

我正在尝试在我的服务器上使用puppet和我的自定义shell脚本来安装Nagios。所有的东西都能正常工作,但是我在puppet脚本执行结束时看到一个错误,如下所示: [root@localhost tmp]# /usr/local/bin/puppet –verbose nagiosscript.pp …. …. Lines of verbose output …. info: Scope(Class[main]): installing Nagios agent in /usr/local/nagios info: Applying configuration version '1016779459' notice: /Stage[main]//Exec[/tmp/check_server.sh]/returns: executed successfully notice: /Stage[main]//File[/tmp/temporary_mount]/ensure: created notice: /Stage[main]//Exec[mount]/returns: executed successfully notice: /Stage[main]//Exec[retrieve_nagios_install_script]/returns: executed successfully notice: /Stage[main]//File[/var/tmp/nagios_install.sh]/mode: mode changed '644' to '700' err: /Stage[main]//Exec[/var/tmp/nagios_install.sh]/returns: change from notrun to 0 failed: […]

为什么Puppet需要两次运行来更新bash?

林学习木偶,我试图更新bash(没有猜测为什么奖品)。 这是在我的site.pp file { "/etc/apt/sources.list.d/shellshock.list": source => "puppet:///files/shellshock.list", owner => "root", group => "root", mode => "0644", ensure => present, } -> exec { "instantRepoUpdate": command => "/usr/bin/aptitude update", refreshonly => true, } -> package {"bash": ensure => latest, } 从什么我在这里读取https://docs.puppetlabs.com/puppet/latest/reference/lang_relationships.html这应该转化为: 安装/etc/apt/sources.list.d/shellshock.list ,然后运行aptitude update,然后确保bash是最新版本 它确实,但只有两个代理运行。 我希望它在一次运行中按顺序执行所有三个操作。 更新:我已经尝试添加“要求=”Exec [..,要求=>文件[…]的EXEC和包资源,我得到了相同的结果。

如何订阅来自Hiera数组的包?

我在我的hiera定义中有以下内容: # common.json { "classes": [ "sysbase", ], "sysbase::packages": [ "less", "build-essential", "bash" ] } # dev.local.json { "sysbase::packages": [ "xmltv" ] } 和以下class级: # modules/sysbase/manifests/init.pp class sysbase($packages){ package{ $packages : ensure => latest, } exec{'select-pager': command => '/usr/sbin/update-alternatives –set pager /bin/less', user => 'root', refreshonly => true, subscribe => Package['less'], } } 当我在这个节点上运行代理时: $ […]

如何禁用不被puppetpipe理的yum版本库

试图将一个非常特殊的环境带入一个更加标准化和pipe理的状态。 在我的用例中,我想禁用所有非Red Hat存储库(由subscription-manager插件提供)。 不过,如果有一个灵活的解决scheme,禁用不是由Puppetpipe理的所有存储库,那将是件好事。 有什么build议么?

木偶店configuration混乱

我和许多小时的木偶店配合,最后我发现了一件令我困惑的事情。 我想设置storeconfigs,但是当我在/etc/puppet/puppet.conf文件[master]节中设置storeconfigs和storeconfigs_backend值时,它不起作用。 但是,当我testing把这些值在[主]部分它如何工作。 为什么Puppet忽略[master]部分configuration,而他们的文档说storeconfigs属于[master]部分? 我使用Puppet 3.8.2和Ubuntu 14.04。 https://docs.puppetlabs.com/puppetdb/latest/connect_puppet_master.html 要在PuppetDB中保存事实和目录,请将以下设置添加到puppet.conf的[master]块(如果已经存在,请编辑它们): [master] storeconfigs = true storeconfigs_backend = puppetdb 有我的puppet.conf文件在开始。 $ cat /etc/puppet/puppet.conf [main] logdir=/var/log/puppet vardir=/var/lib/puppet ssldir=/var/lib/puppet/ssl rundir=/var/run/puppet factpath=$vardir/lib/facter [master] # These are needed when the puppetmaster is run by passenger # and can safely be removed if webrick is used. ssl_client_header = SSL_CLIENT_S_DN ssl_client_verify_header = SSL_CLIENT_VERIFY 我从Puppet得到了同样的答案 […]

使用工头时,我必须重新启动哪些服务才能在puppet.conf中更改configuration更改?

我已经通过最新的工头安装程序安装木偶3.8.4。 我通过把这些行放在我的puppet.conf中启用了$ facts ['fact_name'] hash: trusted_node_data = true trusted_server_facts = true 我重新启动了一些服务来尝试影响configuration更改: sudo systemctl restart foreman-proxy sudo systemctl restart puppet 但$ facts ['fact_name']声明仍然失败。 我完全重新启动服务器,并开始工作。 所以我的问题是什么服务,我必须重新启动,以实现configuration更改? 我看到,通过安装工头(通过工头安装程序)puppetmaster服务被禁用(这就是为什么我没有碰它): ● puppetmaster.service – Puppet master Loaded: loaded (/usr/lib/systemd/system/puppetmaster.service; disabled; vendor preset: disabled) Active: inactive (dead) 当我使用直木偶时,我已经启用了这个服务并且正在运行,但工头并没有启用它(工头工作正常,所以我猜它应该是这样的)。 启动和停止此服务是否会影响configuration更改? 领class如何与这样的服务工作?