Chefでのexpectコマンドを利用したprovisioning
vagrant+Chef soloで仮想マシンをたてる時に詰まったのでメモ
詰まったパターン
expectに関する記事を探すと
#!/bin/sh expect -c " spawn (コマンド) expect \"(待機する文字列)\" send \"(入力する文字列)\n\" interact "
という感じで、expectでの最終行が“interact”になっているのが多い。 しかし、Chefでこのスクリプトを呼び出すとうまくいかなかった。
うまくいったパターン
expectの最終行を“expect eof”としたら、うまくいった。
- expect_test.sh
#!/bin/sh expect -c " spawn (コマンド) expect \"(待機する文字列)\" send \"(入力する文字列)\n\" expect eof exit "
ちなみに、“exit”はあってもなくても大丈夫そう。