(Związane z wywołaniami zwrotnymi lub przechwytywaniem i serią zadań wielokrotnego użytku, w rolach Ansible ):
Czy istnieje lepszy sposób na dołączenie do listy lub dodanie klucza do słownika w Ansible niż (ab) przy użyciu wyrażenia szablonu jina2?
Wiem, że możesz zrobić coś takiego:
- name: this is a hack
shell: echo "{% originalvar.append('x') %}New value of originalvar is {{originalvar}}"
ale czy naprawdę nie ma w tym rodzaju meta zadania lub pomocnika?
Jest delikatny, wydaje się nieudokumentowany i opiera się na wielu założeniach dotyczących działania zmiennych w Ansible.
Mój przypadek użycia to wiele ról (rozszerzenia serwera bazy danych), z których każda musi dostarczyć pewną konfigurację do roli podstawowej (serwer bazy danych). Nie jest to tak proste, jak dodanie linii do pliku konfiguracyjnego serwera db; każda zmiana dotyczy tej samej linii , np. rozszerzeń bdr
i pg_stat_statements
muszą pojawiać się w linii docelowej:
shared_preload_libaries = 'bdr, pg_stat_statements'
Czy Ansible to zrobić, aby po prostu przetworzyć plik konfiguracyjny wiele razy (raz na rozszerzenie) za pomocą wyrażenia regularnego, które wyodrębnia bieżącą wartość, analizuje ją, a następnie przepisuje? Jeśli tak, to jak sprawić, by ten idempotent występował w wielu przebiegach?
Co jeśli konfiguracja jest trudniejsza do przeanalizowania i nie jest tak prosta jak dodanie innej wartości oddzielonej przecinkami? Pomyśl o plikach konfiguracyjnych XML.