运行“puppet agent --noop”时缺少资源

时间:2014-06-19 17:48:13

标签: puppet

我可能误解了" puppet agent --noop "工作原理:

在课程的定义中,我设置了文件的存在,并设置了用户和组的所有权,这就是我取消&#34; puppet agent --noop < /强>&#34; :

  • 如果文件不存在,&#34; puppet agent --noop &#34;工作正常
  • 如果文件存在但用户或群组不存在,那么&#34; puppet agent --noop &#34;失败 抱怨失踪的用户或团体。
  • 如果我只是运行&#34; puppet agent &#34; (没有&#34; --noop &#34;)它运作良好:没有 如果用户,组或文件先前存在或不存在,则无关紧要:它 创建组,用户和/或文件。

第一个问题:我认为&#34; --noop &#34;运行并不验证目录是否要求创建缺少的资源。 不是吗?

第二个问题:有没有办法做任何类型的模拟,以避免在启动时出现资源缺失的问题&#34; {{1} } &#34;

让我们粘贴一些代码来展示它:

--noop

输出:

   # yes, it should better be virtual resources
   group { $at_group:
     ensure => "present"
   } 
   user { $at_user:
     ensure     => present,
     gid        => "$at_group",
     require    => Group[$at_group],
   } 

  file { '/etc/afile':
    owner   => $at_user,
    group   => $at_group,
    mode    => '0440',
    content => template('......erb')
    require => User[$at_user]
  } 

如果文件不存在,让我们展示它是如何工作的:
然后&#34; # puppet agent --test --noop Info: Retrieving plugin Info: Loading facts in /var/lib/puppet/lib/facter/puppet_vardir.rb Info: Loading facts in /var/lib/puppet/lib/facter/facter_dot_d.rb Info: Loading facts in /var/lib/puppet/lib/facter/pe_version.rb Info: Loading facts in /var/lib/puppet/lib/facter/root_home.rb Info: Caching catalog for pagent02 Info: Applying configuration version '1403055383' Notice: /Stage[main]/Agalindotest::Install/Group[my_group]/ensure: current_value absent, should be present (noop) Notice: /Stage[main]/Agalindotest::Install/User[my_user]/ensure: current_value absent, should be present (noop) Error: Could not find user my_user Error: /Stage[main]/Agalindotest::Install/File[/etc/afile]/owner: change from 1001 to my_user failed: Could not find user my_user Error: Could not find group my_group Error: /Stage[main]/Agalindotest::Install/File[/etc/afiles]/group: change from 1001 to my_group failed: Could not find group my_group &#34;像魅力一样:

puppet agent --test  --noop

非常感谢!!
/天使

1 个答案:

答案 0 :(得分:1)

不幸的是,目前无法克服这一限制。

由于缺少所有者,ensure属性不会失败 - 我相信该文件最终将由root拥有。这就是当文件不存在时输出更令人愉快的原因。

对于现有文件的行为:每个资源都是单独考虑的,如果在评估文件时该组不存在,则文件资源必须允许失败。 <(1}}创建该组(可能)的事实不容易被解释。

至于你是否想要在没有用户资源的情况下忽略noop条件下的问题 - 我相信。你会在Puppet的Jira上提出这个功能请求吗?

更新

从Puppet noop开始,您可以依赖代理提供的3.3值以及Facter事实。请注意,定制清单以避免$clientnoop模式失败会产生两种后果。

  1. 清单本身变得难以维护和理解。
  2. 来自noop次运行的报告变得不准确,因为“不安全”属性值不属于noop目录
  3. 您可以像这样构建清单:

    noop

    # this scenario does not actually call for virtual resources at all :-) group { $at_group: ensure => "present" } user { $at_user: ensure => present, gid => "$at_group", require => Group[$at_group], } file { '/etc/afile': mode => '0440', content => template('......erb') # require => User[$at_user] # <- not needed at all, Puppet autorequires the user and group } if ! $::clientnoop { File['/etc/afile'] { owner => $at_user, group => $at_group, } } owner属性在group模式下被忽略,其优缺点如上所述。

    考虑到所有事情,我觉得这根本不值得麻烦。