chefで対話形式のスクリプトに対する応答を自動化する

chefで対話形式のインストーラなどに対する応答を自動化するには、expectコマンドを用います。
まずexpectコマンドをインストールします。

yum install expect

expectコマンドによる自動応答スクリプトを作成します。以下はその一例です。

#!/bin/bash

expect -c '

spawn /path/to/script
set timeout 1800
expect {
  -regexp "Which is your operating system.*" {
    exp_send "1\r" 
  exp_continue
  }
}
'

spawnで実行したい対話形式のスクリプトのパスを指定します。
set timeoutはexpectの実行を許す時間の設定です。
-regexpで指定した正規表現にマッチする文字列が出力された時、
exp_sendで指定した文字列を応答として入力します。文末に\rをつけるようにします。
exp_continueで自動応答を終了します。複数回の応答を自動化したい場合はexpectを複数個記述し最後のみexp_continueを記述してください。

作成したスクリプトをchefから実行することで、対話形式のスクリプトへの応答を自動化することができます。