Chciałbym uruchomić określone zadanie tylko wtedy, gdy flaga jest podana w linii poleceń. Na przykład chciałbym uruchomić polecenie ansibli-playbook z następującymi: --extra-vars "composer-install=true"
. W pewnym sensie potrzebuję zadania, które sprawdza, czy zmienna composer-install
jest ustawiona, a jeśli jest ustawiona i równa true, uruchom dane zadanie, które działa composer install
. Nie jestem do końca pewien, jak to zrobić w ostatniej części.Jak dodać opcjonalne zmienne w linii poleceń ansible i sprawdzić ich istnienie w książce adresowej?
Jak dodać opcjonalne zmienne w linii poleceń ansible i sprawdzić ich istnienie w książce adresowej?
Odpowiedz
Przyczyną błędu jest dostęp do zmiennej, która nigdy nie została ustawiona. Wydaje się, że używasz istnienia extra-var jako wskazania, że chcesz, aby instalator działał poprawnie (tzn. Nigdy nie przechodzisz --extra-vars = "composer-install = false"), więc możesz przejść z is defined
:
- shell: composer install
when: composer-install is defined
Ale zmienne mogą być przekazywane przez filtry, które mogą być przydatne w tym przypadku, ponieważ wciąż pozwala na przepuszczanie prawda/fałsz, gdy nie definiując zmienną w ogóle jeszcze działa:
- shell: composer install
when: composer-install|default(false)
Więcej informacji na temat warunków można znaleźć tutaj: http://docs.ansible.com/playbooks_conditionals.html
Filtry jinja2 są bardzo przydatna dla więcej niż jednego powodu, więc bardziej na tych tutaj: http://docs.ansible.com/playbooks_variables.html#jinja2-filters
i wreszcie pełna lista wbudowane filtry jinja2 tutaj: http://jinja.pocoo.org/docs/dev/templates/#builtin-filters
Myślę, że szukasz when parameter.
- name: optional composer install
shell: composer install
when: composer-install
Dzięki, to ma mnie w dobrym kierunku. Samo zrobienie tego, co zrobiłeś, powoduje błąd. Rozwiązaniem było również dodanie sekcji "vars:" do playbooka i dodanie zmiennej 'composer-install', ustawienie jej na" false ". Podobno zmienne wiersza polecenia zastępują zmienne ustawione w książeczce. Twoje zdrowie. –
- 1. Bezpieczeństwo i wydajność wątku w książce adresowej
- 2. Jak sprawdzić istnienie programu w ścieżce
- 3. Znajdź "służbowy" adres e-mail osoby w Książce adresowej iPhone'a?
- 4. Uzyskaj kontakt w postaci obrazu w książce adresowej na iOS
- 5. Zarejestruj się, aby dokonać zmian w książce adresowej, używając ABAddressBookRegisterExternalChangeCallback
- 6. Jak sprawdzić istnienie DB?
- 7. Jak sprawdzić istnienie rodziny kolumn w hector?
- 8. Jak sprawdzić istnienie parametru get w kolbie
- 9. Jak sprawdzić istnienie przestrzeni nazw w php
- 10. Jak mogę sprawdzić istnienie funkcji w Dart?
- 11. Jak elegancko sprawdzić istnienie rekordu w RSpec
- 12. Jak sprawdzić istnienie pliku lokalnego?
- 13. Opcjonalne zmienne URL
- 14. * w linii poleceń Linuksa
- 15. iteracja plików, sprawdzanie linii istnienie
- 16. Przestawianie nieruchomość w build.gradle z linii poleceń
- 17. Dlaczego zmienne blokowe są opcjonalne?
- 18. Jak sprawdzić istnienie pliku JAR i określonego pliku wewnątrz JAR?
- 19. Jak sprawdzić istnienie obiektu serwera sql i go usunąć?
- 20. Komentarze w linii poleceń zsh
- 21. jak sprawdzić istnienie dowolnego pliku w skrypcie csh?
- 22. debugowanie C# w linii poleceń
- 23. Prześlij zmienne do szablonu jade z linii poleceń
- 24. MVC w linii poleceń java
- 25. Jak wprowadzić znak tabulacji w linii poleceń?
- 26. Jak rozpocząć tekstmate w linii poleceń
- 27. Jak potwierdzić wejście liniowe w linii poleceń?
- 28. Cel kopalni pełna i ich pełna poleceń
- 29. Wyświetlanie "Canopy" w linii poleceń
- 30. JMeter - Zmiana zdefiniowane przez użytkownika zmienne z linii poleceń
Dziękuję za odpowiedź informacyjną, nawet po wybraniu innego rozwiązania jako odpowiedzi! –
Właściwie, skoro już tu jestem, czy mogę zapytać, jak właściwie używać filtrów jinja2, aby przekonwertować ciąg na liczbę całkowitą i wykonać mnożenie? Na przykład mam szablon, w którym chcę ustawić zmienną na 'ansible_fact * 2', a ansible_fact również jest ciągiem znaków. Nie mogłem go znaleźć w dokumentacji. –
Jest filtr "int", który wydaje się działać (musiał przetestować go sam): - debug: msg = {{'2' | int * 2}} –