मैं नया करने के लिए नया हूँ और आश्चर्य है कि ऐसा कैसे करें क्योंकि निम्नलिखित काम नहीं किया
ansible-playbook -i '10.0.0.1,' yada-yada.yml --tags 'loaddata' django_fixtures="tile_colors"
django_fixtures
मेरा चर कहाँ है
मैं नया करने के लिए नया हूँ और आश्चर्य है कि ऐसा कैसे करें क्योंकि निम्नलिखित काम नहीं किया
ansible-playbook -i '10.0.0.1,' yada-yada.yml --tags 'loaddata' django_fixtures="tile_colors"
django_fixtures
मेरा चर कहाँ है
जवाबों:
डॉक्स पढने से मुझे कमांड लाइन पर पासिंग वैरिएबल सेक्शन मिलता है , जो यह नमूना देता है:
ansible-playbook release.yml --extra-vars "version=1.23.45 other_variable=foo"
दूसरों उदाहरण कैसे से लोड करने के लिए प्रदर्शित JSON स्ट्रिंग (≥ 1.2
) या फ़ाइल (≥ 1.3
)
key=value
सिंटैक्स का उपयोग करके पारित किए गए मानों की व्याख्या स्ट्रिंग्स के रूप में की जाती है । JSON प्रारूप का उपयोग करें यदि आपको कुछ भी पास करने की आवश्यकता है जो एक स्ट्रिंग (बुलियन, पूर्णांक, फ़्लोट, सूची आदि) नहीं होनी चाहिए। उदाहरण के लिए:--extra-vars '{"i_wasted_30_mins_debugging_a_boolean_string":true}'
अन्य उत्तर बताते हैं कि कमांड लाइन के चर में कैसे पास किया जाए, लेकिन उन्हें कैसे एक्सेस किया जाए, इसलिए यदि आप ऐसा करते हैं:
--extra-vars "version=1.23.45 other_variable=foo"
अपनी yml फ़ाइल में आप इन्हें कुछ इस तरह से स्कैन किए गए ansible वेरिएबल्स को असाइन करते हैं:
vars:
my_version: "{{ version }}"
my_other_variable: {{ other_variable }}
कमांड लाइन आर्ग्स का उपयोग करने का एक विकल्प पर्यावरणीय चर का उपयोग करना है जो आपके सत्र के भीतर पहले से ही परिभाषित हैं, आप इन्हें इस तरह अपनी ansible yml फ़ाइलों में संदर्भित कर सकते हैं:
vars:
my_version: "{{ lookup('env', 'version') }}"
my_other_variable: {{ lookup('env', 'other_variable') }}
lookup('env', SOMETHING)
12 कारक से मेल खाता है।
version: {{ version }}
गलत है, जैसे version
स्वयं को परिभाषित करना ।
ansible-playbook release.yml -e "version=1.23.45 other_variable=foo"
-e
ध्वज के संक्षिप्त रूप है--extra-vars
--extra-vars "@some_file.json"
--extra-vars
फ़ाइल में नहीं चर को पारित करने के लिए दूसरे ध्वज की आवश्यकता है । उदाहरण के लिए--extra-vars "@some_file.json" --extra-vars "other_variable=foo"
आप उपयोग कर सकते हैं --extra-vars
विकल्प का । डॉक्स देखें
किसी कारण के लिए ऊपर दिए गए किसी भी उत्तर ने मेरे लिए काम नहीं किया। जैसा कि मुझे Ansbile 2.2.0 में अपनी प्लेबुक में कई अतिरिक्त संस्करण पास करने की आवश्यकता है, यह है कि मुझे यह कैसे काम करना है (प्रत्येक संस्करण से पहले -e विकल्प पर ध्यान दें):
ansible-playbook site.yaml -i hostinv -e firstvar=false -e second_var=value2
-e
का संक्षिप्त रूप है--extra-vars
-e
ध्वज में अतिरिक्त संस्करण निर्दिष्ट कर सकते हैं
-e "firstvar=false second_var=value2"
ansible-playbook test.yml --extra-vars "arg1=${var1} arg2=${var2}"
Yml फ़ाइल में आप उन्हें इस तरह से उपयोग कर सकते हैं
---
arg1: "{{ var1 }}"
arg2: "{{ var2 }}"
इसके अलावा, --extra-vars
और -e
समान हैं, आप उनमें से एक का उपयोग कर सकते हैं।
s3_sync:
bucket: ansible-harshika
file_root: "{{ pathoftsfiles }}"
validate_certs: false
mode: push
key_prefix: "{{ folder }}"
यहाँ चर को 'pathoftsfiles' और 'folder' नाम दिया जा रहा है। अब इस चर का मान नीचे दिए गए आदेश द्वारा दिया जा सकता है
sudo ansible-playbook multiadd.yml --extra-vars "pathoftsfiles=/opt/lampp/htdocs/video/uploads/tsfiles/$2 folder=nitesh"
नोट: शेल कमांड में वैरिएबल को मान पास करते समय उल्टे अल्पविराम का उपयोग न करें
यदि आप शेल पर्यावरण चर का उपयोग करना चाहते हैं तो यह मेरे लिए भी काम करता है:
ansible-playbook -i "localhost," ldap.yaml --extra-vars="LDAP_HOST={{ lookup('env', 'LDAP_HOST') }} clustername=mycluster env=dev LDAP_USERNAME={{ lookup('env', 'LDAP_USERNAME') }} LDAP_PASSWORD={{ lookup('env', 'LDAP_PASSWORD') }}"
ansible-playbok -i <inventory> <playbook-name> -e "proc_name=sshd"
आप नीचे दिए गए कमांड का उपयोग प्लेबुक में कर सकते हैं।
---
- name: Service Status
gather_facts: False
tasks:
- name: Check Service Status (Linux)
shell: pgrep "{{ proc_name }}"
register: service_status
ignore_errors: yes
debug: var=service_status.rc`
--extra-vars
जिस वेरिएबल को परिभाषित किया गया है वह प्लेबुक के अंदर परिभाषित वेरिएबल (ओं) को ओवरराइड करेगा।