2015-02-25 8 views
6

Wenn Sie die Vernetzung in der Mitte eines Spiels auf einem Ubuntu-Server (12.04 in meinem Fall) neu zu starten, müssen Sie nicht service verwenden können:ansible: restart Vernetzung auf Ubuntu

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

folgende Arbeiten auf die Befehlszeile, aber mit ansible (1.8.4) es Sperren Sie heraus:

command: ifdown eth0 && ifup eth0 

ifdown die Schnittstelle nimmt ab, aber ifup läuft nicht

Wie starte ich die Schnittstelle neu?

+0

Warum das? Für mich scheint es perfekt zum Thema zu sein. – udondan

+1

Was ist mit den Down-Stimmen und keine Kommentare, warum? – jonatan

+0

gab es einen Kommentar, der sich beschwerte, dass es ein Thema gewesen wäre. Der Kommentar wurde gelöscht, nicht die Down-Stimmen obwohl ... – udondan

Antwort

7

Die Lösung ist, den Befehl in einer neuen Shell auszuführen:

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

Sie können auch den Shell-Modul verwenden:

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

Warum können Sie nicht 'Shell' verwenden? – Hut8

+2

Sie können, aber es wird empfohlen, 'command' anstelle von' shell' zu verwenden (außer Shell ist explizit erforderlich) (http://docs.ansible.com/ansible/shell_module.html#notes). Ich habe meine Antwort mit der Shell-Modul-Version als Referenz aktualisiert. – jonatan

4

Ich würde empfehlen, 1 sec zwischen ifdown und ifup zu warten und Führen Sie ifup unabhängig vom Exit-Code von ifdown aus. Wahrscheinlich möchten Sie auch nicht jedes Mal, wenn Sie dieses Ansible-Playbook starten, das Netzwerk zurücksetzen, so dass eine "Wenn" -Bedingung dies verhindert: