2016-08-10 5 views
0

С незаметным движением все работает на клиенте, а задачи работают как localhost. Я попытался установить файл фиктивного инвентаря с переменной, как показано ниже. В зависимости от имени хоста, я хочу, чтобы переменные были установлены соответствующим образом. Я думаю, что моя проблема заключается в том, что полное доменное имя используется неправильно.Как использовать динамические переменные с Ansible pull?

inventoryfile

[web_servers] 
myweb001.phl.domain.local 
myweb004.phl.domain.local 
myweb005.phl.domain.local 

[perl_servers] 
myperl011.phl.domain.local 
myperl001.phl.domain.local 
myperl010.phl.domain.local 

[web_servers:vars] 
server_type=web 
some_random_variable=20 

[perl_servers:vars] 
server_type=perl 
some_random_variable=40 

задача

- hosts: localhost 

tasks: 
    - debug: var={{ server_type }} 

выход

PLAY [localhost] *************************************************************** 

TASK [setup] ******************************************************************* 
ok: [localhost] 

TASK [debug] ******************************************************************* 
fatal: [localhost]: FAILED! => {"failed": true, "msg": "'server_type' is undefined"} 

NO MORE HOSTS LEFT ************************************************************* 
to retry, use: --limit @test.retry 

PLAY RECAP ********************************************************************* 
localhost     : ok=1 changed=0 unreachable=0 failed=1 

ответ

1

Если вы ведете свой сборник пьес с hosts: localhost, вы можете попробовать следующее:

инвентарь

localhost ansible_connection=local 

[web_servers] 
[web_servers:vars] 
server_type=web 

[perl_servers] 
[perl_servers:vars] 
server_type=perl 

сборник пьес

- hosts: localhost 
    tasks: 
    - group_by: key=web_servers 
     when: "'myweb' in ansible_hostname" 
    - group_by: key=perl_servers 
     when: "'myperl' in ansible_hostname" 
    - debug: var=server_type 

Вместо group_by и файл инвентаризации, вы можете использовать include_vars динамически загружать определенные переменные файлы, основанные на ansible_hostname или некоторых других критериев.

+0

Ну, черт побери, это отлично работает! Большое спасибо! – luckytaxi