2015-02-25 4 views
6

Если вам необходимо перезапустить сети в середине игры на сервере Ubuntu (12.04 в моем случае), вы не можете использовать service:анзибль: перезапуск сети на Ubuntu

# service networking restart 
stop: Job failed while stopping 
start: Job is already running: networking 

следующие работы по в командной строке, но с анзибль (1.8.4) он блокирует вас:

command: ifdown eth0 && ifup eth0 

ifdown сносит интерфейс, но ifup не работает

Как перезапустить интерфейс?

+0

Зачем? Для меня это, по-видимому, отлично по теме. – udondan

+1

Что с голосами и без комментариев, чтобы предложить почему? – jonatan

+0

был какой-то комментарий, жалуясь, что это было бы не по теме. Комментарий был удален, а не нисходящие голоса ... – udondan

ответ

7

Решение запустить команду в новой оболочке:

command: bash -c "ifdown eth0 && ifup eth0" 

Вы также можете использовать модуль оболочки:

shell: "ifdown eth0 && ifup eth0" 
+0

Почему вы не можете использовать 'shell'? – Hut8

+2

Вы можете, но рекомендуется использовать 'command' вместо' shell' [если явно не требуется оболочка] (http://docs.ansible.com/ansible/shell_module.html#notes). Я обновил свой ответ с версией модуля оболочки для справки. – jonatan

4

Я бы рекомендовал подождать 1 сек между ifdown и ifup и запустите ifup независимо от кода выхода из ifdown. Также вы, вероятно, не хотите запускать сеть сброса каждый раз, когда вы запускаете эту загружаемую книгу, поэтому когда условие предотвратит это:

- name: Restart all network interfaces except loopback device 
    shell: "ifdown --exclude=lo -a; sleep 1; ifup --exclude=lo -a" 
    when: configure_lxc_bridge|changed 
Смежные вопросы