пожалуйста, извините мой вопрос в первую очередьЯ искал и провел время, глядя на Как перебирать группы инвентаризации в ansible? и Ansible перебирать хосты в группе инвентаризации, задаваемые переменными вопросами стиля .
Итак, постараюсь сохранить вопрос простым.
Инвентарь Выглядит так: (это весь пример, адаптированный для объяснения немного лучше ..)
[GroupA]
host1 country=USA
host2 country=USA
host3 country=UK
Итак, я хочупередать группу только без хостов, так что playbook выполняется на каждом хосте.Однако, как часть playbook, сначала мне нужно запустить скрипт на другом сервере (в зависимости от страны) и передать имя хоста этому скрипту.
В своем тестировании я обнаружил «имя_ инвентаря», так что даже если я не прошел хост и прошел Группу, я мог поместить имя хоста в переменную.
Когда я все это поместилвместе и начали с import_playbook (потому что этот playbook для другого сервера), я увидел:
Error was a <class 'ansible.errors.AnsibleError'>, original message: An unhandled exception occurred while templating '{{ runninghost }}'. Error was a <class 'ansible.errors.AnsibleError'>, original message: An unhandled exception occurred while templating '{{ v_host_name }}'. Error was a <class 'ansible.errors.AnsibleError'>, original message: recursive loop detected in template string: {{ v_host_name }}
У меня есть playbook, где у меня есть некоторые условия, основанные на "стране"
- hosts: "{{ v_world }}"
vars:
v_world: "{{ v_world }}"
hostvalue : "{{ inventory_hostname }}"
- import_playbook: country-stuff-USA.yml
vars:
v_host_name: "{{ hostvalue }}"
when: hostvars[groups[v_world][0]]['country'] == "USA"
- import_playbook: country-stuff-UK.yml
vars:
v_host_name: "{{ hostvalue }}"
when: hostvars[groups[v_world][0]]['country'] == "UK"
country-stuff-USA.yml
---
- hosts: "world-server-usa.world"
vars:
runninghost: "{{ v_host_name }}"
roles:
- role: world_peace-usa
poll: 0
vars:
hostvalue: "{{ runninghost }}"
country-stuff-UK.yml
---
- hosts: "world-server-usa.world"
vars:
runninghost: "{{ v_host_name }}"
roles:
- role: world_peace-uk
poll: 0
vars:
hostvalue: "{{ runninghost }}"
world_peace-uk ( main.yml )
- name: world_peace-uk
shell: ksh /mountA/scriptuk.sh -host={{hostvalue}}
world_peace-uk ( main.yml )
- name: world_peace-usa
shell: ksh /mountA/scriptusa.sh -host={{hostvalue}}
Есть мысли?Я уверен, что я делаю что-то очень неправильное с этой комбинацией ... но я не мог придумать лучшего способа использования групп, кроме как передать имя хоста в скрипт в другом окне.
Большое спасибо за чтение!