2016-05-12 24 views
6

Chciałbym mieć główny podręcznik do gry, w którego skład wchodzą także inne książki. Czy jest możliwe przekazanie zmiennej do tego dołączonego do playbooka?Przesłać zmienną do dołączonego do playbooka?

Normalna składni, który służy do przejścia do zmiennych uwzględnionych zadań nie działa (patrz niżej)

- include: someplaybook.yml variable=value 

i

- include: someplaybook.yml 
    vars: 
    variable: value 

biegnę v2.0.2.0.

+0

Czy wiesz o rolach? jaka jest ta normalna składnia, która nie działa? – Nasr

+1

O ile mi wiadomo, zmienne mają zasięg globalny przez cały czas trwania playbooka, więc musisz tylko zdefiniować zmienne w dowolnym punkcie. – ydaetskcoR

+0

@Nasr Tak, wiem o rolach - one nie pomogą w tym przypadku . Dodałem normalną składnię. Ansible ma różne zakresy dla zmiennych różnych typów. Po prostu użycie set_facts nie działa. – CamHart

Odpowiedz

0

Jedyne czego mi brakuje to cytaty.

- include: someplaybook.yml variable='value' 

To działa dla mnie i powinno działać również dla Ciebie. Jeśli nie podzielisz błędu, z którym się spotykasz.

Upewnij się, że ta zmienna "zmienna" została zdefiniowana w zadaniu roli, a od tego momentu właśnie przekazujesz wartość tej zmiennej.

+3

Ta operacja obejmuje zadania - nie zawiera to playbook. – CamHart

+0

W powyższym poleceniu znalazłem zakładkę. Co oznacza zadanie? Czy możesz podzielić się kodem, w którym ta zmienna jest używana, aby uzyskać więcej informacji na temat tego, w jaki sposób chcesz go użyć? –

+2

Zawiera elementy do Playbooków, w których dołączany plik zawiera odtwory, tzn. Określają komputery "hostów" i role/zadania do uruchamiania na tych komputerach hosta. Zadanie obejmuje tylko określenie zadań do uruchomienia. – CamHart

0

Również Proponuję przeczytać, http://docs.ansible.com/ansible/latest/playbooks_reuse.html i spróbuj użyć ról w tym przypadku będzie to pomóc w przypadku takim jak ten, w którym starasz się m.in./import wielu playbooks w jednym głównym Playbook. I o przekazywaniu wartości do instrukcji include możesz dodać ją do vars main.yml tej roli. Lub, jeśli zmienna, którą chcesz przekazać, jest wynikiem poprzedniego zadania w jednym głównym playboardzie, użyj "register" i zapisz wynik w zmiennej.

- debug: msg="{{result.stdout_lines}}"

tutaj, wynik jest zarejestrowany zmienna. Skorzystaj z modułu debugowania, aby dokładnie wiedzieć, co chcesz przekazać do książki. Mam nadzieję, że to pomoże.

+1

Nie pamiętam dokładnego kontekstu, kiedy o to pytałem, ale jeśli przeczytałeś komentarze na temat pierwotnego pytania, jasne było, że ról nie można użyć do rozwiązania tego problemu. Już używałem ról - to był nieco inny przypadek użycia niż to, z czym mogą sobie poradzić. Zapomniałem jednak dokładnie szczegółów. – CamHart