你如何改变ansible_default_ipv4?
How do you change ansible_default_ipv4?
我想将 ansible_default_ipv4 更改为指向 eth1 而不是 eth0。我可以在剧本中或通过 --extra-vars 选项执行此操作吗?
ansible uses command ip -4 route get 8.8.8.8
to get the default ipv4 interface. You can change your ip/routing tables 使 eth1
成为默认路由,它会 return 它。
或者您可以使用 custom fact。
PS:使用 set_fact
来 覆盖 ansible_default_ipv4
事实,但由于缓存、作用域、. ..
另一种选择是始终明确引用您的界面。
不同的云提供商有不同的约定天气将私有(通常 10.x.y.z)管理网络放在 eth0 或 eth1 上。
而不是引用
ansible_default_ipv4["address"]
您可以随时定义您想要的 iface(在 group_vars/all 中说)
iface: eth0
并在任务中将其引用为
{{ 'ansible_'+iface['ipv4']['address'] }}
一个简单的 grep 将显示所有参考。对您的项目进行全局查找和替换将使您可以更改此设置。
grep -RH ansible_default_ipv4 .
然后当您想要切换云提供商时,您只需根据需要调整 iface。
如果您喜欢更简洁、更明确的内容,请定义
private_iface: eth0 #switch eth0,eth1 depending on your provider.
public_iface: eth1
private_host_ipv4: "{{ 'ansible_'+private_iface['ipv4']['address'] }}"
public_host_ipv4: "{{ 'ansible_'+public_iface['ipv4']['address'] }}"
并且只使用
ansible_default_ipv4
当您想引用私人或 public 用于访问 8.8.8.8(一般互联网)的 ip 时。
顺便说一句,我尝试了 Eron Wright 关于路由添加 -net 8.8.8.8 网络掩码 255.255.255.255 eth1 的建议。它似乎对我不起作用,我无法 ping google(尽管 ping 任何其他 public ip 有效)。
ip -4 route get 8.8.8.8
在我的服务器上不工作。
我创造了这个解决方案。
- name: find default ipv4... this is a bit of a hack.
shell: ifconfig $(route | grep default | awk '{print $(NF)}') | grep 'inet' | awk '{ print }'
register: ipv4_address
现在我可以在任何需要的地方使用 ipv4_address
!
我想将 ansible_default_ipv4 更改为指向 eth1 而不是 eth0。我可以在剧本中或通过 --extra-vars 选项执行此操作吗?
ansible uses command ip -4 route get 8.8.8.8
to get the default ipv4 interface. You can change your ip/routing tables 使 eth1
成为默认路由,它会 return 它。
或者您可以使用 custom fact。
PS:使用 set_fact
来 覆盖 ansible_default_ipv4
事实,但由于缓存、作用域、. ..
另一种选择是始终明确引用您的界面。 不同的云提供商有不同的约定天气将私有(通常 10.x.y.z)管理网络放在 eth0 或 eth1 上。
而不是引用
ansible_default_ipv4["address"]
您可以随时定义您想要的 iface(在 group_vars/all 中说)
iface: eth0
并在任务中将其引用为
{{ 'ansible_'+iface['ipv4']['address'] }}
一个简单的 grep 将显示所有参考。对您的项目进行全局查找和替换将使您可以更改此设置。
grep -RH ansible_default_ipv4 .
然后当您想要切换云提供商时,您只需根据需要调整 iface。
如果您喜欢更简洁、更明确的内容,请定义
private_iface: eth0 #switch eth0,eth1 depending on your provider.
public_iface: eth1
private_host_ipv4: "{{ 'ansible_'+private_iface['ipv4']['address'] }}"
public_host_ipv4: "{{ 'ansible_'+public_iface['ipv4']['address'] }}"
并且只使用
ansible_default_ipv4
当您想引用私人或 public 用于访问 8.8.8.8(一般互联网)的 ip 时。
顺便说一句,我尝试了 Eron Wright 关于路由添加 -net 8.8.8.8 网络掩码 255.255.255.255 eth1 的建议。它似乎对我不起作用,我无法 ping google(尽管 ping 任何其他 public ip 有效)。
ip -4 route get 8.8.8.8
在我的服务器上不工作。
我创造了这个解决方案。
- name: find default ipv4... this is a bit of a hack.
shell: ifconfig $(route | grep default | awk '{print $(NF)}') | grep 'inet' | awk '{ print }'
register: ipv4_address
现在我可以在任何需要的地方使用 ipv4_address
!