簡體   English   中英

Puppet:如果另一個 Exec 資源失敗,如何執行 Exec 資源

[英]Puppet: How to execute a Exec resource if another Exec resource failed

只有在另一個 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 。 有些我的依賴邏輯不起作用。

謝謝詹姆斯

Exec資源不是冪等的,應盡可能避免使用。

話雖如此,讓我們看看你想要發生什么,用偽代碼:

register_host_success = register_host()
if (!register_host_success) {
  register_service()
}

使用notify

所以,考慮到is_host_exist.sh可以檢查register_host是否失敗,那么:

  1. 你需要subscribe => Exec['register_host'] ,所以你要確保每當Exec['register_host']被觸發時,你的Exec['register_service']也會被觸發,
  2. 您需要確保您的Exec['register_service']僅作為Exec['register_host']的結果被調用
  3. 僅當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 exit 0並在失敗時以non 0退出。 notify / subscribe可以互換使用,使用你認為最好的任何東西(更多文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM