将变量写入Ansible中的文件

时间:2014-10-29 18:39:57

标签: file ansible-playbook

我通过URI模块提取JSON,并希望将收到的内容写入文件。我能够获取内容并将其输出到调试器,因此我知道已收到内容,但我不知道编写文件的最佳做法。

4 个答案:

答案 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