2014-04-10 16 views
24

Avere un file di inventario come:Ansible - Accesso inventario alias

[my_hosts] 
my_host ansible_ssh_host=123.123.123.123 
my_host2 ansible_ssh_host=234.234.234.234 

voglio raccogliere alcune informazioni di debug nei miei modelli.

  • Come si accede alla variabile dell'alias in un playbook/modello? cioè .:

    debug: msg=Myhost is {{ ansible_host_alias }} 
    # Myhost is my_host 
    # Myhost is myhost2 
    

ho cercato di raccogliere i fatti utilizzando ansible -m setup my_host. Le variabili ansible_hostname, HOSTNAME e HOST contengono il nome host della macchina, ad esempio echo $HOSTNAME che differisce dal mio alias ansibile.

+1

essere consapevoli del fatto che 'ansible_ssh_host' è stato deprecato in favore di' ansible_host' in v2.0. ([Docs] (http://docs.ansible.com/ansible/intro_inventory.html#hosts-and-groups)). Allo stesso modo 'ansible_ssh_user' e' ansible_ssh_port' diventano 'ansible_user' e' ansible_port'. Queste variabili più brevi vengono ignorate, senza preavviso, nelle versioni precedenti di Ansible. – Kyr

risposta

12

Si può semplicemente utilizzare {{ ansible_ssh_host }} Ad esempio:

inventario:

[my_hosts] 
my_host ansible_ssh_host=127.0.0.1 my_host_alias=my_host 

Playbook:

--- 
- name: My Good playbook 
    user: ubuntu 
    hosts: all 

    tasks: 
    - name: My message 
     debug: msg="Myhost is {{ ansible_ssh_host }}" 

    - name: My message bogus 
     debug: msg="My host alias is {{ my_host_alias }}" 

Esecuzione:

$ ansible-playbook -i inventory play.yml 

PLAY [My Good playbook] ******************************************************* 

GATHERING FACTS *************************************************************** 
ok: [my_host] 

TASK: [My message] ************************************************************ 
ok: [my_host] => { 
    "msg": "Myhost is 127.0.0.1" 
} 

TASK: [My message bogus] ****************************************************** 
ok: [my_host] => { 
    "msg": "My host alias is my_host" 
} 

PLAY RECAP ******************************************************************** 
my_host     : ok=3 changed=0 unreachable=0 failed=0 
+0

Grazie, ma voglio ottenere l'alias (quindi l'output dovrebbe essere 'my_host') e non l'indirizzo IP. Lo sfondo è: sto cercando di integrare l'infrastruttura esistente con ansible e ho solo gli indirizzi IP. In alcune attività sto raccogliendo informazioni sui server (scrivendo statistiche nei template) e quindi vorrei mettere l'alias nel template – ProfHase85

+0

Controlla la mia modifica usa solo una variabile 'my_host_alias' – Rico

+0

Grazie, il problema di questa soluzione è la sua ridondanza: Sto definendo lo pseudonimo due volte (ecco perché volevo sapere se esiste una variabile ansibile incorporata per l'alias, ma sembra che non ci sia nulla di simile) – ProfHase85

Problemi correlati