Используйте точечный файл переменных YAML в Ansible - PullRequest
2 голосов
/ 26 марта 2020

Я пытаюсь добиться следующего с помощью Ansible:

Определить файл YAML с некоторыми переменными в точечном формате внутри него (variables.yml)

database.hosts[0]: "db0"
database.hosts[1]: "db1"
database.hosts[2]: "db2"

foo.bar: 1
foo.baz: 2

Загрузите переменные в variables.yml с помощью модуля include_vars в моей пьесе (playbook.yml) и распечатайте их в древовидной структуре

- hosts: all
  gather_facts: not
  tasks:
    - name: "Loading vars"
      run_once: true
      include_vars:
        file: 'variables.yml'

    - name: "Testing"
      debug:
        msg: "{{ foo }}"

    - name: "Testing"
      debug:
        msg: "{{ database }}"

Выполнение этих результатов в следующей ошибке:

fatal: [host0]: FAILED! => {"msg": "The task includes an option with an undefined variable. The error was: 'foo' is undefined\n\nThe error appears to be in '.../playbook.yml': line 9, column 7, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n\n    - name: \"Testing\"\n      ^ here\n"}

Из чего следует, что каждое свойство в файле YAML было загружено как отдельное свойство, а не как свойства внутри двух деревьев с корнями в database и foo .

Конечно, книга воспроизведения работает должным образом, если я задаю свойства следующим образом:

database:
  hosts:
    - "db0"
    - "db1"
    - "db2"        

foo:
  bar: 1
  baz: 2

Однако мне нужно, чтобы файл переменных YAML был в пунктирный формат вместо формата c с отступом. Есть ли способ добиться этого? Например: модуль, отличный от include_vars, или какая-либо конфигурация, которую я могу добавить в файл ansible .cfg? Я уже пытался использовать hash_behaviour = merge , но это не помогло.

1 Ответ

0 голосов
/ 27 марта 2020

Q: "Мне нужно, чтобы файл переменных YAML был в точечном формате, а не в формате с отступом classi c. Есть ли способ добиться этого?"

A: Нет. Это невозможно. См. Создание допустимых имен переменных .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...