1. ホーム
  2. logging

[解決済み] ansible-playbookモジュール実行のログ/詳細を取得するにはどうすればよいですか?

2022-12-23 20:27:31

質問

次のように実行するとします。

$ cat test.sh
#!/bin/bash
echo Hello World
exit 0

$ cat Hello.yml
---

- hosts: MyTestHost
  tasks:
  - name: Hello yourself
    script: test.sh


$ ansible-playbook  Hello.yml

PLAY [MyTestHost] ****************************************************************

GATHERING FACTS ***************************************************************
ok: [MyTestHost]

TASK: [Hello yourself] ********************************************************
ok: [MyTestHost]

PLAY RECAP ********************************************************************
MyTestHost                    : ok=2    changed=0    unreachable=0    failed=0

$

成功したことは確かです。

リモートホスト(MyTestHost)上の私のスクリプトによってecho'ed/printedされた "Hello World" をどこで/どのように見るのですか?またはスクリプトの戻り/終了コード?

私の研究は、モジュール実行コールバックまたはそのライン上の何かをインターセプトし、ログ ファイルを書き込むプラグインを書くことが可能であることを示しています。私はそれで私の時間を無駄にしないことを望みます。

例えば、以下のstdoutのようなものです(私はansibleを実行しており、ansible-playbookを実行していないことに注意してください)。

$ ansible plabb54 -i /project/plab/svn/plab-maintenance/ansible/plab_hosts.txt -m script -a ./test.sh
plabb54 | success >> {
    "rc": 0,
    "stderr": "",
    "stdout": "Hello World\n"
}

$

どのように解決するのですか?

を渡すと -v フラグをコマンドラインで ansible-playbook に渡すと、実行された各タスクの stdout と stderr が表示されます。

$ ansible-playbook -v playbook.yaml

Ansibleにはロギングをサポートする機能も組み込まれています。次の行をあなたの ansible 設定ファイル :

[defaults] 
log_path=/path/to/logfile

Ansibleは設定ファイルのためにいくつかの場所を探します。

  • ansible.cfg を実行したカレントディレクトリで ansible-playbook
  • ~/.ansible.cfg
  • /etc/ansible/ansible.cfg