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