अस्थिर प्लेबुक में पूर्णांक के लिए स्ट्रिंग परिवर्तित

Aug 17 2020

मुझे पावरशेल कमांड से एक काउंट मिल रहा है और इसे वेरिएबल पर रजिस्टर करना है। मुझे उस गिनती का इस्तेमाल कब करना है। मैं इसे बदलने के लिए जब यह भी हालत में उपयोग करने से पहले int के लिए बदल दिया है। फिर भी वह कार्य (मेल नोटिफिकेशन) बंद हो रहा है, अंततः यहां गिनती 0 है। क्या कोई मुझे बता सकता है कि मैं यहां क्या गलत कर रहा हूं। नीचे कोड मैं निष्पादित कर रहा हूं

      - name: Get message_count
        shell:  echo "{{ (output.stdout | from_json).MessageCount  }}"
        register: message_count   #message_count is Zero here
        delegate_to: localhost
     
      - set_fact:
          countt: "{{ message_count | int}}"    

# सेट_फैक्ट का उपयोग करके शर्त से पहले पूर्णांक में कनवर्ट करना

      - debug: var=countt
      - name: send mail notification
        mail:
           host: abc.zzzz.net
           port: 25
           from: <[email protected]>
           to:
           - [email protected]        

           subject: Test mail sent from core server 
           body: Test mail sent from core server        
        delegate_to: localhost
        when: countt==0

जवाब

6 RomanSpiak Aug 17 2020 at 05:53

यहाँ मैंने इसे बनाने के लिए क्या किया:

---
- name: answer serverfault
  hosts: all
  become: yes

  tasks:
    - name: Get message_count
      shell: ls /tmp/empty | wc -l
      register: tmp_count
      delegate_to: localhost
    - debug: var=tmp_count.stdout
    - name: do something else when tmp_count.stdout == 0
      shell: echo "I am doing it"
      delegate_to: localhost
      when: tmp_count.stdout | int == 0

और यहां प्लेबुक रन का परिणाम है:

ripper@mini-ripper:~/Devel/ansible$ ansip ./test_playbook.yml  -i localhost,

PLAY [answer serverfault] **************************************************************************************************************************************************************************************

TASK [Gathering Facts] ********************************************************************************************************************************************************************************************
[WARNING]: Platform linux on host localhost is using the discovered Python interpreter at /usr/bin/python, but future installation of another Python interpreter could change this. See
https://docs.ansible.com/ansible/2.9/reference_appendices/interpreter_discovery.html for more information.
ok: [localhost]

TASK [Get message_count] ******************************************************************************************************************************************************************************************
changed: [localhost -> localhost]

TASK [debug] ******************************************************************************************************************************************************************************************************
ok: [localhost] => {
    "tmp_count.stdout": "0"
}

TASK [do something else when tmp_count.stdout == 0] ***************************************************************************************************************************************************************
changed: [localhost -> localhost]

PLAY RECAP ********************************************************************************************************************************************************************************************************
localhost                  : ok=4    changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

इसलिए पुनर्कथन करने के लिए:

  • आपको यह देखना चाहिए कि रजिस्टर चर अधिक जटिल संरचना नहीं है - यह आमतौर पर है
  • आपको एक और कस्टम तथ्य की आवश्यकता नहीं है
  • आपको अपने वैरिएबल को कंडीशन {{ }}में उपयोग किए बिना कन्वर्ट करने की आवश्यकता हैwhen