2017-02-02 2 views
1

Ich versuchte vor kurzem, den rpmfusion-freien Repo mit ansible auf einem entfernten Wirt zu installieren, der rhel läuft. Plötzlich waren die Server nicht mehr erreichbar.Ansible yum: Schleife über Spiegel, Halt auf Erfolg

Der PC ansible läuft auf Ubuntu 16.10 mit Laufen:

$> ansible --version                            
    ansible 2.2.1.0 
    config file = 
    configured module search path = Default w/o overrides 

Ich beschloss, das Problem zu lösen, indem Sie ansible eine Liste des Spiegels des RPMFusion Repo iterieren, und die erste Verwendung, das funktioniert , aka Looping über die Liste der Spiegel, und auf Erfolg stoppen. Hier

ist der Code, wie es vorher war:

- name: Install RPM-Fusion free 
    yum: 
    name: http://download1.rpmfusion.org/free/el/updates/6/i386/rpmfusion-free-release-6-1.noarch.rpm 
    state: present 
    disable_gpg_check: true 
    become: true 

Und hier ist, was ich versucht habe:

- name: Install RPM-Fusion free 
    yum: 
    name: "{{ item }}" 
    state: present 
    disable_gpg_check: true 
    become: true 
    register: result 
    until: result | succeeded 
    retries: 4 
    with_items: "{{ rpmfusion_free_mirrors }}" 


rpmfusion_free_mirrors: 
    - "http://download1.rpmfusion.org/free/el/updates/6/i386/rpmfusion-free-release-6-1.noarch.rpm" 
    - "http://mirrors.netix.net/rpmfusion/free/el/rpmfusion-free-release-6.noarch.rpm" 
    - "http://ftp-stud.hs-esslingen.de/pub/Mirrors/rpmfusion.org/free/el/rpmfusion-free-release-6.noarch.rpm" 
    - "http://mirror.de.leaseweb.net/rpmfusion/free/el/rpmfusion-free-release-6.noarch.rpm" 

Wie Sie vielleicht schon erraten haben, das nicht klappt mit dem Ausgang:

FEHLGESCHLAGEN - RETRYING: AUFGABE: install-backend-rpms: Installieren Sie RPM-Fusion frei (4 Versuche bleiben übrig). FAILED - RETRYING: AUFGABE: install-backend-rpms: Installiere RPM-Fusion kostenlos (3 Versuche sind noch möglich). FAILED - RETRYING: AUFGABE: install-backend-rpms: Installiere RPM-Fusion kostenlos (2 Wiederholungen übrig). FAILED - RETRYING: AUFGABE: install-backend-rpms: Installiere RPM-Fusion kostenlos (1 Versuche sind noch möglich). fehlgeschlagen: [backend_ans_test] (item = [u 'http://download1.rpmfusion.org/free/el/updates/6/i386/rpmfusion-free-release-6-1.noarch.rpm', u 'http://mirrors.netix.net/rpmfusion/free/ el/RPMFusion freie freisetzungs 6.noarch.rpm', u 'http://ftp-stud.hs-esslingen.de/pub/Mirrors/rpmfusion.org/free/el/rpmfusion-free-release-6.noarch.rpm', u‘http://mirror.de.leasew eb.net/rpmfusion/free /el/rpmfusion-free-release-6.noarch.rpm ']) => {"Versuche": 4, "fehlgeschlagen": true, "Gegenstand": ["http://download1.rpmfusion.org/free/el/updates/6/i386/rpmfusion -freigabe-6-1.noarch .rpm " "http://mirrors.netix.net/rpmfusion/free/el/rpmfusion-free-release-6.noarch.rpm", "http://ftp-stud.hs-esslingen.de/pub/Mirrors/rpmfusion.org/ frei/el/RPMFusion-Free-Release-6.noarch.rpm"," http://mirror.de.leaseweb.net/rpmfusion/free/el/rpmfusion-free-release-6.noarch.rpm "], "msg":" Failure Download http://dow nload1.rpmfusion.org/free/ el/updates/6/i386/rpmfusion-free-release-6-1.noarch.rpm, Objekt 'NoneType' hat kein Attribut 'read' "}

Es scheint mir, als ob ansible die Aufgabe als fehlgeschlagen betrachtet, wenn einer der Spiegel nicht erreichbar ist. Ich möchte jedoch, dass es möglich ist, durch die Spiegel zu gehen und zu stoppen, bis einer von ihnen erfolgreich ist.

Ich bin über einen Google-Gruppen-Thread von 2014 (GoogleGroups) gestolpert, der besagt, dass das einfach nicht funktioniert. Weiß jemand von Ihnen, ob es jetzt eine Funktion wie diese gibt oder ob ich ähnliche Funktionen auf andere Weise erreichen kann?

Beste Wünsche und danke im Voraus!

Antwort

0

Wie ansible den Status auf jeder Schleifeniterationslatenzzeit bewerten, sollten Sie hinzufügen:

failed_when: false 

oder

ignore_errors: true 

Aber dann ansible wird immer auf die nächste Aufgabe gehen, so, wenn Sie wollen Wenn alle Spiegel ausgefallen sind, sollten Sie einen weiteren hinzufügen, um die result zu überprüfen.

Verwandte Themen