まずはansibleコマンド
http://docs.ansible.com/ansible/latest/intro_getting_started.html
/etc/ansible/hosts のyml
親のhostsでぶら下がるホストを定義
children内のhostsでは重複でホストを呼んでグループ化できる = 1ホストが複数グループに所属可
all: # keys must be unique, i.e. only one 'hosts' per group
hosts:
sv1:
sv2:
sv3:
vars:
mytype: ALLLLLLLLL
children:
dmz:
hosts:
sv1:
sv2:
vars:
mytype: "Overrided by group_vars {{ group_names }}"
internal:
hosts:
sv3:
vars:
mytype: "Overrided by group_vars {{ group_names }}"
mygroup:
hosts:
sv2:
sv3:
vars:
mytype: "Overrided by group_vars {{ group_names }}"
試す
ansible all -m ping
ansible dmz -a hostname
変数を使う
bashの変数になるかと思ったら違った。
ansible all -a "echo {{ mytype }}" # なんとgroup_varsに上書きされる
ansible mygroup -a "echo {{ mytype }}" # variablesの上書きがいまいち
変数の上書きはしないほうがよさそう。
ansible playbook
playbookの中に対象ホストを書くのが意外だった。
$ cat playbook.yml
---
- hosts: mygroup
vars:
http_port: 80
max_clients: 200
remote_user: root
tasks:
- name: ensure apache is running (and enable it at boot)
service: name=httpd state=started enabled=yes
試す
$ ansible-playbook playbook.yml --syntax-check
$ ansible-playbook playbook.yml --list-hosts
# 実行
$ ansible-playbook playbook.yml
PLAY RECAP ***********************************************************************************************************************
sv1.kidc.jp : ok=1 changed=0 unreachable=0 failed=1
sv2.kidc.jp : ok=2 changed=0 unreachable=0 failed=0
apacheがない sv1 はちゃんとエラーになった。
playbookの書き方は特殊だなー、これがDSLというのだろうか。覚えるの大変そう・?
時間取れ次第、続き書き足していく予定。