回答:
次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"
Ramonの回答に基づいて、エラーが発生しました。記述しようとした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