Ansible - делегировать одну задачу группе хостов, где имя группы инвентаризации содержит переменную - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть задание, которое запускается на сервере 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

Ответы [ 2 ]

1 голос
/ 02 апреля 2019

Благодаря @Istvan решение моего вопроса выглядит так:

- 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
1 голос
/ 02 апреля 2019

Решение состоит в том, чтобы искать переменную следующим образом:

{{ groups[env + '-terminal-server' ] }}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...