ansible - उत्तर देने योग्य: वर्तमान लक्ष्य होस्ट का IP पता प्राप्त करें




ansible-facts ansible-template (5)

आप hostvars से आईपी एड्रेस, hostvars ansible_default_ipv4 और कुंजी address प्राप्त कर सकते हैं

hostvars[inventory_hostname]['ansible_default_ipv4']['address']

और IPv6 पता क्रमशः

hostvars[inventory_hostname]['ansible_default_ipv6']['address']

एक उदाहरण प्लेबुक:

---
- hosts: localhost
  tasks:
    - debug: var=hostvars[inventory_hostname]['ansible_default_ipv4']['address']
    - debug: var=hostvars[inventory_hostname]['ansible_default_ipv6']['address']

आपको एक भूमिका में वर्तमान होस्ट का आईपी पता कैसे मिलता है?

मुझे पता है कि आप उन समूहों की सूची प्राप्त कर सकते हैं जो होस्ट होस्ट के सदस्य और होस्टनाम हैं, लेकिन मैं आईपी एड्रेस प्राप्त करने के लिए एक समाधान खोजने में असमर्थ हूं।

आप {{inventory_hostname}} और समूह {{group_names}} का उपयोग करके होस्टनाम प्राप्त कर सकते हैं

मैंने {{ hostvars[{{ inventory_hostname }}]['ansible_ssh_host'] }} और ip="{{ hostvars.{{ inventory_hostname }}.ansible_ssh_host }}"


आप अपने टेम्पलेट में उपयोग कर सकते हैं {{ ansible_eth0.ipv4.address }} उसी तरह जिस तरह आप {{inventory_hostname}} उपयोग करते हैं।

ps: कृपया निम्नलिखित ब्लॉगपोस्ट के बारे में अधिक जानकारी के लिए नीचे दिए गए जानकारी के बारे में अधिक जानकारी प्राप्त करने के लिए ANSIBLE GATHERS FACTS का उपयोग करें

'उम्मीद है कि यह किसी को एक दिन मदद मिलेगी someone


यदि आप बाहरी सार्वजनिक आईपी चाहते हैं और आप AWS या Azure जैसे क्लाउड वातावरण में हैं, तो आप ipify_facts मॉड्यूल का उपयोग कर सकते हैं:

# TODO: SECURITY: This requires that we trust ipify to provide the correct public IP. We could run our own ipify server.
- name: Get my public IP from ipify.org
  ipify_facts:

यह सार्वजनिक IP को चर ipify_public_ip


सभी पतों की एक सूची ansible_all_ipv4_addresses , ansible_all_ipv4_addresses में एक डिफ़ॉल्ट पते पर ansible_default_ipv4.address

---
- hosts: localhost
  connection: local
  tasks:
    - debug: var=ansible_all_ipv4_addresses
    - debug: var=ansible_default_ipv4.address

फिर प्रत्येक नेटवर्क इंटरफ़ेस को असाइन किए गए पते हैं ... ऐसे मामलों में आप सभी तथ्यों को प्रदर्शित कर सकते हैं और उस मूल्य को पा सकते हैं, जिसका आप उपयोग करना चाहते हैं।


http://docs.ansible.com/ansible/latest/plugins/lookup/dig.html

इसलिए टेम्पलेट में, उदाहरण के लिए:

{{ lookup('dig', ansible_host) }}

टिप्पणियाँ:

  • चूंकि इन्वेंट्री चेक में न केवल डीएनएस नाम का उपयोग किया जा सकता है, अगर यह आईपी पहले से बेहतर नहीं है
  • जाहिर है कि यह रसीद अप्रत्यक्ष मेजबान विशिष्टताओं के लिए काम नहीं करेगी (जैसे जंप मेजबानों का उपयोग करना, उदाहरण के लिए)

लेकिन फिर भी यह उपयोग के मामलों का 99% (आलंकारिक रूप से बोलना) कार्य करता है।





ansible-template