A documentação do Ansible fornece um exemplo aqui sobre como devolver um inventário no formato JSON:
{
"databases" : {
"hosts" : [ "host1.example.com", "host2.example.com" ],
"vars" : {
"a" : true
}
},
"webservers" : [ "host2.example.com", "host3.example.com" ],
"atlanta" : {
"hosts" : [ "host1.example.com", "host4.example.com", "host5.example.com" ],
"vars" : {
"b" : false
},
"children": [ "marietta", "5points" ]
},
"marietta" : [ "host6.example.com" ],
"5points" : [ "host7.example.com" ]
}
e adicionando abaixo disso, que os hostvars para um único host podem ser configurados usando:
{
# results of inventory script as above go here
# ...
"_meta" : {
"hostvars" : {
"moocow.example.com" : { "asdf" : 1234 },
"llama.example.com" : { "asdf" : 5678 },
}
}
}
Agora estou usando o Ansible 1.9.1 e gostaria de usar hostvars ou hosts individuais. No entanto, alguns dos hostvars seguem um padrão. O mais destacado ansible_ssh_host
seguirá um padrão *.mydomain.tld
, lá o curinga é substituído pelo nome abreviado do host.
Existe uma maneira de encurtar o JSON dando um padrão que será renderizado como um modelo Jinja2, por exemplo? Ajustando parte do exemplo acima:
{
"atlanta" : {
"hosts" : [ "host1", "host4", "host5" ],
"vars" : {
"ansible_ssh_host" : "{{hostname}}.example.com",
"b" : false
}
}
Algo como possível com o formato que o Ansible espera? Eu não encontrei documentação mencionando isso.