前提・実現したいこと
Ansibleのjunos commandの結果をslackで通知したいです。
発生している問題・エラーメッセージ
・Ansibleのjunos commandの結果を変数に格納し、slackで通知しようとしたのですが、できないです。
・slackに通知するテキストを生成するところをベタ書きするとslackに出力されました。
・問題は、junos commandモジュールで実行した結果registerの値をslackに通知出来ないこと かなと。
hoge@dev ~/ansible-dev # ansible-playbook -i inventory/hosts playbook/sample.yaml TASK [debug result.stdout_lines] *************************************************************************************************************************** ok: [xx.xx.xx.xx] => { "msg": [ [ "Physical interface: ■■■■■■■■", " Receiver signal average optical power : ■■■■■■■■", "", "{master:0}" ] ] } TASK [Use the attachments API] ***************************************************************************************************************************** ok: [xx.xx.xx.xx] => {"changed": false, "msg": "OK"} PLAY RECAP ************************************************************************************************************************************************* xx.xx.xx.xx : ok=4 changed=0 unreachable=0 failed=0 hoge@dev ~/ansible-dev #
該当のソースコード
yaml
1--- 2- hosts: junos 3 connection: network_cli 4 gather_facts: no 5 become: yes 6 7 tasks: 8 - name: show diagnostics 9 junos_command: 10 commands: 11 - show interfaces diagnostics optics ■■■■■■■■ | match "Receiver|Physical" 12 when: ansible_network_os == "junos" 13 register: result 14 changed_when: false 15 - name: debug result.stdout_lines 16 debug: 17 msg: "{{ result.stdout_lines }}" 18 - name: debug result.stderr 19 debug: 20 msg: "{{ result.stderr_lines | default('None', true) }}" 21 22 - name: Use the attachments API 23 slack: 24 username: "{{ lookup('env', 'SLACKBOT_NAME') | default('ansibleBot') }}" 25 token: "{{ lookup('env', 'INCOMING_WEBHOOK_URL_SLACKFORMAT') }}" 26 channel: "{{ lookup('env', 'DST_CHANNEL') }}" 27 attachments: 28 - title: Display Result Interfaces Diagnostics Optics 29 text: "{{ inventory_hostname }}" 30 color: "#ff00dd" 31 fields: 32 - title: "[STDOUT] Interfaces Diagnostics Optics" 33 #value: "{{ result | default('None', true)}}" 34 #value: "{{ result.stdout_lines }}" 35 value: "{{ result.stdout }}" 36 #value: "success" 37 short: True 38 #short: False 39 - title: "[STDERR] Interfaces Diagnostics Optics" 40 #value: "{{ result.stderr | default('None', true)}}" 41 value: "failed" 42 short: True 43 #short: False 44
試したこと
・"failed"などとslackに通知する値をベタ書きしすると通知されることは確認できました。
attachments: - title: Display Result Interfaces Diagnostics Optics text: "{{ inventory_hostname }}" color: "#ff00dd" fields: - title: "[STDOUT] Interfaces Diagnostics Optics" #value: "{{ result | default('None', true)}}" #value: "{{ result.stdout_lines }}" value: "{{ result.stdout }}" #value: "success" short: True #short: False - title: "[STDERR] Interfaces Diagnostics Optics" #value: "{{ result.stderr | default('None', true)}}" value: "failed" short: True #short: False
補足情報(FW/ツールのバージョンなど)
ansible 2.7.10 python 2.7.5
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/09 03:00