example - accediendo a la variable de host del inventario en el libro de juego ansible
ansible playbook example (4)
Estoy usando ansible 2.1. Tengo el siguiente archivo de host de inventario y un rol que está siendo llamado por un juego que necesita acceso a la variable del archivo de host. Cualquier idea sobre cómo acceder a ella (actualmente obteniendo un error):
archivo host
[test1]
test-1 ansible_ssh_host=abc.def.ghi.jkl ansible_ssh_port=1212
[test2]
test2-1 ansible_ssh_host=abc.def.ghi.mno ansible_ssh_port=1212
[test3]
test3-1 ansible_ssh_host=abc.def.ghi.pqr ansible_ssh_port=1212
test3-2 ansible_ssh_host=abc.def.ghi.stu ansible_ssh_port=1212
[all:children]
test1
test2
test3
Rol He intentado acceder al rol de la siguiente manera:
{{ hostvars.ansible_ssh_host }}
&&
{{ hostvars.test1.ansible_ssh_host }}
Estoy tratando de acceder a ansible_ssh_host en la sección test1.
Error
fatal: [localhost]: FAILED! => {"failed": true, "msg": "''ansible.vars.hostvars.HostVars object'' has no attribute ''ansible''"}
Debes poder usar el nombre de la variable directamente
ansible_ssh_host
O puede ir a través de hostvars sin tener que especificar el host literalmente usando la variable mágica inventory_hostname
hostvars[inventory_hostname].ansible_ssh_host
Estás en el camino correcto sobre hostvars
.
Esta variable mágica se utiliza para acceder a información sobre otros hosts.
hostvars
es un hash con nombres de host de inventario como claves.
Para acceder a los campos de cada host, use hostvars[''test-1'']
, hostvars[''test2-1'']
, etc.
ansible_ssh_host
está en deprecated a favor de ansible_host
desde 2.0.
Por lo tanto, primero debe eliminar "_ssh" de los argumentos de los hosts de inventario (es decir, para convertirse en "ansible_user", "ansible_host" y "ansible_port"), luego en su rol, llámelo con:
{{ hostvars[''your_host_group''].ansible_host }}
También he encontrado una forma sencilla y agradable de abordar las voces de host directamente en uno de los problemas de Github de Ansible
Parece que también puedes hacer esto:
- debug:
msg: "{{ ansible_ssh_host }}"
[host_group]
host-1 ansible_ssh_host=192.168.0.21 node_name=foo
host-2 ansible_ssh_host=192.168.0.22 node_name=bar
[host_group:vars]
custom_var=asdasdasd
Puede acceder a los grupos de host mediante:
{{ hostvars[''host_group''].custom_var }}
Si necesita un valor específico de un host específico, puede utilizar:
{{ hostvars[groups[''host_group''][0]].node_name }}