puppetの--testオプション
puppetのバージョンアップでハマったので、メモ代わりにblogにします。
今更な感じではありますが、puppet-0.25とpuppet-2.6の--test(-t)オプションは若干内容が変更されてます。
- puppet-0.25
puppet/application/puppetd.rb 119 # Enable all of the most common test options. 120 def setup_test 121 Puppet.settings.handlearg("--ignorecache") 122 Puppet.settings.handlearg("--no-usecacheonfailure") 123 Puppet.settings.handlearg("--no-splay") 124 Puppet.settings.handlearg("--show_diff") 125 Puppet.settings.handlearg("--no-daemonize") 126 options[:verbose] = true 127 options[:onetime] = true 128 options[:waitforcert] = 0 unless @explicit_waitforcert 129 end
- puppet-2.6のテストオプション
puppet/application/agent.rb 135 # Enable all of the most common test options. 136 def setup_test 137 Puppet.settings.handlearg("--ignorecache") 138 Puppet.settings.handlearg("--no-usecacheonfailure") 139 Puppet.settings.handlearg("--no-splay") 140 Puppet.settings.handlearg("--show_diff") 141 Puppet.settings.handlearg("--no-daemonize") 142 options[:verbose] = true 143 Puppet[:onetime] = true 144 options[:detailed_exitcodes] = true 145 end
2.6からdetailed_exitcodesが有効になってる事によってexit_statusが変わります。
- 0: 正常終了
- 2: 変更あり
- 4: 失敗
- 6: 変更と失敗あり
capistranoから実行するときは--testオプションつけたままだと、処理が中断されるので要注意です。
解決方法としては、--testオプションを使わずに個々にオプションを書きましょうってことでした。
sudo /usr/sbin/puppetd --ignorecache --no-usecacheonfailure --no-splay --show_diff --no-daemonize --verbose --onetime
puppet-server-0.25で、puppet-2.6の環境で特に問題なさそうに動いてました。
やってる事がシンプルだってのもあるとは思うんですが。