どうも情弱氏の俺です。
vars/main.ymlをrole default variablesと勘違いしていた話です。
Ansible 2.0.0.2
での話です。
http://docs.ansible.com/ansible/playbooks_roles.html#role-default-variables
と
http://docs.ansible.com/ansible/playbooks_variables.html#variable-precedence-where-should-i-put-a-variable
をよく読みましょうという話です。
使い回しの効くいい感じのプレイブック目指すならrole_name/defaults/main.yml
に書こうという話です。
overrideできなくて死ぬ
- tree
orenomac$ tree roles/mysql
roles/mysql
├── binaries
├── vars
│ └── main.yml
├── files
├── handlers
├── tasks
│ ├── main.yml
│ └── mysql_client.yml
└── templates
└── my.cnf.j2
- vars/main.yml
mysql_client:
install: true
version: "5.6"
mysql_server:
install: false
version: "5.6"
- hosts
こーするじゃないですか。
overrideだと思ってて
- hosts: orenomassiiiiiiiinnnnnnn
user: ec2-user
vars:
mysql_server:
install: true
version: "5.6"
sudo: true
roles:
- mysql
- ansible-playbook
ファーmysql_server.install
がoverrideされてない
TASK [mysql : debug] ***********************************************************
ok: [orenomassiiiiiiiinnnnnnn] => {
"mysql_server": {
"install": false,
"version": "5.6"
}
}
overrideできて生き延びた
- tree
orenomac$ tree roles/mysql
roles/mysql
├── binaries
├── defaults
│ └── main.yml
├── files
├── handlers
├── tasks
│ ├── main.yml
│ └── mysql_client.yml
└── templates
└── my.cnf.j2
- defaults/main.yml
mysql_client:
install: true
version: "5.6"
mysql_server:
install: false
version: "5.6"
- hosts
今度こそoverride
- hosts: orenomassiiiiiiiinnnnnnn
user: ec2-user
vars:
mysql_server:
install: unko
version: "5.6"
sudo: true
roles:
- mysql
- ansible-playbook
ファーできた
TASK [mysql : debug] ***********************************************************
ok: [orenomassiiiiiiiinnnnnnn] => {
"mysql_server": {
"install": unko,
"version": "5.6"
}
}
完