はじめに
Ansibleで構成管理をしていると、ある全台ではなくある特定のサーバだけ設定を変えたい時がある。WEBサーバ全体ではなく、その中の1台のみ実施したいという時だ。Ansibleのtipsを紹介。
Ansibleで特定サーバのみ振る舞いを変える
例えばcronをコメントアウトすることを例にする。
- Ansibleのinventoriesのhostsファイルを変更
以下の通り[web] web01 ansible_host=192.168.10.10 ansible_ssh_private_key_file=~/.ssh/key web02 ansible_host=192.168.10.11 ansible_ssh_private_key_file=~/.ssh/key
- ansible-playlistを編集し、サーバ名を取得する。
- name: check Hostname hostname: name: '{{ inventory_hostname }}' tags: edit_cron
inventoriesでいうところのweb01やweb02がこれに該当する
- replaceを使う
特定サーバの場合振る舞いを変える
web02だけあるcronを変えたい場合- name: comment out for 02 replace: path: /var/spool/cron/cronuser regexp: '^\* \* \* \* \* echo hello' replace: '#* * * * * echo hello' when: inventory_hostname is search("02") tags: edit_cron
を定義することにより、02のecho helloだけコメントアウトされる