あんまりこういう例見かけなかったので。
インベントリの hosts
ファイルを用意。
[tomcat]
198.168.2.11:122
198.168.2.21:222
198.168.2.41:422 ansible_ssh_user=root ansible_ssh_pass=R00TP455W0RD
198.168.2.51:522 ansible_ssh_user=root ansible_ssh_pass=R00TP455W0RD
198.168.2.71:722
198.168.2.81:822
[postgresql]
198.168.2.31:322
198.168.2.61:622
198.168.2.91:922
[all:vars]
ansible_ssh_user=user
ansible_ssh_pass=P455W0RD
ansible_sudo_pass=P455W0RD
SSHポートを変更してあるときは ip:port
で。
他のインスタンスと異なるuser/passを使うときには ansible_ssh_user
、 ansible_ssh_pass
を個別に指定。
sudo
が必要なときは ansible_sudo_pass
も書いておく。
今回は tomcat
グループも postgresql
グループも共通のユーザで入るので、そのへんの指定は all:vars
で。
参考:
Playbookを用意。
- hosts: tomcat
tasks:
- name: start tomcat
service: name=tomcat state=started
sudo: yes
- hosts: tomcat
tasks:
- name: stop tomcat
service: name=tomcat state=stopped
sudo: yes
service
使えば簡単ですね。 sudo: yes
しとくと ansible_sudo_pass
を使って sudo service tomcat start
してくれるイメージ。
重要なのは hosts
と service
のところ。 hosts
にはインベントリのグループを、 service
には登録されているサービス名 name
とステータス state
を指定する。
サービス名は自分の環境に合わせて tomcat8
とか postgresql-9.4
とかやること。
参考:
叩くとき
$ ansible-playbook tomcat-start.yml -i env1.hosts
$ ansible-playbook tomcat-stop.yml -i env1.hosts
postgresql
でもやり方は同じ。
- hosts: postgresql
tasks:
- name: start postgresql
service: name=postgresql state=started
sudo: yes
- hosts: postgresql
tasks:
- name: stop postgresql
service: name=postgresql state=stopped
sudo: yes
$ ansible-playbook postgresql-start.yml -i env1.hosts
$ ansible-playbook postgresql-stop.yml -i env1.hosts
良くわかってない人にとりあえず使ってもらうには、冪等性!冪等性!って言うよりもこのくらいの例の方が食いついて来たりするんですよね。
別の環境に使うときには、別のインベントリファイルを用意して貰おう。
こちらも参考にどうぞ: