Ansible как создать список ключей словаря - PullRequest
1 голос
/ 08 апреля 2020

Я, наверное, упускаю что-то простое. У меня есть словарь в vars.yml

deploy_env:
  dev:
    schemas:
      year1:
        - main
        - custom
      year2:
        - main
        - custom
        - security
      year3:
        - main
        - custom

, тогда в моем playbook.yml у меня есть что-то вроде

- set_fact:
    years: "{{ deploy_env.dev.schemas }}"

- name: Create schemas
  shell: "mysql ....params go here... {{ item }}"
  with_nested:
    - "{{ years }}"

Выше работает нормально, если схемы в vars.yml был простой список ie:

...schemas:
     - year1
     - year2
     - year3

Но как только я добавляю дополнительные элементы под каждый год (делая это словарём (?), Я начинаю получать ошибки в строке: - "{{years}}" .

Я хочу заполнить {{years}} year1 , year2 , year3 значения для этой задачи.

Я посмотрел много примеров, но все, на что я смотрел, было слишком сложным, и речь шла о том, как создавать словари, которые не полезно.

Спасибо!

1 Ответ

0 голосов
/ 08 апреля 2020

Можно создать список ключей словаря. Например,

    - set_fact:
        years: "{{ deploy_env.dev.schemas.keys()|list }}"
    - debug:
        var: item
      loop: "{{ years }}"

дает

    "item": "year1"
    "item": "year2"
    "item": "year3"


Список против словаря

Цитата:

"добавлять дополнительные элементы под каждый год (делая это словарём (?)"

Добавление элементов не превращает список в словарь. Элемент списка вводится с da sh "-" в YAML . Добавление дополнительных элементов под каждым элементом списка превращает его в список списков.

Пример списка:

    schemas:
      - year1
      - year2
      - year3

Пример списка списков

    schemas:
      - year1:
          - main
          - custom
      - year2:
          - main
          - custom
          - security
      - year3:
          - main
          - custom

Пример словаря:

    schemas:
      year1:
        - main
        - custom
      year2:
        - main
        - custom
        - security
      year3:
        - main
        - custom
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...