さくらのクラウドのインスタンスをansibleで再起動
前に別のクラウド用に作ったのが、さくらのCentOS7.3環境で動かない。
はまりどころ:
- hostsにIPアドレスしか書いてないと変数指定で{{ inventory_hostname }}が使えない
- async: 0にしておくと、そこで止まってしまう
- shutdown直だとなんかうまく動かないので、少しウエイト入れる
- 一瞬でリブートしちゃうので、ssh downの監視入れるとそこでロックしちゃう
- ansible2.xからlocal_actionがdelegate_to: localhostに変わった風
インスタンス立てた直後は、userがrootしかないのでremote_user: rootにしてありますが、ユーザー作ってある場合は消してrebootでbecome:trueなんかにしておいてください。
$ ansible --version ansible 2.3.0.0 config file = /etc/ansible/ansible.cfg configured module search path = Default w/o overrides python version = 2.7.5 (default, Nov 6 2016, 00:28:07) [GCC 4.8.5 20150623 (Red Hat 4.8.5-11)]
インベントリファイル。
$ cat hosts.ini [REBOOT-SAKURA-TEST] 153.127.XXX.XXX
palybookファイル。
$ cat reboot.yml --- - hosts: REBOOT-SAKURA-TEST remote_user: root tasks: - name: test connection (before reboot) ping: - name: reboot command: sleep 2 && shutdown -r now async: 1 poll: 0 ignore_errors: true - name: wait for ssh up wait_for: > host="{{ ansible_default_ipv4.address }}" port=22 state=started delay=1 delegate_to: localhost - name: test connection (after reboot) ping:
実行結果。
$ ansible-playbook -i hosts.ini reboot.yml PLAY [REBOOT-SAKURA-TEST] ***************************************************** TASK [Gathering Facts] ********************************************************* ok: [153.127.XXX.XXX] TASK [test connection (before reboot)] ***************************************** ok: [153.127.XXX.XXX] TASK [reboot] ****************************************************************** changed: [153.127.XXX.XXX] TASK [wait for ssh up] ********************************************************* ok: [153.127.XXX.XXX -> localhost] TASK [test connection (after reboot)] ****************************************** ok: [153.127.XXX.XXX] PLAY RECAP ********************************************************************* 153.127.XXX.XXX : ok=5 changed=1 unreachable=0 failed=0