Acabei usando um plug-in de pesquisa em vez do inventário para recuperar minhas variáveis.
Mais informações sobre pesquisas: link
É possível definir variáveis de host para todos os hosts usando um inventário dinâmico?
Atualmente, posso produzir um inventário que me permite atribuir variáveis a hosts específicos, mas o que eu quero alcançar é algo assim:
{
"_meta": {
"hostvars": {
"all": {
"my_global_random_variable": "global_random_value"
}
}
},
"web_servers": {
"children": [],
"hosts": [
"web_server1",
"web_server2"
],
"vars": {}
},
"database_servers": {
"children": [],
"hosts": [
"database_server1"
],
"vars": {}
}
}
Qual deve me permitir acessar o "my_global_random_variable" de qualquer contexto como se eu tivesse definido essa variável em um arquivo vars.
Acabei usando um plug-in de pesquisa em vez do inventário para recuperar minhas variáveis.
Mais informações sobre pesquisas: link
Variáveis definidas por dynamic inventory
são inventory variables
. Quando uma variável é definida em vários locais, Ansible define o valor a seguir precedência variável :
role defaults [1] inventory vars [2] inventory group_vars inventory host_vars playbook group_vars playbook host_vars host facts play vars play vars_prompt play vars_files registered vars set_facts role and include vars block vars (only for tasks in block) task vars (only for the task) extra vars (always win precedence)
Variáveis definidas no inventário têm uma baixa precendência relativa. Portanto, não há necessidade de usar dynamic inventory
para conseguir isso. Basta definir a variável, por exemplo, no nível da função.
Eu queria fazer isso e parece funcionar com o seguinte (adaptado para o seu exemplo):
{
"all": {
"vars": {
"my_global_random_variable": "global_random_value"
}
},
"web_servers": {
"children": [],
"hosts": [
"web_server1",
"web_server2"
],
"vars": {}
},
"database_servers": {
"children": [],
"hosts": [
"database_server1"
],
"vars": {}
}
}
Possivelmente não é uma prática recomendada, mas mantém as coisas simples.
Tags ansible