如何将字典中的变量传递给Ansible Role?

时间:2015-05-20 08:40:44

标签: yaml ansible ansible-playbook

我想将一些值传递给Ansible角色,但我无法在文档中找到任何显示如何传入一个字典变量的示例。

以下是我要传入的内容,但我的YAML语法已关闭:

roles:
  - { role: postgresql,
          postgresql_users:
            - name: dev_user
              pass: dev_pass
              encrypted: no,
            - name: test_user
              pass: test_pass
              encrypted: no
          postgresql_databases: ['dev', 'test'],
          postgresql_user_privileges:
            - name: dev_user
              db: dev
              priv: "ALL"
            - name: test_user
              db: test
              priv: "ALL"
          tags: ['postgres'] 
      }

传递具有字典值的变量的正确YAML语法是什么?

1 个答案:

答案 0 :(得分:3)

我认为应该更接近这一点:

roles:
  - { role: postgresql,
      postgresql_users: [
        { name: "dev_user",
          pass: "dev_pass",
          encrypted: "no" },
        { name: "test_user",
          pass: "test_pass",
          encrypted: "no" }
      ],
      postgresql_databases: ['dev', 'test'],
      postgresql_user_privileges:[
        { name: "dev_user",
            db: "dev",
            priv: "ALL" },
        { name: "test_user",
            db: "test",
            priv: "ALL"}
      ],
      tags: ['postgres'] 
    }

请注意,我假设“dev_user”等。是字符串。如果您需要变量,则需要name: "{{ dev_user }}"