2015-02-24 21 views
5

Çalışmakta olan sunucunun kısa adını bulmaya çalışıyorum.ansible, envanter_hostname alamıyor

ben jinja2 içinde bu var:

ServerAlias graphite.{{ hostvars[inventory_hostname] }} 
ServerAlias graphite.{{ hostvars[inventory_hostname] }}.{{dc}}.{{subnet}} 

yukarıda sadece yerine sadece kısa adının gerçeklerin bütün topak döküyor. Ne Kullanmak istediğiniz sadece {{ inventory_hostname }} (veya kısa adı için {{ inventory_hostname_short }}) 'dir

graphite.experimental.com dc=lv1 subnet=coupons.lan 

cevap

11

:

Bu gibi hosts.yaml bir şey.

hostvars nesnesi, Ansible'ın bildiği her ana bilgisayarın değişkenlerine erişmenin bir yoludur. Yani hostvars[inventory_hostname] aktüel ev sahibi hakkında bilinen tüm gerçekleri içeren nesneyi verecektir hostvars['foo'] size vb konak 'foo' hakkında bilinen tüm gerçekleri içeren nesneyi

sen 'db_servers denilen ana bir grup olduğunu varsayalım verecek 've şablondaki tüm bu hostların IP adreslerinin bir listesini oluşturmak istediniz. İşte bu şekilde:

{% for host in groups['db_servers'] %} 
    {{ hostvars[host]['ansible_eth0']['ipv4']['address'] }} 
{% endfor %} 
+1

bunu nasıl yapacağınızı {{ansible_hostname}} kullanmamı sağladı. Teşekkür ederim! –