Contents
CIMC(Cisco Integrated Management Controller)
のEmulator(エミュレーター)を使ってみました。(HPだとiLO)Emulatorを使おうとしたきっかけは、CIMCのAPIを使って管理・監視の自動化ができないかと思ったからです。
ここでは、CIMC Emulatorの起動とアクセス及びAPIでログイン/ログアウト方法を記録しておきます。
Cisco IMC Emulator
CIMC API ドキュメント
環境
項目 | 内容 |
---|---|
CentOS | 7.3 |
CIMC Emulator | 3.0.3a |
ネットワーク情報
アドレス | 説明 |
---|---|
192.168.1.54 | Emulatorが起動するホストIP |
192.168.1.55 | Tap IP |
192.168.1.56 | CIMC Emulator IP |
CIMC Emulator インストール/起動
CIMC EmulatorはWebUIから設定してみます。(CUIからも可能です)
CIMC Emulatorのダウンロード以外は インストールスクリプト で自動化できるようにしました。
このスクリプトは cimc_emulator-3.0.3a.zip
がカレントに存在する前提です。
インストール
(1) CIMC Emulatorをダウンロードしてサーバへアップロードします。
https://cisco.app.box.com/v/CiscoIMCEmulator
(2) 必要なパッケージのインストールをします。
1 2 |
[root@localhost ~]# yum -y install gcc rpm-build docbook-utils bridge-utils unzip nc |
(3) tunctl
をインストールします。
1 2 3 4 5 6 7 |
[root@localhost ~]# curl -L https://sourceforge.net/projects/tunctl/files/tunctl/1.5/tunctl-1.5.tar.gz/download -o tunctl-1.5.tar.gz [root@localhost ~]# mkdir -p rpmbuild/SOURCES/ [root@localhost ~]# mv tunctl-1.5.tar.gz rpmbuild/SOURCES/ [root@localhost ~]# tar zxvf rpmbuild/SOURCES/tunctl-1.5.tar.gz tunctl-1.5/tunctl.spec [root@localhost ~]# rpmbuild -bb tunctl-1.5/tunctl.spec [root@localhost ~]# rpm -ivh rpmbuild/RPMS/x86_64/tunctl-1.5-1.x86_64.rpm |
(4) 一部修正するパッチを適応します。
標準だと 127.0.0.1
のループバックからしかアクセスを許可していません。
また、起動スクリプトにも一部間違いがあるので以下のパッチを適応します。(不要であれば当てなくても大丈夫です)
パッチ | MD5 |
---|---|
cimc_emulator.patch_.gz | MD5(cimc_emulator.patch_.gz)= df2e01365425729951dcc64f74b559db |
1 2 3 4 5 6 |
[root@localhost ~]# unzip cimc_emulator-3.0.3a.zip [root@localhost ~]# curl -L https://sky-joker.tech/wp-content/uploads/2017/10/cimc_emulator.patch_.gz -O [root@localhost ~]# gunzip cimc_emulator.patch_.gz [root@localhost ~]# cd cimc_emulator-3.0.3a [root@localhost cimc_emulator-3.0.3a]# patch -p1 < ../cimc_emulator.patch_ |
インストールスクリプト
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#!/usr/bin/bash yum -y install gcc rpm-build docbook-utils bridge-utils unzip nc curl -L https://sourceforge.net/projects/tunctl/files/tunctl/1.5/tunctl-1.5.tar.gz/download -o tunctl-1.5.tar.gz mkdir -p rpmbuild/SOURCES/ mv tunctl-1.5.tar.gz rpmbuild/SOURCES/ tar zxvf rpmbuild/SOURCES/tunctl-1.5.tar.gz tunctl-1.5/tunctl.spec rpmbuild -bb tunctl-1.5/tunctl.spec rpm -ivh rpmbuild/RPMS/x86_64/tunctl-1.5-1.x86_64.rpm unzip cimc_emulator-3.0.3a.zip curl -L https://sky-joker.tech/wp-content/uploads/2017/10/cimc_emulator.patch_.gz -O r=`openssl md5 cimc_emulator.patch_.gz | awk -F = '{print $2}' | sed -e "s/ //g"` if [ $r = "df2e01365425729951dcc64f74b559db" ] ; then gunzip cimc_emulator.patch_.gz cd cimc_emulator-3.0.3a patch -p1 < ../cimc_emulator.patch_ fi |
Emulator 起動
(1) 以下のコマンドを実行して起動します。
1 2 3 4 5 6 |
[root@localhost cimc_emulator-3.0.3a]# ./launch.sh Ncat: Connection refused. Server launched... Use http://127.0.0.1:8080/ to access WebUI. 'ctrl+c' to quit server. |
(2) ブラウザから http://IP:8080
へアクセスします。
(3) Create/Edit Instance
をクリックします。
(4) Name
にインスタンス名を入力して Select Product
からプロダクトを選択し Tap Network
をクリックします。
(5) 以下のパラメーターを入力して Create Network
をクリックします。
設定項目 | パラメーター |
---|---|
Tap IP | CIMC Emulatorの管理画面にアクセスするIP |
Emulator IP | CIMC EmulatorのIP |
Broadcast IP | ブロードキャストIP |
Netmask IP | ネットマスク |
Default Gateway | ゲートウェイ |
(6) Selected Configuration
の Create
をクリックします。
(7) Start
をクリックします。起動するまで、おおそよ20分程度かかりました。マシンスペックによってはそれ以上かかる可能性があります。
(8) Status
が Running
になったことを確認します。
Emulator アクセス
ここでは、Emulatorが起動するホストでSSHポートフォワーディングして接続してみます。
同セグであれば、そおらく直アクセスできると思います(未検証)。
(1) SSHポートフォワードをします。
1 2 |
[root@localhost ~]# ssh -g -L 443:192.168.1.56:443 192.168.1.54 |
(2) ブラウザで https://IP/login.html
へアクセスしてログイン画面が表示されることを確認します。
(3) 以下の情報でログインしてログインできることを確認します。
アカウント | パスワード |
---|---|
admin | password |
CIMC API
CIMCをAPIで使う前提として、ここではログイン・ログアウトをしてみます。
CIMCのAPIはXMLでやりとりをします。
ログイン構造
ログインのXMLは以下のものになります。
1 2 3 4 5 |
<aaaLogin inName='admin' inPassword='password'> </aaaLogin> |
ログアウト構造
ログアウトのXMLは以下のものになります。
1 2 3 4 5 |
<aaaLogout cookie="<real_cookie>" inCookie="<real_cookie>" </aaaLogout> |
ログイン・ログアウトスクリプト
ログイン・ログアウトするスクリプト例です。
以下スクリプトはpython3で作成しています。
スクリプトを動かすには xmltodict
と requests
が必要です。
このスクリプトを実行するとログイン時に取得できるCookieの表示と、取得したCookieを使ってログアウトします。
以下は使用例です。スクリプトの url
を環境に合わせて変更してください。
1 2 3 4 5 6 7 |
[root@localhost ~]# git clone https://gist.github.com/582cd8d1aea0a2ef90c3a556098c7711.git [root@localhost ~]# cd 582cd8d1aea0a2ef90c3a556098c7711/ [root@localhost 582cd8d1aea0a2ef90c3a556098c7711]# chmod +x cimc_login_logout.py [root@localhost 582cd8d1aea0a2ef90c3a556098c7711]# ./cimc_login_logout.py cookie: 1507467496/5f8b8895-5b09-1b09-8002-ee768522e470 Logout: success |
基本は取得したCookieとクエリを使ってCIMCから情報を取得したり設定したりします。