# less inventory/hosts
[targets]
yyy.yyy.yyy.yyy
# vi yum_update.yml
- hosts: targets
user: root
tasks:
- name: yum -y update
yum: name=* state=latest
# ansible-playbook -i inventory/hosts yum_update.yml
PLAY [targets] *****************************************************************
TASK [Gathering Facts] *********************************************************
ok: [yyy.yyy.yyy.yyy]
TASK [yum -y update] ***********************************************************
changed: [yyy.yyy.yyy.yyy]
PLAY RECAP *********************************************************************
yyy.yyy.yyy.yyy : ok=2 changed=1 unreachable=0 failed=0
#
上記のような操作をして、実際にyyy.yyy.yyy.yyyのvar/log/yum.log
でyumされたことを確認。ただ、失敗はしませんでしたが少し時間がかかったのでタイムアウトが心配になりました。そこで、下記のようにasyncとpollを追加しました。
# vi yum_update.yml
- hosts: targets
user: root
tasks:
- name: yum -y update
yum: name=* state=latest
async: 5
poll: 0
こんな感じで。なお、
- async: 終了まで待つ時間
- poll: チェックする間隔
という意味だそうですが、待たなくて良いならばasyncではなく、pollを0にすれば良い、とのこと。
参考
- Ansible ~yumモジュール~ - Qiita
- Ansible でバックグラウンドプロセスを起動する | cloudpack.media
- Ansible本を読みました — そこはかとなく書くよん。
- ssh - Ansibleでバックグラウンドプロセスを起動したい。 - スタック・オーバーフロー
- 【小ネタ】Ansibleでyum updateするときはBackgroundオプションをつけると良いという話 | Developers.IO
shellの場合はまた違う書き方になりますね。