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

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

ただいまの
回答率

90.45%

  • Linux

    4535questions

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

  • Ansible

    179questions

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

  • Ansible Tutorial

    6questions

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

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

受付中

回答 2

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 3,942

sakamo2

score 29

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

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

0

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/08/23 14:36

    ありがとうございます!まさか質問2分後に回答いただけるとは、速さに感動です!
    ご案内いただきました、URLの「対話処理を自動化する」を参考にしてみます。

    Google検索して思ったページにたどり着けなくてこちらに質問させてもらいましたが、
    対話処理というキーワードでGoogle検索すればよかったのですね。

    キャンセル

0

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

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

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/08/23 14:48

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

    キャンセル

  • 2016/08/27 15:45

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

    キャンセル

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

  • ただいまの回答率 90.45%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • Linux

    4535questions

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

  • Ansible

    179questions

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

  • Ansible Tutorial

    6questions

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