Ansible: мне нужно использовать переменную, которая находится в цикле, и использовать каждую переменную независимо - PullRequest
0 голосов
/ 09 мая 2018

требуется некоторая помощь, если это возможно ...

Я создал пользователей из файла переменной:

"Users": 
 - user1
 - user2
 - user3

Мне нужно переместить файлы в домашний каталог каждого пользователя.Я не хочу делать это так, поскольку это будет означать написание отдельной строки для каждого пользователя:

- name: Copy Playbooks
  copy:
    src: /etc/ansible/playbooks/file.yml
    dest: /home/user1/playbooks

Выполнение, как показано ниже, будет означать, что ansible пытается добавить в домашний каталог {{"user1" "user2" "user3"}}

- name: Copy Playbooks
  copy:
    src: /etc/ansible/playbooks/hands_on_ansible/hands_on_files/mount_nfs.yml
    dest: /home/{{ variable.get('Users') }}/playbooks

Поэтому мне нужно добавить каждую отдельную переменную в другой домашний каталог, используя файл переменных, который представляет собой цикл.

Погуглил (очевидно), но безрезультатно.Вся помощь очень ценится!:)

1 Ответ

0 голосов
/ 09 мая 2018

Тип Users является списком, и он содержит 3 элемента, информацию о структуре данных YAML можно найти в соответствующей документации Ansible .

В основном вам нужно будет перебирать элементы в списке и применять вашу игру Copy Playbooks для каждого. Это цикл, и вы можете сделать это следующим образом:

- name: Copy Playbooks
  copy:
    src: /etc/ansible/playbooks/hands_on_ansible/hands_on_files/mount_nfs.yml
    dest: "/home/{{item}}/playbooks"
  loop: "{{ variable.get('Users') }}"

Более точное описание петель ANSI можно найти в документации .


РЕДАКТИРОВАТЬ: Приведенное выше решение для Ansible> = 2,5. Как указано в документации:

До того, как 2.5 Ansible в основном использовал ключевые слова with_<lookup> для создания циклов, ключевое слово цикла в основном аналогично with_list.

Для версий Ansible <2.5 обычный способ сделать это будет: </p>

- name: Copy Playbooks
  copy:
    src: /etc/ansible/playbooks/hands_on_ansible/hands_on_files/mount_nfs.yml
    dest: "/home/{{item}}/playbooks"
  with_items: "{{ variable.get('Users') }}"
...