質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ansible

Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Slack

Slackは、Tiny Speckという企業からリリースされたコミュニケーションツールです。GoogleDriveやGitHubなど、さまざまな外部サービスと連携することができます。

Q&A

解決済

1回答

1814閲覧

junos commandモジュールで実行した結果をslackに通知出来ない

gkz

総合スコア12

Ansible

Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Slack

Slackは、Tiny Speckという企業からリリースされたコミュニケーションツールです。GoogleDriveやGitHubなど、さまざまな外部サービスと連携することができます。

0グッド

0クリップ

投稿2020/06/09 02:20

前提・実現したいこと

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

result.stdout の値は文字列ではなくリストなので、うまく解釈できなかったのかもしれません。
以下のように指定するといかがでしょう。

yaml

1value: "{{ result.stdout[0] }}

投稿2020/06/09 02:48

akira6592

総合スコア40

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gkz

2020/06/09 03:00

@akira6592 さん。ありがとうございます!!無事出来ました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問