Bagaimana Anda mendapatkan alamat IP host saat ini dalam sebuah peran?
Saya tahu Anda bisa mendapatkan daftar grup tempat host adalah anggota dan nama host dari host tetapi saya tidak dapat menemukan solusi untuk mendapatkan alamat IP.
Anda bisa mendapatkan nama host dengan menggunakan {{inventory_hostname}}
dan grup dengan menggunakan{{group_names}}
Saya telah mencoba hal-hal seperti {{ hostvars[{{ inventory_hostname }}]['ansible_ssh_host'] }}
danip="{{ hostvars.{{ inventory_hostname }}.ansible_ssh_host }}"
setup:
modul denganregister: allfacts
dan tampilkan dengan- debug: var=allfacts
gather_facts
harus agartrue
ini berfungsi. itu benar secara default tetapi seseorang dapat mengubahnya menjadi salah jika info tentang host tidak diperlukan.Anda bisa mendapatkan alamat IP dari
hostvars
, diktansible_default_ipv4
dan kunciaddress
dan alamat IPv6 masing-masing
Contoh pedoman:
sumber
Anda dapat menggunakan di template.j2 Anda
{{ ansible_eth0.ipv4.address }}
dengan cara yang sama seperti yang Anda gunakan{{inventory_hostname}}
.ps: Silakan merujuk ke blogpost berikut untuk mendapatkan informasi lebih lanjut tentang CARA MENGUMPULKAN INFORMASI TENTANG REMOTE HOSTS DENGAN FAKTA GATHERS YANG ANSIBLE .
'berharap itu akan membantu seseorang suatu hari nanti ッ
sumber
ens3
atauenp2s0
dan semacamnya. Anda hanya memiliki taruhan yang lebih baik jika Anda menggunakanansible_default_ipv4
dan jika tidak berfungsi, maka beralihlah kembali mencari beberapa default yang waras.Jika Anda menginginkan IP publik eksternal dan Anda berada di lingkungan cloud seperti AWS atau Azure, Anda dapat menggunakan modul ipify_facts :
Ini akan menempatkan IP publik ke dalam variabel
ipify_public_ip
.sumber
ipify_public_ip
variabel kosonginventory_hostname
adalah apa pun yang diatur dalam inventaris. Bisa jadi nama host seperti yang diatur dalam.ssh/config
.Cara lain untuk menemukan IP publik adalah dengan menggunakan
uri
modul:IP Anda akan masuk
ip_response.content
sumber
https://ipecho.net/plain
Perintah debug sederhana:
keluaran:
dapatkan alamat ip host:
sumber
http://docs.ansible.com/ansible/latest/plugins/lookup/dig.html
jadi di template, misal:
Catatan:
Tapi tetap melayani 99% (secara kiasan) kasus penggunaan.
sumber
ansible_host
bukan alamat IP dari host yang dimaksud?Biasa
ansible_default_ipv4.address
mungkin tidak seperti yang Anda pikirkan dalam beberapa kasus , gunakan:sumber
Potongan berikut akan mengembalikan ip publik dari mesin jarak jauh dan juga ip default (yaitu: LAN)
Ini akan mencetak ip dalam tanda kutip juga untuk menghindari kebingungan dalam menggunakan file konfigurasi.
sumber
Cukup gunakan
ansible_ssh_host
variabelsumber