首页 > 解决方案 > 如何从公共切换到私人

问题描述

- name: Search1
  become: no   
  delegate_to: localhost   
  command: "../home/ev/search.py {{ item }}"   
  register: name   
  with_items: "{{ansible_all_ipv4_addresses|ipaddr('public') }}"   
  changed_when: false

我试图在我们的库存中执行上面的剧本,并且只在具有公共 IP 的服务器上工作,但它没有在诸如 VPS/AWS 等在其接口上定义了私有 IP 的服务器上工作。

有没有办法说主机是否有私有IP然后使用这个:

- name: Search2
  become: no   
  delegate_to: localhost   
  command: "../home/ev/search.py {{ item }}"   
  register: name   
  with_items: "{{INVENTORY_HOSTNAME|ipaddr('public') }}"   
  changed_when: false

标签: ansible

解决方案


我能够使用 when: ansible_interface|length > 5 在接口之间切换。我有许多服务器的接口超过 5 个 + 绑定。我在服务器上只有 1 个私有接口。


推荐阅读