Gosuke Miyashita archive about feed

puppetrun を試すならやっぱ trunk 版の方がよさげ

24 March 2007

puppet 今試すなら バージョン 0.22.1 を使え、そして gem で入れるな というエントリを書いたわけですが、puppetrun で特に exec を使って puppet クライアントで何かコマンドを実行させたい、ということであれば、今は trunk 版を使ったほうがいいかも。

理由。まず以下の様な単純なコマンドを実行させる site.pp をつくる。

exec { 'touch':
  path    => '/bin',
  command => 'touch /tmp/puppet',
}

で、puppetmasterd を puppet サーバで起動。

$ sudo puppetmasterd

次に puppet クライアント側で puppetd を起動。

$ sudo puppetd --listen --no-client --server kenny.southpark -v 

そして、puppet サーバ側で puppetrun を起動して、設定した exec をクライアントで実行させる。

$ sudo puppetrun --host cartman.southpark

すると、0.22.1 では、クライアント側の puppetd がハングした状態になります。strace で見ると、以下の記述が延々と表示されるという状態に。

rt_sigprocmask(SIG_SETMASK, [], ULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, [], ULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, [], ULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, [], ULL, 8) = 0
... (以下繰り返し)

0.22.1 と 0.22.2 の間で、lib/puppet/type/exec.rb にかなり修正が入ってるので、おそらく 0.22.2 では大丈夫だろうけど、 前エントリ で書いたように、0.22.2 ではそもそも puppetd がエラーで起動できない、という問題がある。なので、trunk 版を使うのがいい、という結論になりました。trunk 版だと問題なく実行できることを確認済み。

ただ、これも 前エントリ で書いたように、puppetrun に以下の一行を追加しないと動かないので注意。 fix された 。自分の修正内容と違うけど。

require 'puppet/network/client/runner'

まだ実戦投入はやめておいた方がよさそうかな…。まだ検証段階なのでいいのですが。