1. gamisan9999

    No comment

    gamisan9999
Changes in body
Source | HTML | Preview

どうも情弱氏の俺です。

vars/main.ymlをrole default variablesと勘違いしていた話です。

Ansible 2.0.0.2 での話です。

使い回しの効くいい感じのプレイブック目指すなら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"
    }
}