Variável de escopo de variáveis ansíveis

1

Tenho uma configuração ansible semelhante a esta

inventories/
    sandbox1
    group_vars/
       all
       sandbox1
pb/
    pb1/
        run_pb1.yml

Tenho papéis e outras coisas também, mas acho que isso é suficiente para capturar a essência do que preciso fazer.

Eu tenho uma variável foo que estou definindo dentro de inventários / group_vars / all E inventários / group_vars / sandbox1

Agora, meu problema é que sempre que eu chamo

ansible-playbook -i inventories/sandbox1 pb/pb1/run_pb1.yml

O manual é executado com o valor de foo  que está contido em inventários / group_vars / all ... em outras palavras, foo não está sendo retirado dos inventários / group_vars / sandbox1

Esta é a maneira correta de implementar uma variável específica do inventário? Eu quero evitar a criação de mulitple playbooks para algo tão simples como uma mudança de variável ... ou seja, eu não quero fazer algo assim dentro do arquivo "all"

default_foo: bar
sandbox1_foo: baz

juntamente com vários livros de exercícios, o que seria o mesmo, exceto pela variável que eles referenciam.

Existe uma maneira de fazer o que estou perguntando?

    
por Zack 15.06.2016 / 18:49

1 resposta

0

Variáveis do host que sobrepõem variáveis de grupo (consulte docs ), mas você deve defini-los no diretório /host_vars . Então, por exemplo, usando a seguinte configuração:

.
├── group_vars
│   └── all.yml # foo: var_from_all
├── hosts
├── host_vars
│   └── host1.yml # foo: var_from_host1
└── test.yml

Você receberá:

$ ansible-playbook -i hosts test.yml 

PLAY [host1,host2] *************************************************************

TASK [debug] *******************************************************************
ok: [host1] => {
    "foo": "var_from_host1"
}
ok: [host2] => {
    "foo": "var_from_all"
}
    
por 30.07.2016 / 19:10