2016-12-06 11 views
6

я установил следующие версии: анзибль 2.3.0 (разви 2131eaba0c)анзибль: Использование переменной для определения хостов пьес

Я хочу, чтобы указать свою переменную хоста в качестве внешней переменной, а затем использовать его в PlayBook похож на это:

hosts: "{{integration}}" 

в моем group_vars/все файла у меня есть следующий определенный переменный:

integration: "int60" 

хост файл выглядит следующим образом:

[int60] 
hostA 

[int61] 
hostB 

К сожалению, это не работает. Я также попытался определить хоста вара следующим образом:

[integration] 
127.0.0.1 ansible_host="{{ integration_env }}" 

и имею integration_env, указанное в моем group_vars/все файла. В этом случае казалось, что он выполнял задачи локально, а не в желаемой среде.

Можно ли сделать что-то подобное? Я был бы открыт для всех новых способов сделать это. Основная цель - просто определить переменную хоста в файле var.

ответ

7

Это будет работать, если вы передадите integration переменную в качестве дополнительной переменной:

ansible-playbook -e integration=int60 myplaybook.yml 

Любые переменные, используемые в спектакле «заголовок», должны быть определены до анзибль разбирает пьес.

В вашем примере вы определяете integration как факты о хозяине. Факты определяются только на уровне задачи, а не на уровне игры.

Обновление: и вы можете использовать другие способы передачи переменных, а не только дополнительные вары. Например:

- hosts: "{{ lookup('env','DYN_HOSTS') }}" 

также будет работать.

+0

Спасибо за ваш быстрый ответ. Я видел такие решения, но это не сработает для меня, потому что я работаю с помощью jenkins job (и незаменимого плагина), который не позволяет передавать какую-либо дополнительную переменную. Кроме того, мне нужно будет изменить переменную интеграции в незадаваемой задаче, чтобы следующий прогон запустил другую среду. Знаете ли вы другие решения? – Vetemi

+0

Я обновил свой ответ другим примером. –

+0

Jenkins ansible plugin позволяет добавлять дополнительные переменные. Он скрыт под «расширенными» вариантами при создании шага Ansible в Jenkins. –

Смежные вопросы