ฉันใช้เพลย์บุ๊ค Ansible ที่สร้างขึ้นโดยใช้โปรแกรม โดยทั่วไปเนื่องจาก playbooks เป็นเพียง YAML นี่เป็นเรื่องง่าย อย่างไรก็ตามเมื่อใช้key=value
แบบฟอร์ม" แบบง่าย" playbooks จะไม่ใช่ YAML ที่แท้จริง - ซึ่งรวมถึงเนื้อหาที่ฝังอยู่ในshlex
รูปแบบ -parsable
เพื่อหลีกเลี่ยงความคลุมเครือในรูปแบบนี้ (เป็นkey=value
คู่ที่โต้แย้งกับคำสั่งหรืออาร์กิวเมนต์สำหรับ ansible?) และมีเพียงรูปแบบเดียวในการแยกและสร้างฉันไม่มีเงื่อนไขโดยใช้กลไก args ซับซ้อนแสดงตัวอย่างในansible พื้นที่เก็บข้อมูลตัวอย่าง
สิ่งนี้ใช้ไวยากรณ์ของชนิดต่อไปนี้:
action: module-name
args:
key1: value1
key2: value2
... ซึ่งดีและดี อย่างไรก็ตามเมื่อพยายามที่จะใช้แบบฟอร์มนี้สำหรับโมดูลshell
หรือcommand
( ซึ่งเอกสารอธิบายคำสั่งที่แท้จริงว่าถูกส่งผ่านในการโต้แย้งชื่อfree_form
) สิ่งนี้ทำงานได้ไม่ดี:
action: shell
args:
free_form: echo hello_world >/tmp/something
creates: /tmp/something
เมื่อเรียกใช้สิ่งนี้จะทำงานต่อไปนี้:
/bin/sh -c " free_form='echo hello_world >/tmp/something' "
... ซึ่งไม่ใช่สิ่งที่ฉันพยายามจะทำ
อะไรคือวิธีที่เหมาะสมในการใช้โมดูล Ansible ที่ใช้คำสั่ง "รูปแบบอิสระ" โดยใช้ไวยากรณ์ YAML บริสุทธิ์
- shell: ...
หรือไม่? หากโครงสร้างนี้เป็นสิ่งที่สามารถสร้างขึ้นด้วยมือได้อย่างน่าเชื่อถือซึ่งจะเอาชนะประเด็นของคำถามได้