playbook example ansible ansible-playbook ansible-2.x ansible-inventory

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 }}



[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 }}