是否可以仅在另一个exec资源出现故障时执行资源。
exec {'register_host':
unless => '/etc/is_host_exist.sh',
command => '/etc/script/register_host.sh -h hostname',
path => '/usr/bin:/usr/sbin/',
provider => 'shell',
notify => 'register_service',
}
exec {'register_service':
command => '/etc/script/register_service.sh -s svcname',
path => '/usr/bin:/usr/sbin/',
provider => 'shell',
}所以,这里我想在register_host失败时执行register_service。有些是我的依赖逻辑不起作用。
谢谢詹姆斯
发布于 2020-07-21 10:10:35
Exec资源不是幂等的,应该尽可能避免。
话虽如此,让我们看看您希望在伪代码中发生什么:
register_host_success = register_host()
if (!register_host_success) {
register_service()
}使用notify
因此,考虑到is_host_exist.sh可以检查register_host是否失败,那么:
subscribe => Exec['register_host'],因此您需要确保每当触发Exec['register_host']时也会触发Exec['register_service'],Exec['register_service']仅在Exec['register_host']失败时才运行Exec['register_service']。exec {'register_host':
unless => '/etc/is_host_exist.sh',
command => '/etc/script/register_host.sh -h hostname',
path => '/usr/bin:/usr/sbin/',
provider => 'shell',
}
exec {'register_service':
command => '/etc/script/register_service.sh -s svcname',
path => '/usr/bin:/usr/sbin/',
provider => 'shell',
unless => '/etc/is_host_exist.sh',
refresh => true,
subscribe => Exec['register_host']
}假设您的脚本(*.sh)在成功时将使用exit 0,在失败时将使用exit和non 0。notify/subscribe可以互换使用,使用任何您认为最好的( more docs )
https://stackoverflow.com/questions/63004621
复制相似问题