概要
Ansibleのexpectを利用して対話型のスクリプトを実行してみようと思います。
準備
Ansibleでexpect
モジュールを利用するためにはpexpect
のインストールが必要です。
以下のコマンドでインストールしておきます。
$ sudo pip install pexpect
playbook例
以下のようなかんじでexpect
の下に実行したいコマンドを記載します。
また、responses
で対話型の待受メッセージとそれに対する答えを入力します。
待受メッセージの箇所には正規表現が利用できます。
対話型スクリプト例
こんなかんじのスクリプトをplaybookの中から実行してみます。
実行してみる
実行するとこんな感じです。
wawawaを実行しました と出力されていることがわかります。
$ ansible-playbook expect.yml -v PLAY [localhost] ********************************************************************************************************************************************* TASK [wget] ************************************************************************************************************************************************** changed: [localhost] => {"changed": true, "cmd": "/home/ec2-user/taiwa.sh", "delta": "0:00:00.155081", "end": "2018-04-29 12:50:29.027492", "rc": 0, "start": "2018-04-29 12:50:28.872411", "stdout": "実行するコマンドを入力してください\r\nwawawa を実行しました", "stdout_lines": ["実行するコマンドを入力してください", "wawawa を実行しました"]} PLAY RECAP *************************************************************************************************************************************************** localhost : ok=1 changed=1 unreachable=0 failed=0
おわりに
対話型のスクリプトをAnsibleで実行することができました。
結構かっちりresponses
でやりとりを記載してあげなければいけないので面倒ではありますが、こういったものもAnsibleをつかって自動化することができそうです!!!
Ansible実践ガイド 第2版 (impress top gear)
- 作者: 北山晋吾,塚本正隆,畠中幸司
- 出版社/メーカー: インプレス
- 発売日: 2018/03/01
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る