Ansible提示:显示shell模块的中间过程日志与ansible-playbook的日志实时合并的例子
https://qiita.com/hiroyuki_onodera/items/2fa11aeb3598284dbe54的后续内容
虽然不是太美好的做法,但仍然能行,为了备忘起见,我还是留下来。
希望: 我希望能够在同一屏幕上显示ansible-playbook的日志以及shell模块的stdout和stderr。
在一个将tail -f命令以后台方式执行的终端中执行ansible-playbook命令。
任务的示例
- name: terraform apply --auto-approve
shell:
executable: /bin/bash
cmd: |
exec &> >(tee -a "/tmp/ansible_shell.log")
set -x
cd terraform
terraform apply --auto-approve
示例执行(目标为本地节点)
-
- tail -fをバックグラウンドで実行し、ログファイルを実行ターミナルにもリアルタイムに出力させておく
- その後、ansible-playbookを行うと、ansible-playbookのログとshellモジュールのstdout, stderrが同じ実行ターミナルに表示される事になる
$ touch /tmp/ansible_shell.log
$ tail -f /tmp/ansible_shell.log &
[1] 87649
$ ansible-playbook -i localhost, -c local site.yml
...
TASK [terraform apply --auto-approve] ******************************************
+ cd terraform
+ terraform apply --auto-approve
Acquiring state lock. This may take a few moments...
ibm_pi_volume.ds_volume_share2: Refreshing state... [id=976c66a7-d403-4432-8ddb-f876cce6db0d/b7308887-0380-4f2d-a4e2-5ab8d6bada6a]
data.ibm_pi_network.power_networks_private: Reading...
...
Apply complete! Resources: 18 added, 0 changed, 0 destroyed.
changed: [localhost]
...
停止BackgroundTail需要
% jobs
[1] + running tail -f /tmp/ansible_shell.log
$ kill %1
[1] + terminated tail -f /tmp/ansible_shell.log
$
嗯,通常我认为会用另一个终端查看。。
对于远程节点而言
- sshでtail -fを行なっておく
$ ssh remote_node "touch /tmp/ansible_shell.log; tail -f /tmp/ansible_shell.log" &
[1] 89800
[1] + suspended (tty input) ssh remote_node "touch /tmp/ansible_shell.log; tail -f /tmp/ansible_shell.log"
$ ansible-playbook -i remote_node, site.yml
...