LoginSignup
10
11

More than 5 years have passed since last update.

Ansibleでやってみる/複数サーバのservice(tomcat/postgresql)をまとめてstart/stopするだけのplaybook

Posted at

あんまりこういう例見かけなかったので。

インベントリの hosts ファイルを用意。

env1.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_useransible_ssh_pass を個別に指定。
sudo が必要なときは ansible_sudo_pass も書いておく。
今回は tomcat グループも postgresql グループも共通のユーザで入るので、そのへんの指定は all:vars で。

参考:

Playbookを用意。

tomcat-start.yml
- hosts: tomcat
  tasks:
  - name: start tomcat
    service: name=tomcat state=started
    sudo: yes
tomcat-stop.yml
- hosts: tomcat
  tasks:
  - name: stop tomcat
    service: name=tomcat state=stopped
    sudo: yes

service 使えば簡単ですね。 sudo: yes しとくと ansible_sudo_pass を使って sudo service tomcat start してくれるイメージ。
重要なのは hostsservice のところ。 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 でもやり方は同じ。

postgresql-start.yml
- hosts: postgresql
  tasks:
  - name: start postgresql
    service: name=postgresql state=started
    sudo: yes
postgresql-stop.yml
- 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

良くわかってない人にとりあえず使ってもらうには、冪等性!冪等性!って言うよりもこのくらいの例の方が食いついて来たりするんですよね。
別の環境に使うときには、別のインベントリファイルを用意して貰おう。

こちらも参考にどうぞ:

10
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
11