andrewvaughan.prompt
Podpowiedź
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.
Ansible role that provides functionality for messaging and prompting users for input during tasks.
ansible-galaxy install andrewvaughan.prompt