ansible - как передать локальный DNS-сервер при запуске ansible-playbook для разрешения имени хоста

Я использую доступный (доступный 1.9.0.1).

Я запускаю ansible-playbook для выполнения некоторых операций на целевом / удаленном компьютере, используя его имя хоста.

В моем файле инвентаря есть запись для имени хоста, например appserver01.newdomainname.com

Когда я запускаю ansible-playbook, чтобы просто сделать простой (пример привет, мир), он не разрешает имя хоста. Если в инвентаре у меня IP x.x.x.x значит работает !!!!

Итак, похоже, что сервер имен или поиск на моем исходном компьютере /etc/resolv.conf не разрешает удаленное имя хоста, используя его полное доменное имя, то есть appserver01.newdomainname.com

Есть ли способ вызвать ansible-playbook и передать новый / локальный DNS-сервер, чтобы ansible мог сначала разрешить имя хоста (в файле инвентаризации) из этого DNS (вместо чтения / разрешения его из /etc/resolv.conf ).

PS: я не могу добавить этот новый / локальный DNS-сервер имен xx.xx.yy.zz в /etc/resolv.conf.


person AKS    schedule 19.05.2015    source источник
comment
Я не думаю, что это возможно, потому что я не вижу возможности для этого в ssh. Единственное, о чем я могу думать, помимо фактического определения IP в инвентаре Ansible или .ssh/config, - это туннель ssh (ProxyCommand). Если вы делегируете все задачи через хост, с которого разрешаются целевые хосты, имена хостов не должны разрешаться локально.   -  person udondan    schedule 20.05.2015
comment
Когда вы просто ssh appserver01.newdomainname.com от своего хозяина, это работает?   -  person Mxx    schedule 21.05.2015
comment
@Mxx нет. Поскольку /etc/resolv.conf не имеет записи сервера имен для разрешения newdomain.com. Мы также не хотим обновлять файл / etc / hosts на каждом сервере (где мы будем запускать ansible-playbook), а также мы постоянно создаем новые домены каждый день (любой член команды DEV может создать mynewdomain.com или myname .com при создании ВМ / Vapp в VCloud). Было бы действительно полезно, если бы у меня была возможность для ansible / ansible-playbook передавать дополнительный DNS-сервер, чтобы, если производство / сервер не разрешает ваш домен, тогда ansible будет использовать DNS-сервер, который мы передали в командной строке, для разрешения Это.   -  person AKS    schedule 21.05.2015


Ответы (1)


Один из способов обойти это - использовать атрибут ansible_ssh_host в файле инвентаря. Это не то же самое, что подключение к вашему локальному DNS, но это похоже на перенос записей DNS с вашим инвентарем. Таким образом, вы по-прежнему можете обращаться к своим серверам по их именам хостов, и вам не нужно ничего помещать в файл хостов ваших серверов. Так это выглядело бы так:

[myservers] appserver01.newdomainname.com ansible_ssh_host=x.x.x.x

Вы даже можете переместить эти сопоставления в файл host_vars и сохранить разные списки IP-адресов для каждой из ваших сред развертывания.

person ajschmidt    schedule 01.06.2015
comment
Ansible 2.0 устарел ansible_ssh_host и стал ansible_host. - person myrdd; 13.07.2018