উত্তর সহ আউটপুট প্রদর্শন করুন


38

আমার কাছে পিজিবিউনসারের জন্য একটি উত্তরযোগ্য খেলা আছে যা পিজিবিউনসারের মধ্যে নির্মিত স্ট্যাটাস মডিউল থেকে কিছু আউটপুট প্রদর্শন করে।

আমার সমস্যাটি হ'ল উত্তরীয় যখন টার্মিনালে আউটপুট প্রিন্ট করে তখন এটি নিউলাইনগুলিকে ম্যাঙ্গাল করে। পরিবর্তে দেখার

----------
| OUTPUT |
----------

আমি দেখি

----------\n| OUTPUT |\n----------

আউটপুট "চমত্কার মুদ্রণ" এর উত্তর কীভাবে পাওয়া যায় তা কি কেউ জানেন?

উত্তর:


14

জবাবদিহিভাবে আপনি যা করতে চান তা করার কোনও উপায় নেই। আপনি এটি একান্তভাবে হিসাবে করতে পারেন:

ansible-playbook ... | sed 's/\\n/\n/g'

1
ওএসএক্সে আমাকে ব্যবহার করতে হয়েছিল sed -e 's/\\n/'$'\\\n/g'। প্রাসঙ্গিক: comicjk.com/20
নবীন

4
সরিনস উত্তর সার্ভারফল দেখুন /a/846232/ 240508 যা 2017 সালে সঠিক এবং উত্তরযোগ্য> 2.3
ভাদিমো

বেশিরভাগ \nক্ষেত্রে ফলাফল হিসাবে উপস্থিত হয়, যাতে আপনি আপনার ডিবাগ বার্তায় এই msg: "{{ result.stdout | regex_replace('\\n', '\n') }}"
regexp

62

আপনি যদি আরও মানব বান্ধব আউটপুট চান তা নির্ধারণ করুন:

ANSIBLE_STDOUT_CALLBACK=debug

এটি দুর্ভাগ্যজনক নামটি কম ভার্বোস এবং মানুষের দ্বারা পড়া সহজতর হওয়া সত্ত্বেও ডিবাগ আউটপুট মডিউলটিকে (পূর্বে নাম দেওয়া হয়েছে human_log) জবাবদিহি করতে সক্ষম করবে ।

যদি আপনি একটি ত্রুটি পান যে এই মডিউলটি উপলভ্য নয়, জবাবদিহিতা আপগ্রেড করুন বা স্থানীয়ভাবে এই মডিউলটি যুক্ত করুন যদি আপনি উত্তরনীয়কে আপগ্রেড করতে না পারেন তবে এটি 2.0 বা প্রাবলি এমনকি ১.৯ এর মতো উত্তরীয় সংস্করণগুলির সাথেও কাজ করবে।

এটি কনফিগার করার জন্য অন্য একটি বিকল্প stdout_callback = debugহ'ল আপনার উত্তরযোগ্য সিএফজি যুক্ত করুন


13
এটি 2017 সালে স্বীকৃত উত্তর হওয়া উচিত মানুষের বন্ধুত্বপূর্ণ লগ আউটপুটটি বাক্সের বাইরে পাঠানো হবে।
ভাদিমো

1
এটি আরও স্থায়ী করার জন্য এখানে আরও কিছু টিপস: github.com/ansible/ansible/issues/27078#issuecomment-364560173
kramer65

1
বা ANSIBLE_STDOUT_CALLBACK=yaml। আমি এটিকে পছন্দ করি কারণ fail msgযখন আমি কোনও বস্তু সরবরাহ করি তখন এটি ফরম্যাট করে ।
মেরিনোস আন

13

আপনি একটি কলব্যাক প্লাগইন ব্যবহার করতে পারেন । এটি আপনার আউটপুটটিকে পুনরায় বিশ্লেষণ করবে এবং সহজেই চালু এবং বন্ধ হবে।


2
দ্রষ্টব্য: উত্তরযোগ্য 2.0.x এর CallbackBaseসাথে from ansible.plugins.callback import CallbackBaseআপনার কলব্যাক ক্লাসটি কাজ করার জন্য আমদানিকৃত থেকে উত্তরাধিকারী হতে হবে ।
allo

12

পাওয়া এই Ansible প্রকল্প গ্রুপ ফোরামে উপায়:

- name: "Example test"
  command:
    ...
  register: test
- name: "Example test stdout"
  debug:
    msg: "{{ test.stdout.split('\n') }}"
- name: "Example test stderr"
  debug:
    msg: "{{ test.stderr.split('\n') }}"

আমরা মূলত এটিকে নিউলাইনে বিভক্ত করে এবং পরে তালিকাটি মুদ্রণ করে তালিকায় পরিণত করি।


এটি শেল আউটপুটকে আরও স্পষ্ট করে তোলে! নিস!
আসফান্দ কাজী

এই সমাধানটির একটি বড় ত্রুটি রয়েছে বলে মনে হয় - যদি "উদাহরণ পরীক্ষা" মডিউলটির সম্পাদনা ব্যর্থ হয় তবে সাধারণত পুরো প্লেবুক বিল্ড ব্যর্থ হয় এবং আপনি কখনও ফর্ম্যাটযুক্ত আউটপুট দেখতে পাবেন না, বিশেষত স্ট্যাডারের একটি যা সম্ভবত সবচেয়ে আকর্ষণীয়।
রেনি

@ রেনé আপনি ঠিক বলেছেন। তার জন্য ignore_errors: yesআপনি মূল কমান্ড এবং পরে `- এর মতো কিছু যুক্ত করতে পারেন: যে:" test.rc == 0 "।
ঝুটটার

1

আপনি বিরতি মডিউলটি ব্যবহার করতে পারেন :

- pause:
    prompt: "{{ variable_blob.stdout }}"

কয়েক মিনিট বা সেকেন্ডের সংজ্ঞা দিয়ে ইনপুট ছাড়াই অগ্রসর হয় তবে তারপরে ব্যবহারকারীর ইনপুট ক্যাপচার হয় না।

ক্রেডিট: https://github.com/ansible/ansible/issues/17446#issuecomment-245391682


0

আপনি যদি এমন বিন্যাসে দেখতে চান যা ব্যবহারিকভাবে স্ট্যান্ডার্ড আউটপুটকে নকল করে, আপনি উত্তর debug২.ible+ তে debugমডিউলটির সাথে কলব্যাক প্লাগইনটি ব্যবহার করতে পারেন :

- name: "Test Output"
  debug:
    msg: "{{ test_result.stdout_lines | join('\n') }}"
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.