ansible: cicho pomijaj niedostępne hosty

3

Używamy ansible do konfigurowania niektórych hostów, w tym konfiguracji IP. Nie chcemy korzystać z serwera DHCP. Czasami dodajemy nowe hosty do sieci. Te nowe hosty są w jednym zakresie adresów IP, a istniejące hosty produkcyjne znajdują się w innym. Po prostu umieściliśmy nowe hosty w pierwszej sieci, a następnie pozwoliliśmy im skonfigurować je, przetestować i zmienić adres IP na zakres produkcyjny. Ansible jest regularnie uruchamiany przez cron.

Jednak gdy nie ma nowych hostów, ansible zgłosi nieosiągalny błąd. Brak nowych hostów to zwykła sytuacja. Jak mogę to powstrzymać lub uczynić go mniej widocznym?

Zasadniczo nasz podręcznik wygląda tak:

---
#  configure existing hosts
- hosts: production
  tasks:
    - name: do regular maintenance
      # ...

- hosts: new
  # Does not seem to do anything
  ignore_errors: True 
  tasks: 
    - name: configure freshly discovered host
        # ...
    - name: test freshly discovered host
        # ...
    - name: change ip config to production network
        # ...

/ Etc / ansible / hosts wygląda tak:

[production]
192.168.2.[11:255]

[new]
# those are firewalled
192.168.2.[1:10]

Kiedy to uruchomię, widzę duży czerwony

PLAY RECAP   ****************************************************
192.168.2.1              : ok=0    changed=0    unreachable=1    failed=0   
[...]

na końcu, co jest mylące dla moich kolegów.

widziałem to pytanie i doszedłem do wniosku, że jeśli użyję ignore_errors, ale nie ustawię flagi, powinien on cicho pomijać nieosiągalne hosty, ale nie wydaje się mieć żadnego efektu.

icehawk
źródło

Odpowiedzi:

0

Dodając tę ​​odpowiedź: w Ansible 2.7 dodano poprawkę: https://github.com/ansible/ansible/blob/stable-2.7/changelogs/CHANGELOG-v2.7.rst#major-changes

Nowe słowo kluczowe ignore_unreachable dla odtwarzania i bloków. Pozwala ignorować   zadania, które nie powiodły się z powodu niedostępnych hostów, a wyniki sprawdzania są z   nieosiągalny test.

EDYCJA: Z własnego doświadczenia muszę dodać ignore_errors wraz z nim, aby książka była rzeczywiście kontynuowana.

KdgDev
źródło
0

Musisz utworzyć wtyczka zwrotna zmodyfikować sposób, w jaki Ansible wytwarza swoje wyjście.

Możesz zacząć od default.py podany jako przykład z Ansible. Wyszukaj unreachable ciąg i zmodyfikuj skrypt do własnych potrzeb.

Na przykład, aby uczynić go mniej widocznym, możesz na przykład zastąpić wartość COLOR_UNREACHABLE zmienna.

Zapisz zmodyfikowany kod na callback_plugins w katalogu projektu, wskaż katalog , i włącz wtyczkę w ansible.cfg plik konfiguracyjny.

techraf
źródło
0

Jednym ze sposobów, które znalazłem, było biec ten skrypt najpierw na mój plik hosts, a następnie odpowiednio edytuj listę. Następnie uruchom skrypt Ansible.

Jest to praca dookoła, ale wciąż lepsza niż ciągłe obserwowanie Ansible, czekając, aż ponownie się zatrzyma.

warhansen
źródło