В моей пьесе Ansible есть задача, которую я хочу повторить для каждого хоста в моей группе, и для каждого хоста я хотел бы назначить имя из списка имен хостов, который я создал в папке vars,
Я уже знаком с циклическим прохождением инвентаризации, написав цикл: "{{groups ['mygroup']}}", и у меня есть список имен хостов, которые я хотел бы назначить каждому IP в 'mygroup' внутрифайл хоста.
# In tasks file - roles/company/tasks/main.yml
- name: change hostname
win_hostname:
name: "{{ item }}"
loop: "{{ hostname }}"
register: res
# In the Inventory file
[company]
10.0.10.128
10.0.10.166
10.0.10.200
# In vars - roles/company/vars/main.yml
hostname:
- GL-WKS-18
- GL-WKS-19
- GL-WKS-20
# site.yml file located under /etc/ansible
- hosts: company
roles:
- common
- company #This is where the loop exists mentioned above.
# Command to run playbook
ansible-playbook -i hosts company.yml
Кажется, у меня есть отдельные фрагменты или я знаю об этом, но как я могу объединить итерации по хостам из группы инвентаризации и назначить имена, которые у меня есть, в уже созданном списке (в папке ролей vars) уже?
ОБНОВЛЕНИЕ задача, упомянутая выше, была обновлена с учетом изменений, упомянутых в ответе:
- name: change hostname
win_hostname:
name: "{{ item.1 }}"
loop: {{ groups.company|zip(hostname)|list }}"
register: res
Однако вывод, который я получаю, неверен, этоне должен запускаться 9 раз, а только три раза, один раз на IP в группе [company] в инвентаре.Также в списке есть только три имени хоста, которые должны быть назначены каждому из хостов в инвентаре.
changed: [10.0.10.128] => (item=[u'10.0.10.128', u'GL-WKS-18'])
changed: [10.0.10.166] => (item=[u'10.0.10.128', u'GL-WKS-18'])
changed: [10.0.10.200] => (item=[u'10.0.10.128', u'GL-WKS-18'])
changed: [10.0.10.128] => (item=[u'10.0.10.166', u'GL-WKS-19'])
changed: [10.0.10.166] => (item=[u'10.0.10.166', u'GL-WKS-19'])
changed: [10.0.10.200] => (item=[u'10.0.10.166', u'GL-WKS-19'])
ok: [10.0.10.128] => (item=[u'10.0.10.200', u'GL-WKS-20'])
ok: [10.0.10.166] => (item=[u'10.0.10.200', u'GL-WKS-20'])
ok: [10.0.10.200] => (item=[u'10.0.10.200', u'GL-WKS-20'])