मैं प्रोग्रामेटिकली एन्सिबल प्लेबुक का उपयोग कर रहा हूँ। सामान्य तौर पर, क्योंकि playbooks सिर्फ YAML हैं, यह सीधा है। हालाँकि, "सरल" key=valueफ़ॉर्म का उपयोग करते समय , playbooks शुद्ध YAML नहीं होते हैं - इनमें अंतर्निर्मित सामग्री shlexसम्मिलित होती है।
इस रूप में अस्पष्टता से बचने के लिए (जो है key=valueजोड़ी आदेश के लिए एक तर्क या ansible के लिए एक तर्क?), और पार्स और उत्पन्न, मैं बिना शर्त जटिल आर्ग तंत्र में उदाहरण के द्वारा प्रदर्शन उपयोग कर रहा हूँ करने के लिए केवल एक ही प्रारूप है 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' "
... जो बहुत ज्यादा नहीं है जो मैं पूरा करने की कोशिश कर रहा हूं।
शुद्ध मिक्सएल सिंटैक्स का उपयोग करके "फ्री-फॉर्म" कमांड लेने के लिए सटीक मॉड्यूल का उपयोग करने का सही तरीका क्या है?
- shell: ...? यदि यह संरचना कुछ है जो केवल मज़बूती से हाथ से उत्पन्न हो सकती है, तो यह कुछ हद तक सवाल को हरा देती है।