2016-07-29 15 views
0

У меня есть довольно простой hosts файлОпределение хоста в качестве переменной в анзибль хостов файл

[clients] 
qas0062 
[dbs_server] 
qas0063 

Для пользователей проекта мы не хотим, чтобы изменить hosts файл, а у нас есть отдельный user.config.yml файл содержат различные настраиваемые пользователем параметры. Там у нас есть запись, такие как

dbs_server: qas0065 

Таким образом, вопрос: можно ли использовать переменную в hosts файл, который будет использовать значение, определенное в user.config.yml? И какой будет формат?

ответ

3

Довольно, что вы не можете templatize записи фактического ключа хоста в инвентаре, но вы можете templatize значения его ansible_host соединения вара достичь примерно такого же эффекта, например:

[clients] 
clienthost ansible_host="{{ clienthost_var }}" 
[dbs_server] 
dbsserver ansible_host="{{ dbsserver_var }}" 

затем установите значение этих варов от внешних варов до начала игры (например, с помощью директивы vars_files или -e).

+0

Спасибо за ваше решение, Мэтт. Я попробую это сегодня. – Bostone

+0

Отлично! Это сработало красиво! – Bostone

0

Существует другой способ сделать то же самое. Мы можем просто ссылаться на значения в файле хостов (инвентаризации), используя следующий синтаксис в нашем PlayBook

host={{ groups['dbs_server'][0] }}

Это хорошо работает, когда у вас есть одна запись в группе (db_server в данном конкретном случае)