ansible 獲取內網 IP


問題:

  由於線上機器是多家廠商的且網卡會有公網IP和內網IP都綁定情形,並且有些服務必須保證監聽內網IP,但在host清單文件配置中有可能是內網IP,也有可能是公網IP。

  使用:變量 {{ ansible_all_ipv4_addresses }}  會獲取機器所有IP,但沒有排序

  使用:  變量  {{ ansible_default_ipv4['address'] }} 則是網卡默認IP,經驗證此時有可能是內網IP也有可能是公網IP

解決:

    安裝:netaddr 模塊

yum install -y python-netaddr
pip3 install netaddr 

 對變量 ansible_all_ip_addresses  使用 ipaddr 過濾 

{{ ansible_all_ipv4_addresses | ipaddr('private') | first }}

or

{{ ansible_all_ipv4_addresses | ipaddr('10.0.0.0/8') | first }}

 

參考:

https://docs.ansible.com/ansible/2.3/playbooks_filters_ipaddr.html

https://docs.ansible.com/ansible/2.3/playbooks_filters.html#filters

https://docs.ansible.com/ansible/latest/user_guide/playbooks_filters_ipaddr.html

https://stackoverflow.com/questions/34730239/how-to-get-host-private-network-address-in-ansible

https://www.cnblogs.com/carriezhangyan/p/10950970.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM