如何更改ansible\u default\u ipv4?

如何更改ansible\u default\u ipv4?,ansible,ansible-facts,Ansible,Ansible Facts,我想将ansible_default_ipv4更改为指向eth1而不是eth0。我可以在playbook中或通过--extra-vars选项执行此操作吗?ip-4路由获取8.8.8.8以获取默认的ipv4接口。您可以将eth1设置为默认路由,它将返回该路由 或者您可以使用 PS:使用set\u fact覆盖ansible\u default\u ipv4事实,但由于缓存、作用域等原因,它有自己的缺陷,另一个选项总是显式引用接口。 不同的云提供商有不同的约定将私有(通常为10.x.y.z)管理网络

我想将ansible_default_ipv4更改为指向eth1而不是eth0。我可以在playbook中或通过--extra-vars选项执行此操作吗?

ip-4路由获取8.8.8.8
以获取默认的ipv4接口。您可以将
eth1
设置为默认路由,它将返回该路由

或者您可以使用


PS:使用
set\u fact
覆盖
ansible\u default\u 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\u default\u 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\u默认值\u ipv4

当您想要引用专用或公用ip时,可以使用这些ip访问8.8.8.8(通常是internet)


顺便说一句,我尝试了Eron Wright关于路由添加的建议-net 8.8.8.8网络掩码255.255.255.255 eth1。它似乎对我不起作用,我无法ping google(尽管ping任何其他公共ip都有效)。

ip-4 route get 8.8.8
在我的服务器上不起作用

我创作了这部作品

-名称:查找默认ipv4。。。这有点像黑客。
shell:ifconfig$(路由| grep default | awk'{print$(NF)}')| grep'inet'| awk'{print$2}'
注册:ipv4\u地址


现在我可以在任何需要的地方使用ipv4地址了

我做了一个任务,在/etc/sysconfig/network中添加了一个默认网关,并重新启动了网络,成功了。谢谢。如果您的默认路由不可协商,可以覆盖到8.8.8.8的路由,具体来说:
sudo route add-net 8.8.8.8 netmask 255.255.255.255 eth1
这对我不起作用,因为它试图索引到字符串本身。根据Ansible,您需要指定为{{hostvars[inventory\u hostname]['Ansible\u'+iface]['ipv4']['address']}},
ifconfig
route
都不是默认安装在现代Linux系统上的,除非某些遗留应用程序请求它们,因为它们已经过时。你应该为他们的缺席做好准备。
ip地址show$(ip r | grep default | awk'{print$(NF)}')| grep'inet'{print$2}'| awk'{print$2}'| cut d'/'-f1