2014-10-29 19 views
53

Wyciągam JSON przez moduł URI i chcę zapisać odebraną zawartość do pliku. Mogę pobrać zawartość i wyprowadzić ją do debuggera, więc wiem, że treść została odebrana, ale nie znam najlepszej praktyki pisania plików.Zapisz zmienną do pliku w Ansible

Odpowiedz

106

Można użyć modułu copy, z parametrem content:

- copy: content="{{ your_json_feed }}" dest=/path/to/destination/file 

Docs tutaj: copy module

+2

= zawartość "{{your_json_feed}}" dotyczy spacji i znakami nowej linii. Cytaty są ważne. –

+0

Dobra uwaga, @ m.kocikowski. Dodano cytaty. –

+0

@RamondelaFuente Jeśli chciałbym dodać wiele plików vars do pliku, muszę użyć modułu "copy" wiele razy lub jest jakiś inny sposób? – KishoreReddy

2

podstawie odpowiedzi Ramona biegnę do błędu. Problem gdzie obowiązuje w JSON Próbowałem napisać mam to naprawić zmieniając zadanie w playbook wyglądać:

- copy: 
    content: "{{ your_json_feed }}" 
    dest: "/path/to/destination/file" 

Jak teraz nie jestem pewien, dlaczego to było potrzebne. Domyślam się, że miało to jakiś związek z zastępowaniem zmiennych w Ansible, a plik wynikowy jest analizowany.

3

Jeśli nie piszesz bardzo małych plików, prawdopodobnie powinieneś użyć templates.

przykład:

- name: copy upstart script 
    template: 
    src: myCompany-service.conf.j2 
    dest: "/etc/init/myCompany-service.conf" 
+0

Podczas odpowiedzi Ramona dokładnie odpowiada na pytanie, ta odpowiedź jest ogólnie najlepszym podejściem. Na przykład, jeśli masz książeczkę, która tworzy maszyny wirtualne w chmurze i chcesz wygenerować spis hostów dla innego zestawu zabaw, szablon jest do zrobienia. –

Powiązane problemy