Posso definir uma variável/lista em meu manual principal ( main.yml
) ou em minhas variáveis de grupo ( group_vars/all.yml
), mas as main.yml
variáveis têm precedência sobre as variáveis de grupo.
group_vars/all.yml
my_list:
- "item 1"
- "item 2"
main.yml
vars:
my_list:
- "item 3"
- "item 4"
Gostaria de combinar os dois, mas não tenho certeza de como fazê-lo. Desejado:
my_list: ['item 1', 'item 2', 'item 3', 'item 4']
Eu tentei adicionar à lista. Por exemplo, se main.yml
pudesse ver group_vars
antes de substituir (mas este exemplo gera um erro).
my_list:
- "{{ my_list }}"
- "item 3"
- "item 4"
Estou fazendo isso porque estou usando código de outro repositório. Não quero fazer alterações no código, mas quero atualizar (não substituir) a lista de variáveis.
Você não pode fazer exatamente o que deseja: você só pode ter uma variável com um determinado nome; não há como fundir
my_list
um lugar commy_list
outro. Você pode substituirmy_list
fazendo algo como:Supondo que
group_vars/all.yaml
contenha:Em seguida, executar o manual acima produzirá como saída:
Veja os plug-ins:
Esses plug-ins de pesquisa podem ajudá-lo a conseguir o que deseja. Por exemplo, crie variáveis com o prefixo comum my_list_ no group_vars
e no manual
A pesquisa varnames obtém a lista das variáveis que correspondem ao padrão e vars obtém os valores das variáveis
Esta estrutura é muito flexível. Por exemplo, dado o inventário
Criar host_vars
Então, a tarefa abaixo (em todos os hosts)
dá (resumido)
Você pode adicionar uma lista temporária com o escopo de uma única tarefa
dá (resumido)
Exemplo de um manual completo para teste