あんまりこういう例見かけなかったので。
インベントリの 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
良くわかってない人にとりあえず使ってもらうには、冪等性!冪等性!って言うよりもこのくらいの例の方が食いついて来たりするんですよね。
別の環境に使うときには、別のインベントリファイルを用意して貰おう。
こちらも参考にどうぞ: