質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Ansible

Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。

Ansible Tutorial

Ansible Tutorialは、Pythonで記述されたサーバの設定・管理を自動化させるためのツールです。サーバからクライアントへ直接命令し結果を取得するため、各クライアントでAnsible Tutorialをインストールが不要になります。

Q&A

2回答

10261閲覧

ansibleでキーボードで応答が必要なパッケージのインストール方法

sakamo2

総合スコア37

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Ansible

Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。

Ansible Tutorial

Ansible Tutorialは、Pythonで記述されたサーバの設定・管理を自動化させるためのツールです。サーバからクライアントへ直接命令し結果を取得するため、各クライアントでAnsible Tutorialをインストールが不要になります。

0グッド

1クリップ

投稿2016/08/23 05:28

編集2016/08/27 06:43

ansible初心者です。
ansible playbookの書き方について質問させてください。

ansibleを使ってLinux用商用パッケージソフトを自動インストールするplaybook作成しようとしています。
パッケージソフトインストール時に「使用許諾契約書」メッセージなど
キーボードで応答が必要です。
このキーボートでの応答を自動化する書き方をアドバイスいただけませんでしょうか。

具体的には以下の通りです。
1 パッケージファイルのアップロード
rpm -ivh esets-4.0.8.x86_64.rpm
2 インストール実行
sh /tmp/esets-4.0.8.x84_64.rpm.bin
ここで、インストールしたいLinux用商用パッケージソフトは、使用許諾契約書」が画面メッセージが表示されます。
[Enter]キーを押す。
Do you accept this Agreement? (y/n) [y]キーを押す
のちインストール完了

この手動で応答する必要のある画面操作部分も自動化するための ansible playbook の
書き方を教えていただけませんでしょうか。


(2016/08/27追記)
コメントありがとうございました。
expectの使い方を理解しきてなくて、現在の詰まっている状況を追加で質問させてもらいました。。
アドバイス、ヒントなどいただけるとありがたいです!

ansible-playbook実行時のエラーメッセージです。


fatal: [192.168.33.27]: FAILED! => {"changed": true, "cmd": ["sh", "/tmp/esets.x86_64.rpm.bin"], "delta": "0:00:00.009306", "end": "2016-08-27 10:56:13.881411", "failed": true, "rc": 1, "start": "2016-08-27 10:56:13.872105", "stderr": "", "stdout": "This is ESET Security distribution script. Press Enter to show the Licence...\n(press q after you have read the License to continue extraction)", "stdout_lines": ["This is ESET Security distribution script. Press Enter to show the Licence...", "(press q after you have read the License to continue extraction)"], "warnings": []}

コマンド実行時の状況 $ ansible-playbook -i hosts eset_install.yml [DEPRECATION WARNING]: Instead of sudo/sudo_user, use become/become_user and make sure become_method is 'sudo' (default). This feature will be removed in a future release. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg. PLAY [test-svr] **************************************************************** TASK [setup] ******************************************************************* ok: [192.168.33.27] TASK [glibc.i686 install] ****************************************************** ok: [192.168.33.27] TASK [Install libselinux-python] *********************************************** ok: [192.168.33.27] TASK [Check status of selinux] ************************************************* changed: [192.168.33.27] TASK [ESET installser upload to server] **************************************** ok: [192.168.33.27] TASK [ESET nod32.inc LisenceFile upload to server] ***************************** ok: [192.168.33.27] TASK [Run ESET install shell] ************************************************** fatal: [192.168.33.27]: FAILED! => {"changed": true, "cmd": ["sh", "/tmp/esets.x86_64.rpm.bin"], "delta": "0:00:00.009306", "end": "2016-08-27 10:56:13.881411", "failed": true, "rc": 1, "start": "2016-08-27 10:56:13.872105", "stderr": "", "stdout": "This is ESET Security distribution script. Press Enter to show the Licence...\n(press q after you have read the License to continue extraction)", "stdout_lines": ["This is ESET Security distribution script. Press Enter to show the Licence...", "(press q after you have read the License to continue extraction)"], "warnings": []} NO MORE HOSTS LEFT ************************************************************* [WARNING]: Could not create retry file 'eset_install.retry'. [Errno 2] No such file or directory: '' PLAY RECAP ********************************************************************* 192.168.33.27 : ok=6 changed=1 unreachable=0 failed=1 $

ansible-playbookの内容


--- - hosts: test-svr sudo: yes tasks: - name: glibc.i686 install yum: name=glibc.i686 state=latest - name: Install libselinux-python yum: name=libselinux-python state=present - name: Check status of selinux shell: getenforce - name: ESET installser upload to server copy: src=/home/ansible/files/installer/esets.x86_64.rpm.bin dest=/tmp/esets.x86_64.rpm.bin mode=755 - name: ESET nod32.inc LisenceFile upload to server copy: src=/home/ansible/files/installer/nod32.lic dest=/tmp/nod32.lic - name: Run ESET install shell command: sh /tmp/esets.x86_64.rpm.bin

何卒宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

他の方が回答している通り、どうしても対話型になる場合はexpectモジュールを使います。

質問とは異なりますが、インストーラーのオプションでサイレントインストールすることが出来るものもありますので、
製品提供元に問い合わせてみると良いかもしれません。

以下のコマンド等でUsageが表示される場合もあります。

sh /tmp/esets-4.0.8.x84_64.rpm.bin --help

投稿2016/08/23 05:41

moonphase

総合スコア6621

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sakamo2

2016/08/23 05:48

ありがとうございます!! サイレントインストールすることができるものもあるのですね。問い合わせしてみます。
sakamo2

2016/08/27 06:45

コメントありがとうございました。製品提供元へ聞きました。サイレントインストールできないことが分かりました。 サイレントインストールという方法の存在を知らなかったので、コメント助かりました。ありがとうございました!
guest

0

以下、参考になりませんか?
https://thinkit.co.jp/article/9990

投稿2016/08/23 05:30

over

総合スコア4309

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sakamo2

2016/08/23 05:36

ありがとうございます!まさか質問2分後に回答いただけるとは、速さに感動です! ご案内いただきました、URLの「対話処理を自動化する」を参考にしてみます。 Google検索して思ったページにたどり着けなくてこちらに質問させてもらいましたが、 対話処理というキーワードでGoogle検索すればよかったのですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問