ansible प्रिंट डीबग संदेश चर


17

मैं इस तरह mosh_versionसे ansible debug msgकमांड का उपयोग करके पहले से पंजीकृत चर को प्रिंट करने का प्रयास करता हूं :

- name: Print mosh version
  debug: msg="Mosh Version: {{ mosh_version.stdout }}"

यह काम नहीं करता है और निम्नलिखित त्रुटि प्रिंट करता है:

Note: The error may actually appear before this position: line 55, column 27

- name: Print mosh version
  debug: msg="Mosh Version: {{ mosh_version.stdout }}"
                          ^
We could be wrong, but this one looks like it might be an issue with
missing quotes.  Always quote template expression brackets when they
start a value. For instance:

    with_items:
      - {{ foo }}

Should be written as:

    with_items:
      - "{{ foo }}"

मैंने कोशिश की

- name: Print mosh version
  debug: msg=Mosh Version: "{{ mosh_version.stdout }}"

लेकिन यह सिर्फ "मोश" छपेगा।

इसे चलाने का सबसे अच्छा तरीका क्या है?

जवाबों:


25

इसे इस्तेमाल करे:

- name: Print mosh version
  debug: "msg=Mosh Version: '{{ mosh_version.stdout }}'"

Http://docs.ansible.com/YAMLSyntax.html#gotchas में अधिक जानकारी

संपादित: कुछ इस तरह मेरे लिए एकदम सही काम करता है:

- name: Check Ansible version
  command: ansible --version
  register: ansibleVersion

- name: Print version
  debug:
    msg: "Ansible Version: {{ ansibleVersion.stdout }}"

http://pastie.org/private/cgeqjucn3l5kxhkkyhtpta


इसमें कोई अधिक वाक्यविन्यास त्रुटियां नहीं हैं, लेकिन यह या तो काम नहीं करता है:TASK: [ Print mosh version] ************************************** ok: [127.0.0.1] => { "msg": "Mosh" }
जुलाकिस

पहले सिर्फ वेरिएबल को प्रिंट करने की कोशिश करें और बिना कस्टम संदेश के आउटपुट देखें, जैसे: - नाम: प्रिंट मोश संस्करण डीबग: var = mosh_version.stdout_lines
टॉम

ok: [127.0.0.1] => { "var": { "mosh_version.stdout_lines": [ "mosh 1.2.4a [build mosh-1.2.4-57-g9eeb2fb]" ] } } यह काम करता है, मैं वास्तव में कस्टम संदेश पसंद करेंगे; ;-)
Zulakis

1
मेरे अपडेट किए गए उत्तर की जांच करें
टॉम एएसी

कृपया ध्यान दें: डिबग: "संदेश = Mosh संस्करण: '{{mosh_version.stdout}}" केवल "Mosh" प्रदर्शित करेगा। संदेश = "..." पूरे संदेश के बजाय उद्धरणों में होना चाहिए। लेकिन @xddsg से जवाब बेहतर काम करता है, क्योंकि यह अधिक विस्तृत var डंप है।
डलिबोर फिलुस


1

बस कोलन हटा दो

debug: msg="Mosh Version {{ mosh_version.stdout }}"

ईमानदारी से, यह एक पूर्ण समाधान नहीं है, लेकिन फिर भी यह काम करता है और मेरे पास अगले मुद्दे को हल करता है। दूसरे सिंटैक्स का उपयोग नहीं कर सकता क्योंकि मैं इसका उपयोग करता हूं whenताकि बृहदान्त्र को हटाना वास्तव में इसे हल करने का सबसे सरल तरीका है। इसलिए मैं
उत्थान करता

0

मैं इसका उपयोग करता हूं, दोहरे उद्धरण चिह्नों (") और एकल उद्धरणों (') पर ध्यान दें

- name: Print mosh version
  debug: "msg='Mosh Version: {{ mosh_version.stdout }}'"

0

जब भी मैं ऐसा करता हूं, तो मुझे अंसिबल स्ट्रिंग्स / सेमी में विशेष पात्रों के साथ समस्या होती है:

  1. एक उद्धरण के साथ लपेटें
  2. डबल घुंघराले कोष्ठक के साथ लपेटें

तो आपका स्टैंडर्ड कोलोन बन जाता है {{':'}}

और आपका कार्य बन जाता है:

- debug: msg="Ansible Version{{':'}} {{ ansibleVersion.stdout }}"

फिर से यह सबसे विशेष पात्रों के लिए काम करता है, यहां तक ​​कि तार भी। निम्नलिखित को धयान मे रखते हुए:

docker ps --format '{{.Names}}'

Ansible में इसे चलाने के लिए, बस उसी तर्क को लागू करें, निम्न कार्य अपेक्षित रूप से निष्पादित होता है:

- name: Get the docker container names
  become: yes
  shell: "docker ps --format '{{'{{'}}.Names{{'}}'}}'"
  register: docker_containers
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.