我通过URI模块提取JSON,并希望将收到的内容写入文件。我能够获取内容并将其输出到调试器,因此我知道已收到内容,但我不知道编写文件的最佳做法。
答案 0 :(得分:152)
您可以使用copy
模块和content
参数:
- copy: content="{{ your_json_feed }}" dest=/path/to/destination/file
此处的文档:copy module
答案 1 :(得分:7)
除非您编写非常小的文件,否则您应该使用templates。
示例:
- name: copy upstart script
template:
src: myCompany-service.conf.j2
dest: "/etc/init/myCompany-service.conf"
答案 2 :(得分:5)
根据Ramon的回答,我遇到了一个错误。我尝试编写JSON中的空格的问题我通过更改playbook中的任务来解决这个问题:
- copy:
content: "{{ your_json_feed }}"
dest: "/path/to/destination/file"
截至目前,我不确定为何需要这样做。我最好的猜测是,它与如何在Ansible中替换变量以及解析生成的文件有关。
答案 3 :(得分:0)
我们现在可以使用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