#ansible
#ansible
Вопрос:
У меня есть эта группа хостов в инвентаре
[test-node]
usprz3-sec-asept-dz03.prz.foo.com
usprz3-sec-asept-dz04.prz.foo.com
Я хочу напечатать эти имена хостов в файле с помощью шаблона .j2
Я не хочу перебирать список, я просто хочу напечатать первый элемент в группе в одном месте и 2-й элемент в другом месте. Есть ли способ, подобный приведенному ниже, который дал бы мне желаемый эффект?
[test-node].0 should print usprz3-sec-asept-dz03.prz.foo.com
[test-node].1 usprz3-sec-asept-dz04.prz.foo.com
Моя версия ansible — ansible 2.5.4
Спасибо.
Ответ №1:
Список групп и хостов доступен в специальных переменных. Задача, приведенная ниже
- template:
src: test-template.j2
dest: test.txt
и шаблон (test-template.j2)
{% for item in groups['test-node'] %}
[test-node].{{loop.index}} {{ item }}
{% endfor %}
дает:
> cat test.txt
[test-node].1 usprz3-sec-asept-dz03.prz.foo.com
[test-node].2 usprz3-sec-asept-dz04.prz.foo.com
Комментарии:
1. Владимир, спасибо за ваш ответ. Предположим, я не хочу перебирать группу (потому что я хочу, чтобы имена хостов были в разных местах, а не последовательно друг за другом.) Могу ли я ссылаться на них как на группы [‘test-node’].1 и группы [‘test-node’] .2?
Ответ №2:
Взяв пример Владимира, вы можете напечатать первый хост в списке как
{{ groups['test-node'].0 }}
Это выведет usprz3-sec-asept-dz03.prz.foo.com
и второй хост как
{{ groups['test-node'].1 }}
Это выведет usprz3-sec-asept-dz04.prz.foo.com