জবাবদিহি আদেশের stdout দেখতে কিভাবে?


165

আমি কীভাবে উত্তরযোগ্য-প্লেবুক কমান্ডের জন্য স্টাডআউট দেখতে পাচ্ছি? -v শুধুমাত্র উত্তরযোগ্য আউটপুট দেখায়, পৃথক কমান্ড দেয় না। এটি কীভাবে তাৎক্ষণিকভাবে করা যায় তা যদি আমি বুঝতে পারি তবে দুর্দান্ত কিছু হবে, তাই যদি কোনও কিছু ব্যর্থ হয় বা স্তব্ধ হয়ে যায় তবে আমি তা দেখতে পারি।

যেমন

- name: print to stdout
  action: command echo "hello"

মুদ্রণ হবে

TASK: [print variable] ******************************************************** 

hello


উত্তর:


164

আমি মনে করি আপনি ফলটি একটি চলকটিতে নিবন্ধভুক্ত করতে পারেন, তারপরে ডিবাগ দিয়ে মুদ্রণ করতে পারেন।

- name: print to stdout
  command: echo "hello"
  register: hello

- debug: msg="{{ hello.stdout }}"

- debug: msg="{{ hello.stderr }}"

26
অতিরিক্তভাবে, আপনি সরাসরি একটি ভেরিয়েবল ডিবাগ করতে পারেন - debug: var=hello। কখনও কখনও এটি মাল্টলাইন আউটপুট বা উত্তর মডিউল আউটপুট ( command/ shellআউটপুট পরিবর্তে ) এর জন্য আরও সহায়ক ।
geerlingguy

4
এটি ব্যবহার করে জাভা আউটপুট পেতে আমার সমস্যা হয়েছিল। সমাধানটি জাভার সমস্ত আউটপুট স্টাডাউটে পুনর্নির্দেশ করা হবে:shell: java -version 2>&1
ম্যাথিয়াস ব্রাউন

20
এটি অনেক ভাল আর কিছুই নয়, তবে কমান্ডটি সফলভাবে সম্পন্ন হওয়ার পরে আপনি কেবল স্ট্যান্ডআউট বার্তা পাবেন । আমার এমন একটি সমস্যা ছিল যেখানে উত্তরদারি ঝুলতে দেখাবে। কারণটি হ'ল আমি একটি rsync কমান্ডের জন্য ভুল ব্যবহারকারীর নাম ব্যবহার করছিলাম, যা ইন্টারেক্টিভ পাসওয়ার্ডের অনুরোধটিকে সাদরে পরিণত করেছিল, যা স্রেফ জবাব দেওয়া হয়েছিল। এটি ডিবাগ করা খুব কঠিন ছিল - তবে যদি আমি রিয়েলটাইমে স্ট্যাডআউট দেখতে পেতাম তবে আমি কী ভুল করেছি তা অবিলম্বে বুঝতে পারতাম। সম্ভব হলে আমি এই কার্যকারিতাটি ভালবাসি OV
মাইকেল বি

10
এটি যখন কাজ করে, এর অর্থ হ'ল উত্তরযোগ্য ডিবাগিংকে সত্যই শক্ত করে তোলে। আসুন কল্পনা করুন যে প্রথম কাজটি কখনই শেষ হয় না (সম্ভবত এটি নির্বোধভাবে ব্যবহারকারী ইনপুটটির জন্য অপেক্ষা করছে) ... ব্যবহারকারী কখনই জানতে পারবেন না! তদুপরি, registerমডিউল, বা এটি যাই হোক না কেন এমন উপাদান stdoutবা stderrভেরিয়েবল সেট তৈরি করে না .... সুতরাং এটি খুব খারাপ যে আমরা কেবলমাত্র ডিফল্টরূপে আউটপুট পাই না: |
ভ্লাদ-আরডিলিয়ান

95

পরিবর্তে stdout- এ আমি ব্যবহার সুপারিশ করবে stdout_lines । মাল্টলাইন আউটপুট জন্য এটি অনেক ভাল, উদাহরণস্বরূপ

- hosts: all
  tasks:
    - name: Run ls.sh and output "ls /"
      script: ls.sh
      register: out

    - debug: var=out.stdout_lines

দেয়

TASK: [debug var=out.stdout_lines] ******************************************** 
ok: [local] => {
    "var": {
        "out.stdout_lines": [
            "total 61", 
            "lrwxrwxrwx   1 root root     7 Feb 15  2015 bin -> usr/bin", 
            "drwxr-xr-x   6 root root  1024 Aug 24 22:08 boot", 
            "drwxr-xr-x  22 root root  3580 Sep  8 18:41 dev",  
            [...] 
            "drwxr-xr-x   9 root root  4096 Aug 25 19:14 usr", 
            "drwxr-xr-x  13 root root  4096 Feb 25  2015 var"
        ]
    }
}

ডিবাগিংয়ের উদ্দেশ্যে রিয়েল টাইম আউটপুট সম্পর্কিত একটি বদ্ধ প্রতিবেদন আছে https://github.com/ansible/ansible/issues/3887#issuecomment-54672569 কেন এটি সম্ভব নয় এবং বাস্তবায়িত হবে না তার কারণগুলি নিয়ে আলোচনা করে।


16
"রিয়েল টাইম আউটপুট" বাগ যুক্ত করার জন্য +1।
এনটিসি 2

আমি যদি আউটস্টেট_লাইনগুলি (উত্তরযোগ্য মেল টাস্কের অঙ্গ হিসাবে) প্রেরণ করতে চাই তবে ইমেলটি পাওয়ার পরে আমি কীভাবে এটি প্রেরণ করব? [uteotal 61 ', u'lrwxrwxrwx 1 রুট রুট 7 ফেব্রুয়ারী 2015 2015 বিন -> usr / বিন', u'drwxr-xr-x 6 মূল রুট 1024 আগস্ট 24 22:08 বুট ', আপনি' .... । '] আমি এটি দেখতে চাই, টার্মিনালে যেমন দেখা গেছে
ক্রিস এফ

মারাত্মক: [127.0.0.1]: ব্যর্থ! => reason "কারণ": "ওয়াইএএমএল লোড করার সময় সিন্ট্যাক্স ত্রুটি expected n \ n name n- নাম: ls.sh এবং আউটপুট চালান ^ "ls / \" \ n ^ এখানে \ n "}
নট

20

আমি দেখতে পেলাম যে ন্যূনতম stdout_callback -উত্তরযোগ্য-প্লেবুক সহ ন্যূনতম ব্যবহার করে অ্যাড-হক উত্তরযোগ্য ব্যবহারের অনুরূপ আউটপুট দেয়।

আপনার উত্তরযোগ্য সিএফজি (নোট করুন যে আমি ওএস এক্স এ আছি তাই callback_pluginsআপনার ইনস্টল অনুসারে পথটি সংশোধন করুন )

stdout_callback     = minimal
callback_plugins    = /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/ansible/plugins/callback

যাতে এটি যেমন একটি কাজ

---
- hosts: example
  tasks:
   - name: Say hi
     command: echo "hi ..."

অ্যাড-হক কমান্ডের মতো আউটপুট দেয়

example | SUCCESS | rc=0 >>
hi ...

আমি উত্তর-প্লেবুকটি ২.২.১.০ ব্যবহার করছি


দুর্দান্ত কলব্যাক প্লাগইন, সাধারণ পোস্ট-প্রসেসিং কেবলমাত্র স্ট্যান্ডার্ড আউটপুট বের করতে পারে।
রিচভেল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.