page_adsence

2015年2月5日木曜日

AnsibleでSELinuxをOFFにする方法

AnsibleでSELinuxをOFFにするための方法を調べてみた。

ググってみると下記の記事が見つかった。

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を作っていきたいと思います。