Я извлекаю JSON через модуль URI и хочу записать полученный контент в файл. Я могу получить контент и вывести его в отладчик, поэтому я знаю, что контент был получен, но я не знаю, как лучше всего писать файлы.
Я извлекаю JSON через модуль URI и хочу записать полученный контент в файл. Я могу получить контент и вывести его в отладчик, поэтому я знаю, что контент был получен, но я не знаю, как лучше всего писать файлы.
Ответы:
Вы можете использовать copy
модуль с content
параметром:
- copy: content="{{ your_json_feed }}" dest=/path/to/destination/file
Документы здесь: модуль копирования
template:
модуль и заполнить его переменными, зарегистрированными во время выполнения.
shahash /path/to/file
(обратите внимание на 2 пробела между ними), а затем проверить из командной строки (через sha256sum -c shafile
) то, что вы сгенерировали с помощью Ansible.
Основываясь на ответе Рамона, я столкнулся с ошибкой. Проблема, когда пробелы в JSON, которые я пытался написать, я исправил, изменив задачу в playbook, чтобы она выглядела так:
- copy:
content: "{{ your_json_feed }}"
dest: "/path/to/destination/file"
На данный момент я не уверен, зачем это было нужно. Я предполагаю, что это как-то связано с тем, как заменяются переменные в Ansible и анализируется полученный файл.
Если вы не пишете файлы очень маленького размера, вам, вероятно, следует использовать шаблоны .
Пример:
- name: copy upstart script
template:
src: myCompany-service.conf.j2
dest: "/etc/init/myCompany-service.conf"
Теперь мы можем напрямую указать целевой файл с 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