Ansible:在 Ubuntu 重新启动网络
Ansible: restart networking on Ubuntu
如果您需要在 Ubuntu 服务器(在我的例子中是 12.04)上播放时重新启动网络,您不能使用 service
:
# service networking restart
stop: Job failed while stopping
start: Job is already running: networking
以下在命令行上有效,但使用 Ansible (1.8.4) 时它会将您拒之门外:
command: ifdown eth0 && ifup eth0
ifdown
关闭接口,但 ifup
不会 运行
如何重启界面?
解决方法是运行命令在一个新的shell:
command: bash -c "ifdown eth0 && ifup eth0"
您还可以使用 shell 模块:
shell: "ifdown eth0 && ifup eth0"
我建议在 ifdown 和 ifup 之间等待 1 秒,运行 ifup 独立于 ifdown 的退出代码。此外,您可能不希望 运行 每次 运行 这个 ansible playbook 时都重置网络,所以 when 条件会阻止这种情况:
- name: Restart all network interfaces except loopback device
shell: "ifdown --exclude=lo -a; sleep 1; ifup --exclude=lo -a"
when: configure_lxc_bridge|changed
如果您需要在 Ubuntu 服务器(在我的例子中是 12.04)上播放时重新启动网络,您不能使用 service
:
# service networking restart
stop: Job failed while stopping
start: Job is already running: networking
以下在命令行上有效,但使用 Ansible (1.8.4) 时它会将您拒之门外:
command: ifdown eth0 && ifup eth0
ifdown
关闭接口,但 ifup
不会 运行
如何重启界面?
解决方法是运行命令在一个新的shell:
command: bash -c "ifdown eth0 && ifup eth0"
您还可以使用 shell 模块:
shell: "ifdown eth0 && ifup eth0"
我建议在 ifdown 和 ifup 之间等待 1 秒,运行 ifup 独立于 ifdown 的退出代码。此外,您可能不希望 运行 每次 运行 这个 ansible playbook 时都重置网络,所以 when 条件会阻止这种情况:
- name: Restart all network interfaces except loopback device
shell: "ifdown --exclude=lo -a; sleep 1; ifup --exclude=lo -a"
when: configure_lxc_bridge|changed