පිළිතුරු සැපයිය හැකි විධානයන්හි stdout දකින්නේ කෙසේද?


183

Ansible-playbook විධාන සඳහා stdout දකින්නේ කෙසේද? -v පෙන්වන්නේ ප්‍රතිචාර දැක්විය හැකි ප්‍රතිදානය මිස තනි විධානයන් නොවේ. මෙය වහාම කරන්නේ කෙසේදැයි මට දැනගත හැකි නම් එය ඉතා හොඳ වේ, එබැවින් යමක් අසමත් වුවහොත් හෝ එල්ලී ඇත්නම් එයට හේතුව මට පෙනේ.

උදා

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

මුද්‍රණය කරයි

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

hello


Answers:


181

මම හිතන්නේ ඔබට ප්‍රති result ලය විචල්‍යයකට ලියාපදිංචි කළ හැකි අතර පසුව නිදොස්කරණය සමඟ මුද්‍රණය කරන්න.

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

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

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

27
මීට අමතරව, ඔබට සෘජුවම විචල්යයක් නිදොස්කරණය කළ හැකිය - debug: var=hello. සමහර විට මෙය බහු රේඛීය ප්‍රතිදානය හෝ ඇන්සිබල් මොඩියුල ප්‍රතිදානය සඳහා ( command/ shellප්‍රතිදානයට වඩා ) වඩා ප්‍රයෝජනවත් වේ .
geerlingguy

4
මෙය භාවිතා කරමින් ජාවා ප්‍රතිදානය ලබා ගැනීමට මට අපහසු විය. විසඳුම වන්නේ ජාවා හි සියලුම ප්‍රතිදානයන් stdout වෙත හරවා යැවීමයි:shell: java -version 2>&1
මතියස් බ්‍රවුන්

23
එය වඩා හොඳ කිසිවක් නැත, නමුත් ඔබට stdout පණිවිඩය ලැබෙන්නේ විධානය සාර්ථකව අවසන් වූ පසුව පමණි . මට ප්‍රශ්නයක් තිබුනේ පිළිතුරු සැපයිය හැකි යැයි සිතිය හැකි තැනක. හේතුව, මම rsync විධානයක් සඳහා වැරදි පරිශීලක නාමයක් භාවිතා කිරීම නිසා අන්තර්ක්‍රියාකාරී මුරපද ඉල්ලීම අවලංගු වූ අතර එය පිළිතුරු සැපයිය හැකි ලෙස එල්ලා තැබීය. නිදොස් කිරීම ඉතා අසීරු විය - නමුත් මට තථ්‍ය කාලීනව stdout දැකිය හැකි නම්, මා කළ වැරැද්ද කුමක්දැයි මට වහාම වැටහෙනු ඇත. හැකි නම් මම මෙම ක්‍රියාකාරීත්වයට ආදරය කරමි.
මයිකල් බී

11
මෙය ක්‍රියාත්මක වන අතර, එයින් අදහස් වන්නේ පිළිතුරු සැපයීම නිදොස් කිරීම ඇත්තෙන්ම දුෂ්කර බවයි. පළමු කාර්යය කිසි විටෙකත් අවසන් නොවන බව සිතමු (සමහර විට එය පරිශීලක ආදානය සඳහා මෝඩ ලෙස බලා සිටී) ... පරිශීලකයා කිසි විටෙකත් නොදැන සිටියි! තව ද, registerමොඩියුලය, හෝ ඕනෑම දෙයක් එය විසින් ඇති වස්තූන් නොදරන stdoutහෝ stderrඑය අපි පෙරනිමියෙන් ප්රතිදානය ලබා නැති බව ඇත්තටම නරකයි එසේ .... විචල්ය කට්ටලයක්: |
vlad-ardelean

108

වෙනුවට 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.
ntc2

මට පිටත් කර යැවීමට අවශ්‍ය නම් (ඇන්සිබල් තැපැල් කාර්යයේ කොටසක් ලෙස), විද්‍යුත් තැපෑල ලැබුණු විට එය එසේ නොපෙනෙන පරිදි මම එය එවන්නේ කෙසේද? [u'total 61 ', u'lrwxrwxrwx 1 root root 7 පෙබරවාරි 15 ​​2015 bin -> usr / bin', u'drwxr-xr-x 6 root root 1024 Aug 24 22:08 boot ', u' .... . '] ටර්මිනලයේ පෙනෙන පරිදි එය මේ ආකාරයෙන් පෙනෙන්නට මට අවශ්‍යයි
ක්‍රිස් එෆ්

මාරාන්තික: [127.0.0.1]: අසාර්ථකයි! => reason "හේතුව": "YAML පූරණය කිරීමේදී සින්ටැක්ස් දෝෂයකි. Expected n අපේක්ෂිත <ලේඛන ආරම්භය> \ n \ n දෝෂය ඇති බව පෙනේ ... සින්ටැක්ස් ගැටළුව. \ N \ n අමනාප රේඛාව පෙනේ: \ n \ n \ n- නම: රන් ls.sh සහ ප්රතිදානය \ "ls / \" \ n ^ මෙහි \ n "}
Nate

20

අවම stdout_callback -පිළිතුරු සහිත-ප්ලේබුක් භාවිතා කිරීම තාවකාලික පිළිතුරු භාවිතා කිරීමට සමාන ප්‍රතිදානයක් ලබා දුන් බව මට පෙනී ගියේය.

ඔබගේ ansible.cfg හි (මම OS X හි සිටින බව සලකන්න, එබැවින් 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 ...

මම භාවිතා කරන්නේ ansible-playbook 2.2.1.0


හොඳ ඇමතුම් ලබා ගැනීමේ ප්ලගිනය, සරල පසු සැකසුම් මඟින් සම්මත ප්‍රතිදානය පමණක් ලබා ගත හැකිය.
රිච්වෙල්
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.