У меня есть задание, которое запускается на сервере server1 (сервер находится в группе "yst-ad-server"). Он должен взять IP-адрес хоста из hostvars и установить его на server2 в качестве адреса DNS.
Сервер2 находится в группе "YST-терминал-сервер". Часть yst является динамической, поэтому она будет определяться в переменной при запуске ansible ('-e "env = xxx"').
Как я могу использовать это, чтобы делегировать это на server2? Пока я получил это, но Ansible не получает хосты, он говорит, что не может подключиться к хосту "groups ['yst-Terminal-Server']":
- name: name.
win_dns_client:
adapter_names: '*'
ipv4_addresses: '{{ hostvars[inventory_hostname].ansible_host }}'
where: inventory_hostname != groups['yst-ad-server'][-1]
delegate_to: '{{ item }}'
with_items: "groups['{{ env }}-terminal-server']"
register: set_dns_ip
То, что я на самом деле хочу, было бы так:
with_items: '{{ groups.{{env}}-terminal-server }}'
Где env содержит "yst". Но это невозможно, потому что Ansible не позволяет иметь переменную внутри переменной.
Редактировать :
Я уже посмотрел на эту ссылку, упомянутую в комментариях, но пока безуспешно:
- debug: msg="{{ (lookup('vars', env))-terminal-server }}"
Приводит к ошибке:
The error was: No variable found with this name: yst