收到通知且参数设置为 true 时人偶重启
Puppet reboot when notifed AND parameter set to true
我在 init.pp 中有一个共享的 puppet 重启块,并且还希望有一个默认为 false 的 $autorestart 全局参数,以便全局选择加入重启。在一个子类中,我有一些资源,例如 file_line 更改设置,这些设置通常在重新启动之前不会生效,但这些不会设置需要重新启动的 OS 标志(例如写入 audit.rules 或 sysctl.conf), 所以设置这些通知 => Reboot[after_run].
我知道一些子类函数可以在服务重启时生效,但这不是我在这里尝试做的,例如 auditd 是一个受保护的服务。
我尝试将全局重启资源放在 'if $autorestart' 块中,但是如果全局 $autorestart 设置为 false,子类资源上的通知将无法编译。我尽量保持它的灵活性和简单性。
init.pp:
Boolean $autorestart = false,
…
if $autorestart {
reboot { 'after_run':
apply => 'finished',
timeout => 60,
}
}
subclass.pp:
file_line { 'net.ipv6.conf.all.disable_ipv6':
path => '/etc/sysctl.conf',
line => 'net.ipv6.conf.all.disable_ipv6 = 1',
match => '^net.ipv6.conf.all.disable_ipv6.*',
notify => Reboot['after_run'],
}
错误
Could not find resource 'Reboot[after_run]' in parameter 'notify'
我也试过 puppet-reboot 'onlyif' 参数,但这只接受特定条件,不测试参数值。 https://forge.puppet.com/puppetlabs/reboot#reboot-when-certain-conditions-are-met
感谢任何帮助。
... but then the notify on the subclass resource fails to compile if the global $autorestart is set to false
这个问题可以通过在条件中移动关系元参数来解决,即
if $autorestart {
reboot { 'after_run':
apply => 'finished',
timeout => 60,
subscribe => File_line['net.ipv6.conf.all.disable_ipv6'], ## ADD THIS
}
}
(当然还要从您的 file_line 资源中删除通知。)
我在 init.pp 中有一个共享的 puppet 重启块,并且还希望有一个默认为 false 的 $autorestart 全局参数,以便全局选择加入重启。在一个子类中,我有一些资源,例如 file_line 更改设置,这些设置通常在重新启动之前不会生效,但这些不会设置需要重新启动的 OS 标志(例如写入 audit.rules 或 sysctl.conf), 所以设置这些通知 => Reboot[after_run].
我知道一些子类函数可以在服务重启时生效,但这不是我在这里尝试做的,例如 auditd 是一个受保护的服务。
我尝试将全局重启资源放在 'if $autorestart' 块中,但是如果全局 $autorestart 设置为 false,子类资源上的通知将无法编译。我尽量保持它的灵活性和简单性。
init.pp:
Boolean $autorestart = false,
…
if $autorestart {
reboot { 'after_run':
apply => 'finished',
timeout => 60,
}
}
subclass.pp:
file_line { 'net.ipv6.conf.all.disable_ipv6':
path => '/etc/sysctl.conf',
line => 'net.ipv6.conf.all.disable_ipv6 = 1',
match => '^net.ipv6.conf.all.disable_ipv6.*',
notify => Reboot['after_run'],
}
错误
Could not find resource 'Reboot[after_run]' in parameter 'notify'
我也试过 puppet-reboot 'onlyif' 参数,但这只接受特定条件,不测试参数值。 https://forge.puppet.com/puppetlabs/reboot#reboot-when-certain-conditions-are-met
感谢任何帮助。
... but then the notify on the subclass resource fails to compile if the global $autorestart is set to false
这个问题可以通过在条件中移动关系元参数来解决,即
if $autorestart {
reboot { 'after_run':
apply => 'finished',
timeout => 60,
subscribe => File_line['net.ipv6.conf.all.disable_ipv6'], ## ADD THIS
}
}
(当然还要从您的 file_line 资源中删除通知。)