Мне нужно изменить имя компьютера Windows на 40 машинах в AWS. Я попытался использовать collect_facts, чтобы установить условие, которое будет выполняться только в том случае, если IP-адрес совпадает. Но почему-то не поднимает. Мое решение проблемы на данный момент (крайне неэффективно - создавать отдельные группы хостов по одной на каждый IP-адрес. Я знаю, что должен быть лучший способ сделать это, любой вклад будет оценен.
Вот что у меня работает
---
- hosts: windows_machine1
gather_facts: yes
tasks:
- name: Change the hostname to newname1
win_hostname:
name: newname1
register: res
- hosts: windows_machine2
tasks:
- name: Change the hostname to newname2
win_hostname:
name: newname2
register: res
- name: Reboot
win_reboot:
when: res.reboot_required
Я попробовал два способа сделать условное выражение, оба привели к ошибке при запуске.
---
- hosts: windows_machine1
gather_facts: yes
tasks:
- name: Change the hostname to newname1
win_hostname:
name: newname1
register: res
when: ansible_facts['ansible_all_ipv4_addresses'] == '10.x.x.x
- name: Change the hostname to newname2
win_hostname:
name: newname2
register: res
when: ansible_facts['address'] == '10.x.x.x'
- name: Reboot
win_reboot:
when: res.reboot_required
Это не удастся, говоря, что условная проверка не удалась. Потому что мои условия плохие. Кто-нибудь знает, как сделать условное на основе ip?
host_mapping: - { old: 127.0.0.1, new: newName1}
и так далее? - person nwinkler   schedule 17.01.2019