2017-08-27 33 views
6

arasındaki fark nedir: yanıtlayıcı 'envanter konak dosyasında yapılandırılanbulabildiğim tüm <a href="http://docs.ansible.com/ansible/latest/playbooks_variables.html#magic-variables-and-how-to-access-information-about-other-hosts" rel="noreferrer">the docs</a> bu oldu inventory_hostname ve ansible_hostname

Ayrıca, inventory_hostname hostname adıdır. Bu, keşfedilen ana makine adı ansible_hostname veya diğer gizemli nedenlere güvenmek istemediğinizde yararlı olabilir. Uzun bir FQDN'niz varsa, inventory_hostname_short da alanın geri kalanı olmadan ilk döneme kadar olan kısmı içerir.

Ansible'da inventory_hostname ve ansible_hostname değişkenleri arasında herhangi bir gerçek fark var mı? Eğer öyleyse, hangisini kullanmalıyım?

cevap

10
  • inventory_hostname - yanıtlayıcı 'envanter dosyasındaki yapılandırılmış gibi (örn: /etc/ansible/hosts). Bu, bir IP adresi veya DNS tarafından çözümlenebilen bir ad olabilir.
  • ansible_hostname - ansible tarafından keşfedildiği gibi. Ansible ssh ev sahibi ve bazı gerçekleri toplar. Bunun bir parçası olarak, ansible_hostname'da saklanan ana bilgisayar adını da keşfeder.

Hangisini kullanmalısınız? hostvars, her bir envanter ana bilgisayarı için bir girdiye sahip olan bir sözlüktür. Ana bilgisayar bilgilerine erişmek istiyorsanız, inventory_hostname'u kullanmanız gerekir. Ana makinede yapılandırılmış olarak konakçının adını kullanmak/yazdırmak istiyorsanız, büyük olasılıkla IP envanter dosyasında kullanılacağından, ansible_hostname kullanmalısınız. Önemli

: ansible_hostname kullanmak için, gerçekleri toplamak gerekir:

gather_facts: true 

Aksi takdirde, ansible_hostname tanımlanmamış olduğunu belirten bir ileti alırsınız.

"ansible_hostname": "VARIABLE IS NOT DEFINED!" 

farklılıkları anlamak için bir ev sahibi ile bu deneyin

tasks: 
    - debug: var=inventory_hostname 
    - debug: var=ansible_hostname 
    - debug: var=hostvars