Невозможно передать переменную в with_dict - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь передать переменную в with_dict l oop, взятом из первой пьесы моей пьесы, во вторую пьесу этой пьесы (где исполняется with_dict).

Вот мой диктонар:

ws:
  datasources:
    password: example

и вот l oop, который я пытаюсь запустить:

    - replace:
    path: /usr/local/example/example
    regexp: '!password_variable!'
    replace: "{{ item.value.password }}"
  with_dict: "{{ hostvars['localhost']['platform'] }}"

Что я хочу сделать, так это то, что я могу передать "ws" в качестве переменной платформы, поэтому У меня есть возможность выбирать между несколькими паролями платформы. Это прекрасно работает, если я хардкор "ws" под with_dict.

Редактировать: забыл сказать, что я получаю ошибку "with_dict ожидает диктата". Это наводит меня на мысль, что переменная подбирается, но ей почему-то не нравится.

1 Ответ

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

Q: «Передать переменную ... из первой пьесы моей пьесы во вторую пьесу ...»

A: Использовать hostvars. область действия hostvars является хостом. Например, объявите переменную с set_fact.


Примеры области действия

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

Пример 1. Переменная my_var1, определенная в vars первой игры , не определена в следующей игре

- name: Play 1
  hosts: localhost
  vars:
    my_var1: Hello world!
  tasks:
    - debug:
        var: my_var1

- name: Play 2
  hosts: localhost
  tasks:
    - debug:
        var: my_var1

дает

PLAY [Play 1] ***********

TASK [debug] ************
ok: [localhost] => {
    "my_var1": "Hello world!"
}

PLAY [Play 2] ***********

TASK [debug] ************
ok: [localhost] => {
    "my_var1": "VARIABLE IS NOT DEFINED!"
}

Пример 2. Переменная my_var2, определенная в vars_prompt первой игры , также не определена в следующей игре

- name: Play 3
  hosts: localhost
  vars_prompt:
    - name: my_var2
      prompt: "What is the value of my_var2?"
  tasks:
    - debug:
        var: my_var2

- name: Play 4
  hosts: localhost
  tasks:
    - debug:
        var: my_var2

дает

What is the value of my_var2?: 

PLAY [Play 3] ***********

TASK [debug] ************
ok: [localhost] => {
    "my_var2": "Hello world!"
}

PLAY [Play 4] ***********

TASK [debug] ************
ok: [localhost] => {
    "my_var2": "VARIABLE IS NOT DEFINED!"
}

Хост : переменные, непосредственно связанные с хостом, такие как инвентаризация, факты или выходные данные зарегистрированных задач.

Пример 3. Переменная my_var3 определена в facts из первой игры определяется в следующей игре

- name: Play 5
  hosts: localhost
  tasks:
    - set_fact:
        my_var3: Hello world!
    - debug:
        var: my_var3

- name: Play 6
  hosts: localhost
  tasks:
    - debug:
        var: my_var3

дает

PLAY [Play 5] *************

TASK [set_fact] ***********
ok: [localhost]

TASK [debug] **************
ok: [localhost] => {
    "my_var3": "Hello world!"
}

PLAY [Play 6] *************

TASK [debug] **************
ok: [localhost] => {
    "my_var3": "Hello world!"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...