たとえば SELinux の設定をいじりたいとき。
wait_for で待つ方法だと ansible-playbook が再起動以降でコケたり共有フォルダーがマウントされなくなったりとダメ。
vagrant reload を使う。
reboot-vagrant.yml
---
- name: reboot vagrant host
command: 'vagrant reload'
delegate_to: 127.0.0.1
changed_when: false
こんな感じでファイルとして切り出しておいて、再起動が必要なところで include 。
disable-selinux.yml
---
- name: disable SELinux
sudo: yes
selinux: state=disabled
- include: util/reboot.yml
ローカルのコマンドが終わるのを待つわけで、非同期ではないので wait_for は不要。
注意点として、 Vagrant ホストで Vagrant のプロセスが走っている際中は vagrant reload が使えないみたいなので Vagrant provisioner からはこの方法を使えない。素直に ansible-playbook から起動しよう。