Enterprise 技術情報 Enterprise Technical information
外部との連携 ネットワーク機器へのコマンド投入
運用自動化する上でネットワーク機器に接続し設定情報や構成を取得したい場合があるかと思います。
Kompira enterprise(以降Kompiraと表記)にはネットワーク機器やサーバに接続しコマンド実行を行う機能があります。
本稿ではその機能を利用したネットワーク機器からの情報収集の手順を紹介します。
紹介する内容は以下の通りです。
・NW機器にSSH接続し、コマンド実行によって機器の情報を取得する
・NW機器にProxy経由でSSH接続し、コマンド実行によって機器の情報を取得する
なお、対応している接続方法についてはSSH(version2)のみとなります。
SSH(version1)やtelnetには対応していません。
環境情報
本稿では以下の環境で検証しています。
Kompiraサーバ
項目 | バージョン |
OS | CentOS Linux release 7.6.1810 |
Kompira | ver.1.5.3 |
VyOSルータ
項目 | バージョン |
OS | VyOS 1.1.8 |
プロキシ(踏み台)サーバ
項目 | バージョン |
OS | CentOS Linux release 7.6.1810 |
ネットワーク機器にSSH接続
Kompiraにはネットワーク機器に接続する機能がデフォルトで用意されています。
本稿ではその機能を使用して接続します。
以下の手順でネットワーク機器に接続します。
・Kompira上にアカウント情報オブジェクトを作成
・Kompira上にノード情報オブジェクトを作成
・VyOS上にスクリプト配置(※)
・コマンド実行
※: VyOSの場合、VyOSコマンドの直接実行は動作しないためスクリプトを配置する必要があります。
ネットワーク構成
以下のような環境で検証しています。
Kompira上にアカウント情報オブジェクトを作成
まず対象機器(VyOSルータ)に接続するためのアカウントを作成します。
次のオブジェクトを作成します。
名前 | VyOSユーザ |
型 | アカウント情報 |
このオブジェクトの編集画面では、「ユーザー名」「パスワード」の指定をします。
認証に鍵ファイルが必要な場合は、別途鍵ファイルのパスやパスフレーズを登録してください。
Kompira上にノード情報オブジェクトを作成
次に接続先のノード情報を作成します。
次のオブジェクトを作成します。
名前 | VyOSルータ |
型 | ノード情報 |
以下のような設定を実施します。
項目 | 値 |
IPアドレス | 192.168.1.Z(VyOSルータのIPアドレス) |
ポート番号 | 22 |
接続種別 | ssh |
シェル使用 | チェックなし |
アカウント | VyOSユーザ |
VyOS上にスクリプト配置
VyOSの場合、BashのComplete機能を用いてコマンドを実現しています。
通常のBashコマンド(date等)であれば動作はしますが、VyOSコマンドの直接実行は動作しません。
VyOSを使用しない場合は本手順は不要です。
以下のようなスクリプトを経由させて間接的にコマンドを実行する必要があります。
vi ~operator/run-command.sh
#!/bin/vbash vyatta_sbin=/opt/vyatta/sbin args=$* . /etc/bash_completion eval _vyatta_op_run $args
実行権限を付与します。
chmod a+x ~operator/run-command.sh
コマンド実行
以下のようなジョブフローを生成し、VyOSからバージョン情報を取得します。
ジョブフローはVyOSノード情報と同階層のディレクトリに作成します。
名前 | VyOS設定取得ジョブフロー |
型 | ジョブフロー |
[ __node__ = ./VyOSルータ ] -> ["~/run-command.sh show version"] -> print($RESULT)
正常に実行できた場合はバージョン情報が以下のように出力されます。
プロキシ(踏み台)経由の接続
ネットワーク環境によっては情報収集の対象機器に対して、Kompiraからの直接SSH接続を許可していない場合もあります。
この場合、プロキシサーバを経由した接続をしているネットワーク環境がほとんどだと思われます。
本項ではプロキシサーバ経由のSSH接続について紹介します。
以下の手順で設定します。
・プロキシサーバ用のアカウント情報の作成
・プロキシサーバ用のノード情報の作成
・VyOSルータのノード情報の修正
ネットワーク構成
以下のような環境で検証しています。
プロキシサーバ用のアカウント情報の作成
プロキシサーバに接続するためのアカウントを作成します。
次のオブジェクトを作成します。
名前 | プロキシユーザ |
型 | アカウント情報 |
このオブジェクトの編集画面では、「ユーザー名」「パスワード」の指定をします。
認証に鍵ファイルが必要な場合は、別途鍵ファイルのパスやパスフレーズを登録してください。
プロキシサーバ用のノード情報の作成
プロキシサーバ用のノード情報を作成します。
次のオブジェクトを作成します。
名前 | プロキシサーバ |
型 | ノード情報 |
項目 | 値 |
IPアドレス | 192.168.1.Y(プロキシサーバのIPアドレス) |
ポート番号 | 22 |
接続種別 | ssh |
シェル使用 | チェック有 |
アカウント | プロキシユーザ |
VyOSルータのノード情報の修正
VyOSルータのノード情報を修正します。
IPアドレス | 192.168.1.Z(プロキシサーバより接続できるIPアドレス) |
プロキシ | プロキシサーバ |
設定後、VyOS設定取得ジョブフローを実行します。
コマンドの実行結果が正常であればプロキシ経由での実行は正常に動作しています。
またプロキシサーバの/var/log/secure
を確認し、以下のようなログが出力されていればプロキシ経由での接続ができていることが分かります。
Dec 10 16:57:57 jumphost_server sshd[2137]: Accepted password for user001 from 172.28.13.60 port 37686 ssh2 Dec 10 16:57:57 jumphost_server sshd[2137]: pam_unix(sshd:session): session opened for user user001 by (uid=0)
まとめ
本稿ではKompiraの機能を使ったネットワーク機器からの情報収集について紹介しました。
今回紹介したのは単純な情報取得のコマンドの実行までですが、「Kompiraのセッション機能を利用して対話的にコマンドを実行する」といった記事と組み合わせれば、複雑な運用の自動化も可能です。
参考
本文中にでてきたVyOS内で実行するスクリプトについては以下のブログを参考にしました。
http://d.hatena.ne.jp/iamsandman/20110510/1304984590
スタートガイド
Kompiraジョブフローの基礎
ジョブフローの簡単な例
Kompiraの機能
-
- フィールド修飾子でフィールドの入力内容に制約を設ける
- Kompiraでの文字列のパターンマッチング
- Kompira上でWikiページを作成する
- スケジューラを使って定期的にジョブを実行する
- ジョブフローを実行するフォームを作成する
- テーブル内の情報を選択して処理を実行する
- ジョブフローに権限設定をする
- ジョブフロー画面の各種設定
- Pythonで記述された処理をKompiraから呼び出す
- Kompiraオブジェクトのプロパティ,メソッド,フィールドを扱う
- Windowsでリモートスクリプトを実行する(その1)
- Windowsでリモートスクリプトを実行する(その2)
- Kompira上のデータをバックアップする(その1)
- Kompira上のデータをバックアップする(その2)
- Kompira上のデータをバックアップする(その3)
外部との連携
-
- Prometheusからの通知をKompiraで受信する
- Kompira cloud Pigeonを利用した通知電話の利用
- ネットワーク機器へのコマンド投入
- KompiraからWindowsGUIアプリケーションを操作する (1/2)
- メールを送信する
- メール受信をトリガーにしてジョブフローを実行する
- アラートメールをフィルタリングして転送する
- チャネルを利用して外部システムからデータを受信する
- Webページから内容を取得する
- Redmineへ新規チケットを登録する
- Redmineでのチケット作成をKompiraに通知する
- Kompira REST APIを利用して外部からジョブフローを実行する
- Kompira REST APIを利用して外部からオブジェクト情報を取得する
- KompiraからSlackに通知する
- Slackでの投稿をKompiraに通知する
- KompiraからTwilioで電話をかける
- Zabbixからの通知をKompiraで受信する
- syslogをKompiraで受信する
- snmptrapをKompiraで受信する
- KompiraでExcelファイルの読み書きをする
- KompiraでGoogle SpreadSheetの読み書きをする
- Active Directoryから情報を取得する
- Active Directoryにユーザーを登録する