В Ansible динамической инвентаризации JSON я могу «рендерить» hostvars на основе имени хоста?

Документация Ansible дает пример здесь о том, как вернуть инвентарь в формате 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" ] } 

и добавив ниже, что хосты для одного хоста могут быть установлены с использованием:

 { # results of inventory script as above go here # ... "_meta" : { "hostvars" : { "moocow.example.com" : { "asdf" : 1234 }, "llama.example.com" : { "asdf" : 5678 }, } } } 

Теперь я использую Ansible 1.9.1 и хочу использовать хосты или отдельные хосты. Однако некоторые из хостваров следуют шаблону. Наиболее заметно ansible_ssh_host будет следовать шаблону *.mydomain.tld , там подстановочный знак заменяется коротким именем хоста.

Есть ли способ сократить JSON, указав шаблон, который будет отображаться как шаблон Jinja2, например? Регулировка части приведенного выше примера:

 { "atlanta" : { "hosts" : [ "host1", "host4", "host5" ], "vars" : { "ansible_ssh_host" : "{{hostname}}.example.com", "b" : false } } 

Что-нибудь подобное в формате Ansible ожидает? Я не нашел документацию, упоминающую об этом.

В этом случае вы можете использовать магические переменные inventory_hostname .

 { "atlanta" : { "hosts" : [ "host1", "host4", "host5" ], "vars" : { "ansible_ssh_host" : "{{inventory_hostname}}.example.com", "b" : false } }