Здравствуйте. Внутри компании используются собственные имена хостов, типа dev-nginx, dev-memcached и т.д.
Создал dynamic inventory, который возвращает примерно такой список:
{
"_meta": {
"hostvars": {
"dev-nginx": {
"ansible_ssh_host": "ip-192-168-1-1.internal.tld",
"ec2_private_dns_name": "ip-192-168-1-1.internal.tld"
},
"dev-memcached": {
"ansible_ssh_host": "ip-192-168-1-2.internal.tld",
"ec2_private_dns_name": "ip-192-168-1-2.internal.tld"
},
}
}
....
"dev-nginx": [
"ip-192-168-1-1.internal.tld"
],
"dev-memcached": [
"ip-192-168-1-2.internal.tld"
],
При попытке воспроизвести простейший playbook:
---
- host: dev-nginx
- name echo memcached
- shell: echo {{ hostvars[groups['dev-memcached']][0]['ansible_fqdn'] }}
Падает с ошибкой
fatal: [ip-192-168-1-1.internal.tld] => One or more undefined variables: ansible.runner.HostVars object has no element [u'ip-192-168-1-2.internal.tld']
В _meta.hostvars так же добавлял ip-192-168-1-2.internal.tld, но не помогло. Как всё таки заставить playbook заработать? Или я неправильно ip-192-168-1-2.internal.tld добавлял?