ฉันกำลังดึง 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
จากคำตอบของ Ramon ฉันพบข้อผิดพลาด ปัญหาที่ช่องว่างใน JSON ที่ฉันพยายามเขียนฉันได้รับการแก้ไขโดยการเปลี่ยนงานใน playbook ให้มีลักษณะดังนี้:
- 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