ググってみると下記の記事が見つかった。
Ansibleの事例とちょっとしたTips
この部分を見ながらやってみたが、どうもうまく行かない。
ymlの記述を全く同じにしてみてもうまくいかない。
-bash: sudo: コマンドが見つかりません
なんで記事中ではうまくいってるのに、自分の環境じゃダメなのかと思ったのですが、
原因は自分の環境がCygwin環境だからでした。
なので、下記のように修正してやってみる。
---
- name: Install libselinux-python
yum: name=libselinux-python state=present
- name: Check status of selinux
shell: getenforce
- name: Permissive selinux
selinux: policy=targeted state=permissive
- name: reboot after change selinux
shell: sleep 2s && /sbin/reboot &
- name: wait for the server to go down (reboot)
local_action: wait_for host={{ inventory_hostname }} port=22 state=stopped
sudo: no
- name: wait for the server to come up
local_action: wait_for host={{ inventory_hostname }} port=22 delay=30
sudo: no
- name: Check status of selinux
shell: getenforce
再起動自体は行われたが、後続が続かない。
何をやってもダメで、他の方法を探してみた。
で、見つけた記事がこれ。
Ansible で Vagrant ホストを再起動する
「wait_for で待つ方法だと ansible-playbook が再起動以降でコケたり共有フォルダーがマウントされなくなったりとダメ。」
という記述を見つけて愕然。
今まで色々と試行錯誤してみたけど、無駄だったことが発覚。
とりあえず、この方法で出来るのかを検証してみることにした。
$ vi selinux-off.yml
---
- name: Install libselinux-python
yum: name=libselinux-python state=installed
- name: disable SELinux
sudo: yes
selinux: state=disabled
- include: reboot.yml
$ vi reboot.yml
---
- name: reboot vagrant host
command: 'vagrant reload'
delegate_to: 127.0.0.1
changed_when: false
この様な感じでファイルを用意して試してみたら、見事成功。
ということで、この方法を採用してplaybookを作っていきたいと思います。