ネットワーク機器へのコマンド投入

運用自動化する上でネットワーク機器に接続し設定情報や構成を取得したい場合があるかと思います。
Kompira Enterprise にはネットワーク機器やサーバに接続しコマンド実行を行う機能があります。
本稿ではその機能を利用したネットワーク機器からの情報収集の手順を紹介します。

紹介する内容は以下の通りです。

・NW 機器に SSH 接続し、コマンド実行によって機器の情報を取得する
・NW 機器にプロキシサーバ経由で SSH 接続し、コマンド実行によって機器の情報を取得する

※ 対応している接続方法については SSH のみとなります。telnet には対応していません。


動作確認環境

ソフトウェア バージョン
Kompira Enterprise 1.5.5.post11
OS CentOS 7.8.2003
VyOS 1.1.8
プロキシサーバ CentOS 7.8.2003

または

ソフトウェア バージョン
Kompira Enterprise 1.6.2.post4
OS CentOS 7.8.2003
VyOS 1.1.8
プロキシサーバ CentOS 7.8.2003

または

ソフトウェア バージョン
Kompira Enterprise 1.6.8
OS CentOS Stream 8
VyOS 1.1.8
プロキシサーバ CentOS Stream 8

ネットワーク機器に SSH 接続

Kompira Enterprise にはネットワーク機器に接続する機能がデフォルトで用意されています。

本稿ではその機能を使用して接続します。

以下の手順でネットワーク機器に接続します。

・Kompira Enterprise 上にアカウント情報オブジェクトを作成

・Kompira Enterprise 上にノード情報オブジェクトを作成

・VyOS 上にスクリプト配置

・コマンド実行

※ VyOS の場合、VyOS コマンドの直接実行は動作しないためスクリプトを配置する必要があります。

ネットワーク構成

以下のような環境で検証しています。

※ IP アドレスは一例です

Kompira Enterprise 上にアカウント情報オブジェクトを作成

まず対象機器 (VyOS ルータ) に接続するためのアカウント情報型オブジェクト「VyOSユーザ」を作成します。

以下のオブジェクトの編集画面では、「ユーザ名」「パスワード」の指定をします。
認証に鍵ファイルが必要な場合は、別途鍵ファイルのパスやパスフレーズを登録してください。

Kompira Enterprise 上にノード情報オブジェクトを作成

次に接続先のノード情報型オブジェクト「VyOSルータ」を作成します。

※以下の画像は Kompira Enterprise バージョン 1.6.8 時点のものです。他のバージョンでは項目が異なることがあります。

以下のように設定します。

項目
ノード種別 SSH
接続種別 SSH
IPアドレス (VyOS ルータの IP アドレス)
ポート番号 22
シェル使用 チェックを外す
アカウント VyOSユーザ

VyOS 上にスクリプト配置

VyOS の場合、Bash の Complete 機能を用いてコマンドを実現しています。
通常の Bash コマンド (date 等) であれば動作はしますが、VyOS コマンドの直接実行は動作しません。スクリプトを経由させて間接的にコマンドを実行する必要があります。

そこで、以下のように run-command.sh スクリプトを作成します

※ VyOS を使用しない場合は本手順は不要です。

$ vi ~/run-command.sh

run-command.sh

#!/bin/vbash

vyatta_sbin=/opt/vyatta/sbin
args=$*
. /etc/bash_completion
eval _vyatta_op_run $args

作成したら、以下のように実行権限を付与します。

$ chmod a+x ~/run-command.sh

コマンド実行

以下のようなジョブフロー「VyOS設定取得」を生成し、VyOS からバージョン情報を取得します。
ジョブフローは VyOS ノード情報と同階層のディレクトリに作成します。

「VyOS設定取得」

[ __node__ = ./VyOSルータ ] ->
["~/run-command.sh show version"]

※Kompira Enterprise 1.6 系から、コマンドを入力した際に自動で結果が出力されるようになりました。Kompira Enterprise 1.5 系の場合は、コマンドの最後に print($RESULT) を入れるようにしてください。

正常に実行できた場合はバージョン情報が以下のように出力されます。

プロキシ (踏み台) 経由の接続

ネットワーク環境によっては情報収集の対象機器に対して、Kompira Enterprise からの直接 SSH 接続を許可していない場合もあります。
この場合、プロキシサーバを経由した接続をしているネットワーク環境がほとんどだと思われます。
本項ではプロキシサーバ経由の SSH 接続について紹介します。

以下の手順で設定します。

・プロキシサーバ用のアカウント情報の作成

・プロキシサーバ用のノード情報の作成

・VyOS ルータのノード情報の修正

ネットワーク構成

以下のような環境で検証しています。

※ IP アドレスは一例です

プロキシサーバ用のアカウント情報の作成

プロキシサーバに接続するためのアカウント型オブジェクト「プロキシユーザ」を作成します。

このオブジェクトの編集画面では、「ユーザ名」「パスワード」の指定をします。
認証に鍵ファイルが必要な場合は、別途鍵ファイルのパスやパスフレーズを登録してください。

プロキシサーバ用のノード情報の作成

プロキシサーバ用のノード情報型オブジェクト「プロキシサーバ」を作成します。

※以下の画像は Kompira Enterprise バージョン 1.6.8 時点のものです。他のバージョンでは項目が異なることがあります。

項目
ノード種別 SSH
接続種別 SSH
IPアドレス  (プロキシサーバの IP アドレス)
ポート番号 22
シェル使用 チェックを入れる
アカウント プロキシユーザ

「VyOSルータ」のノード情報の修正

先に作成したノード情報型オブジェクト「VyOSルータ」の「プロキシ」に「プロキシサーバ」を追加します。

設定後、ジョブフロー「VyOS設定取得」を実行します。
コマンドの実行結果が正常であればプロキシ経由での実行は正常に動作しています。

またプロキシサーバの /var/log/secure を確認し、以下のようなログが出力されていればプロキシ経由での接続ができていることが分かります。

Jun 21 17:45:03 (プロキシサーバ名) sshd[15723]: Accepted password for root from 192.168.0.1 port 51738 ssh2
Jun 21 17:45:03 (プロキシサーバ名) sshd[15723]: pam_unix(sshd:session): session opened for user (ユーザ名) by (uid=0)

まとめ

本稿では Kompira Enterprise の機能を使ったネットワーク機器からの情報収集について紹介しました。
今回紹介したのは単純な情報取得のコマンドの実行までですが、「Kompira Enterprise のセッション機能を利用して対話的にコマンドを実行する」といった記事と組み合わせれば、複雑な運用の自動化も可能です。

参考

本文中にでてきた VyOS 内で実行するスクリプトについては以下のブログを参考にしました。
http://d.hatena.ne.jp/iamsandman/20110510/1304984590

TOP