У меня есть простая инструкция, как показано ниже, которая состоит из нескольких задач. В верхней части плейбука я создаю файл YAML из предоставленного файла CSV, но если я хочу определить переменную в задаче, эта переменная не будет определена в другой задаче. Так что же такое видимость и / или объем переменных Ansible? Я знаю, что если я определю переменную в разделе hosts, эта переменная будет сохраняться во всех задачах, но, поскольку я буду определять переменную динамически, это не лучший подход.
- name: Create IAM users
vars:
password: Sometestpassword123
iam:
iam_type: user
name: "{{ item.username }}"
password: "{{ password }}"
access_key_state: create
state: present
groups: "{{ item.group }}"
with_items:
- "{{ users.users }}"
register: user
- name: Create a file with user credentials
local_action: template src=template.j2 dest=./users_credentials.csv
Итак, если я определяю пароль в задаче, эта переменная используется в качестве параметра модуля, но я не могу повторно использовать эту переменную во второй задаче, где я хочу объединить отфильтрованные выходные данные первой задачи в зарегистрированной переменной с определенная переменная, которая будет динамически изменяться на каждой итерации цикла.
TASK [Create a file with user credentials] *********************************************************************************************************************************************************************
fatal: [localhost -> localhost]: FAILED! => {"changed": false, "msg": "AnsibleUndefinedVariable: 'password' is undefined"}
По сути, я хочу создать файл CSV, состоящий из отфильтрованных возвращаемых значений модуля iam, сохраненных в зарегистрированной переменной «пользователь», и динамически вычисляемого значения переменной «пароль».
К сожалению, модуль AWS iam не возвращает пароль.
Шаблон действительно прост, так как для целей тестирования мне просто нужно значение значения «пароль», определенное в задаче. Вот оно.
{{ password }}
set_fact
? - person imjoseangel   schedule 19.06.2018