我可能误解了" puppet agent --noop
"工作原理:
在课程的定义中,我设置了文件的存在,并设置了用户和组的所有权,这就是我取消" puppet agent --noop
< /强>&#34; :
puppet agent --noop
&#34;工作正常puppet agent --noop
&#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
非常感谢!!
/天使
答案 0 :(得分:1)
不幸的是,目前无法克服这一限制。
由于缺少所有者,ensure
属性不会失败 - 我相信该文件最终将由root拥有。这就是当文件不存在时输出更令人愉快的原因。
对于现有文件的行为:每个资源都是单独考虑的,如果在评估文件时该组不存在,则文件资源必须允许失败。 <(1}}创建该组(可能)的事实不容易被解释。
至于你是否想要在没有用户资源的情况下忽略noop条件下的问题 - 我相信。你会在Puppet的Jira上提出这个功能请求吗?
从Puppet noop
开始,您可以依赖代理提供的3.3
值以及Facter事实。请注意,定制清单以避免$clientnoop
模式失败会产生两种后果。
noop
次运行的报告变得不准确,因为“不安全”属性值不属于noop
目录您可以像这样构建清单:
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
模式下被忽略,其优缺点如上所述。
考虑到所有事情,我觉得这根本不值得麻烦。