Відповіді:
Ви можете використовувати copy
модуль з content
параметром:
- copy: content="{{ your_json_feed }}" dest=/path/to/destination/file
Документи тут: модуль копіювання
template:
модуль і заповнити його змінними, зареєстрованими під час виконання.
shahash /path/to/file
(помітити 2 пробіли між ними), а потім перевірити з командного рядка (через sha256sum -c shafile
) те, що ви створили за допомогою Ansible.
Якщо ви не пишете дуже маленькі файли, вам, ймовірно, слід користуватися шаблонами .
Приклад:
- name: copy upstart script
template:
src: myCompany-service.conf.j2
dest: "/etc/init/myCompany-service.conf"
На основі відповіді Рамона я зіткнувся з помилкою. Проблема, де пробіли в JSON я спробував записати, я її виправив, змінивши завдання в програмі, щоб виглядати так:
- copy:
content: "{{ your_json_feed }}"
dest: "/path/to/destination/file"
На сьогоднішній день я не впевнений, навіщо це було потрібно. Я найкраще здогадуюсь, що це було пов'язане із тим, як замінені змінні в Ansible і що отриманий файл аналізується.
dest
Зараз ми можемо безпосередньо вказати файл призначення за допомогою параметра. У наведеному нижче прикладі вихід json зберігається у/tmp/repo_version_file
- name: Get repository file repo_version model to set ambari_managed_repositories=false
uri:
url: 'http://<server IP>:8080/api/v1/stacks/HDP/versions/3.1/repository_versions/1?fields=operating_systems/*'
method: GET
force_basic_auth: yes
user: xxxxx
password: xxxxx
headers:
"X-Requested-By": "ambari"
"Content-type": "Application/json"
status_code: 200
dest: /tmp/repo_version_file