andrewvaughan.prompt

Podpowiedź

Wersja Licencja Status budowy Pokrycie

Ten moduł Ansible umożliwia wyświetlanie prostych komunikatów użytkownikom uruchamiającym Playbook. To zdecydowanie lepszy sposób przedstawiania wiadomości użytkownikowi niż za pomocą wbudowanego zadania debug. Opcjonalnie wiadomość może być użyta jako prośba o odpowiedź od użytkownika. Odpowiedzi na te zapytania mogą być rejestrowane jako zmienne Ansible.

Instalacja

Ten plugin jest dostępny w Ansible Galaxy. Po zainstalowaniu Ansible Galaxy, możesz zainstalować ten plugin za pomocą następującego polecenia:

ansible-galaxy install andrewvaughan.prompt

Aby użyć tego pluginu, po prostu dodaj rolę do swojego pliku playbook z następującym dodatkiem:

roles:
- andrewvaughan.prompt

Po ukończeniu możesz używać całego pluginu zgodnie z opisem w Wytycznych dotyczących użycia

Ręczna instalacja

Aby dodać ten plugin do swojego projektu, wystarczy skopiować plik /action_plugins/prompt.py do folderu o nazwie action_plugins w głównym katalogu swojego playbooka. Ansible automatycznie znajdzie i włączy wszystkie polecenia udostępnione przez plugin, jak szczegółowo opisano w Wytycznych dotyczących użycia.

Zależności

Ten moduł był testowany z Ansible w wersji 2.0 i wyższej. Może działać z innymi wersjami, ale nie są oficjalnie wspierane. Gdy Ansible i jego zależności zostaną zainstalowane, ten plugin powinien być gotowy do użycia.

Użycie

Funkcjonalność modułu Ansible Prompt jest na dzień dzisiejszy bardzo ograniczona. Aktualnie wspierane jest tylko przekazywanie wiadomości do użytkownika.

Plugin Ansible Prompt przyjmuje jeden parametr, msg, który może zawierać jedną lub więcej wiadomości dla użytkownika. Przykłady zadań są następujące:

- name: Prosta wiadomość
  prompt:
    msg: Witaj Świecie

- name: Wiele wiadomości
  prompt:
    msg:
      - Witaj Świecie
      - Witaj Wszechświecie

Wyrównanie

Opcja align nie działa w połączeniu z opcją ask

Wiadomości mogą być wyrównane do lewego (domyślnie), środkowego lub prawego:

- name: Wyrównanie wiadomości
    msg:
      - say: Wyrównanie do lewej
        align: left
      - say: Wyrównanie do środka
        align: center
      - say: Wyrównanie do prawej
        align: right

Zapobieganie dodawaniu nowej linii

Opcja newline nie działa w połączeniu z opcją ask

Aby zapobiec automatycznemu dodawaniu nowej linii na końcu wiadomości przez moduł Ansible Prompt, wystarczy ustawić wartość newline na false:

# Wyjście "Początek linii...środek linii...koniec linii" z dodaną nową linią
- name: Wiadomość bez nowej linii
  prompt:
    msg:
      - say: "Początek linii..."
        newline: false
      - say: "środek linii"
        newline: false
      - say: "...koniec linii"

Zbieranie danych z odpowiedzi użytkownika

Mocą pluginu prompt jest jego zdolność do zbierania faktów Ansible jako zadania podczas działania playbooka. Aby zamienić zapytanie w pytanie, należy podać zestaw zmiennych say i ask dla każdego pytania, które chcesz zadać.

Zmienna say zawiera wiadomość, którą chcesz przedstawić, natomiast zmienna ask jest zmienną Ansible, którą ustawiasz globalnie na podstawie odpowiedzi użytkownika:

- name: Proste pytanie
  prompt:
    msg:
      say: "Jak masz na imię?"
      ask: first_name

- debug:
    var: first_name

Jak widzisz, zmienna first_name jest ustawiana na podstawie odpowiedzi użytkownika podczas wykonywania.

Możesz opcjonalnie zadać wiele pytań w tym samym zapytaniu:

- name: Informacje adresowe
  prompt:
    msg:
      - say: "Adres:"
        ask: address
      - say: "Miasto:"
        ask: city
      - say: "Stan:"
        ask: state
      - say: "Kod pocztowy:"
        ask: zipcode

Aktualnie wszystkie zmienne są tworzone po zakończeniu zadania. Pamiętaj, że zmienne nie mogą być używane, dopóki zadanie nie zostanie ukończone, więc to nie zadziała:

- name: Informacje adresowe
  prompt:
    msg:
      - say: "Imię:"
        ask: first_name
      - say: "Cześć {{ first_name }}! Jaki jest twój ulubiony kolor?"
        ask: color

Zamiast tego pytania powinny być podzielone na dwa oddzielne zadania prompt.

Często zadawane pytania

Dlaczego nie po prostu użyć Ansible debug i/lub prompt_vars?

Chociaż Ansible oferuje pewne podstawowe funkcje komunikacyjne i raportujące, wbudowane metody debug i prompt_vars mają pewne wady. Konkretnie:

  • debug jest przeznaczone wyłącznie do debugowania, a zatem nie prezentuje wyników w formie sformatowanej.
  • prompt_vars może być używane tylko na początku skryptu, co ogranicza możliwości dla użytkowników, którzy chcą zebrać dane podczas wykonywania zadań.
  • prompt_vars ma ograniczoną, jeśli w ogóle, obsługę logiki warunkowej.

Wkład

Jest wiele sposobów przyczynienia się do tego projektu! Jeśli masz pomysł lub odkryłeś błąd, proszę otwórz zgłoszenie, aby mogło zostać to rozwiązane.

Jeżeli jesteś zainteresowany wkładem w projekt poprzez projektowanie lub rozwój, przeczytaj nasze Wytyczne dotyczące wkładu.

Testowanie

Dostarczono plik Makefile, aby pomóc w lintingu, testowaniu i generowaniu raportów pokrycia. Zależności będą zarządzane automatycznie podczas testowania:

make test      # Uruchamia linting i zestawy testów
make coverage  # Uruchamia linting, testy i generuje raport pokrycia w HTML

Proszę pamiętać, że pełne testy muszą być dostarczane przy wnoszeniu wkładu do tego projektu.

Polityka wydania

Wydania tego projektu podlegają standardom Semantic Versioning w schemacie wersjonowania MAJOR.MINOR.PATCH w następującym formacie:

  • MAJOR - modyfikowane, gdy wprowadzane są główne, niekompatybilne zmiany w aplikacji,
  • MINOR - modyfikowane, gdy dodawana jest funkcjonalność w sposób zgodny wstecz,
  • PATCH - poprawki do istniejącej funkcjonalności, takie jak dokumentacja i poprawki błędów.

Licencja

Ten projekt jest dostępny na podstawie Licencji MIT.

Copyright 2017 Andrew Vaughan

Niniejszym udziela się zgody, bez opłat, każdej osobie, która uzyska kopię tego oprogramowania oraz towarzyszącej
dokumentacji (zwaną dalej "Oprogramowaniem"), na korzystanie z Oprogramowania bez ograniczeń, w tym bez ograniczeń w
prawie do korzystania, kopiowania, modyfikowania, łączenia, publikacji, dystrybucji, sublicencjonowania i/lub sprzedaży
kopii Oprogramowania, oraz zezwalania osobom, którym Oprogramowanie jest udostępnione, na to wszystko, z zastrzeżeniem
następujących warunków:

Powyższy wpis o prawach autorskich oraz niniejsza zgoda muszą być zawarte we wszystkich kopiach lub istotnych częściach
Oprogramowania.

OPROGRAMOWANIE JEST DOSTARCZANE "TAK JEST", BEZ JAKIEJKOLWIEK GWARANCJI, WYRAŹNEJ ANI DOROZUMIANEJ, W TYM MIĘDZY INNYMI GWARANCJI
HANDLOWOŚCI, PRZYDATNOŚCI DO OKREŚLONEGO CELU I NARUSZENIA PRAW. W ŻADNYM RAZIE AUTORZY LUB POSIADACZE PRAW AUTORSKICH NIE BĘDĄ
ODPOWIEDZIALNI ZA ŻADNE ROSZCZENIA, SZKODY LUB INNE ODPOWIEDZIALNOŚCI, CZY TO W DZIAŁANIU UMOWOWYM, DELIKCIE CZY INNYM, POWSTAŁE W
WYNIKU, ZWIĄZANE Z OPROGRAMOWANIEM LUB KORZYSTANIEM Z NIEGO LUB INNYMI DZIAŁANIAMI ZWIĄZANYMI Z OPROGRAMOWANIEM.
O projekcie

Ansible role that provides functionality for messaging and prompting users for input during tasks.

Zainstaluj
ansible-galaxy install andrewvaughan.prompt
Licencja
mit
Pobrania
4.1k
Właściciel
Software Engineer, CTO, $8BN revenue in eCommerce and SaaS under my belt and growing.