BIG-IP 操作説明(tmsh編)

スポンサーリンク

BIG-IPでtmsh(TMOS shell)の基本的な操作をまとめます。小規模な環境ならば、BIG-IPをGUIで操作する事もありますが、それこそvirtual serverが100を超えるような環境ならばGUIでオペミスなく操作するのは不可能です。このような環境にも対応できるように、BIG-IPではtmshと呼ばれるCLI操作をサポートしています。

BIG-IPのシェルについて

Advanced Shell

以下はBIG-IP version 16.1.0のログです。この出力の通り、BIG-IPはRedhat系OSベースに作成されたネットワーク製品です。

[root@bigip01:Active:Standalone] config # cat /etc/redhat-release 
CentOS Linux release 7.3.1611 (Core) 
[root@bigip01:Active:Standalone] config # 
[root@bigip01:Active:Standalone] config # bash --version
GNU bash, version 4.2.46(2)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
[root@bigip01:Active:Standalone] config # 

この出力の通り、BIG-IPはRedhat系OSと同じようにB-Shellを使う事ができます。pingコマンドもcurlコマンドもtcpdumpコマンドも使えます。このB-shellはBIG-IPでは「Advanced Shell」と呼ばれる事もあります。後述のtmshに比べて強い権限の操作が可能であるため「Advanced Shell」と名付けられています。

tmsh

BIG-IPには、BIG-IP専用の操作に特化したTMOSと呼ばれる仕組みがあります。このOSで使用するシェルがtmshです。tmshを使用するには、Advanced Shellでtmshコマンドを実行します。

[root@bigip01:Active:Standalone] config # tmsh
root@(bigip01)(cfg-sync Standalone)(Active)(/Common)(tmos)# 

tmshからAdvanced Shellに戻るにはquitを使います。

root@(bigip01)(cfg-sync Standalone)(Active)(/Common)(tmos)# quit
[root@bigip01:Active:Standalone] config # 

権限設定

Advanced Shellはより強い権限となるため、tmshのみ使用させるような権限設定も可能です。どのようなCLI操作を許可するかは、以下スクリーンショットの通り、ユーザ単位で設定する事ができます。

BIG-IP cli権限設定

tmsh 操作

tmshの基本操作

tmshは、他のネットワークOSと似たような操作感がです。タブで入力補完されますし、候補も表示されます。

BIG-IP tmshの入力候補表示

「?」でヘルプストリングを表示する事もできます。

BIG-IP tmshのヘルプストリング

tmshの基本コマンド

tmshでよく使用するのは、create, modify, delete, list, showコマンドです。意味は文字通りで、以下に使用例を示します。

createコマンド

createコマンドは何かの設定を「作成」する時に使うコマンドです。以下はVLANを作成するコマンドの例です。

create net vlan VLAN_EXTERNAL tag 999 mtu 3000

createは「作成」であり「変更」ではありません。例えば、上記の設定を変更しようとcreateコマンドを使うと以下のようにエラーになります。もし、設定値を変更したい時は後述のmodifyコマンドを使います。

root@(bigip02)(cfg-sync Standalone)(Active)(/Common)(tmos)# create net vlan VLAN_EXTERNAL tag 999 mtu 9000
01020066:3: The requested VLAN (/Common/VLAN_EXTERNAL) already exists in partition Common.

modifyコマンド

modifyコマンドは何かの設定を「変更」する時に使うコマンドです。以下はVLANを変更するコマンドの例です。

modify net vlan VLAN_EXTERNAL tag 999 mtu 9000

listコマンド

listは設定をそのまま表示するコマンドです。Ciscoなどで言えばshow running-configに相当するものです。VLANの設定を表示する例は以下の通りです。

list net vlan VLAN_EXTERNAL

実行例は以下の通りです。設定ファイルbigip.confやbigip_base.confに表示される内容と全く同じものが出力されます。

root@(bigip02)(cfg-sync Standalone)(Active)(/Common)(tmos)# list net vlan VLAN_EXTERNAL 
net vlan VLAN_EXTERNAL {
    if-index 176
    mtu 9000
    tag 999
}

showコマンド

showコマンドは設定をBIG-IPがどのように認識しているかを確かめるコマンドです。VLANの設定を表示する例は以下の通りです。

show net vlan VLAN_EXTERNAL

実行例は以下の通りです。前述のlistコマンドとは異なり、showはBIG-IPがどのように設定を認識しているかの出力です。

root@(bigip02)(cfg-sync Standalone)(Active)(/Common)(tmos)# show net vlan VLAN_EXTERNAL 

-------------------------------------
Net::Vlan: VLAN_EXTERNAL
-------------------------------------
Interface Name      VLAN_EXTERNAL
Mac Address (True)  00:98:76:54:32:10
MTU                 9000
Tag                 999
Customer-Tag         

  | Incoming Discard Packets          0
  | Incoming Error Packets            0
  | Incoming Unknown Proto Packets    0
  | Outgoing Discard Packets          9
  | Outgoing Error Packets            0
  | HC Incoming Octets              360
  | HC Incoming Unicast Packets       0
  | HC Incoming Multicast Packets     4
  | HC Incoming Broadcast Packets     0
  | HC Outgoing Octets                0
  | HC Outgoing Unicast Packets       0
  | HC Outgoing Multicast Packets     0
  | HC Outgoing Broadcast Packets     0
  | PVA Incoming Packets              0
  | PVA Incoming Octets               0
  | PVA Outgoing Packets              0
  | PVA Outgoing Octets               0

deleteコマンド

deleteコマンドは何かの設定を「削除」する時に使うコマンドです。以下はVLANを削除するコマンドの例です。

delete net vlan VLAN_EXTERNAL

設定保存の設定ファイル

GUI操作では画面切り替わりの都度、設定がディスクへと保存されます。

一方、CLI操作は自動的に保存されません。設定を保存するには、以下のsaveコマンドを使用します。

save sys config

保存された設定は/config/bigip.confや/config/bigip_base.confに書き込まれます。これら設定ファイルはAdvanced Shellからならば、grepコマンドやviコマンドなどの一般的なLinuxの操作もできます。

以下に簡単な動作確認例を載せます。vlan作成後に/config/bigip_base.confに反映されている事を確認する操作例です。

root@(bigip02)(cfg-sync Standalone)(Active)(/Common)(tmos)# create net vlan VLAN_EXTERNAL tag 999 mtu 3000
root@(bigip02)(cfg-sync Standalone)(Active)(/Common)(tmos)# 
root@(bigip02)(cfg-sync Standalone)(Active)(/Common)(tmos)# 
root@(bigip02)(cfg-sync Standalone)(Active)(/Common)(tmos)# save sys config
Saving running configuration...
  /config/bigip.conf
  /config/bigip_base.conf
  /config/bigip_user.conf
Saving Ethernet map ...done
Saving PCI map ...
 - verifying checksum .../var/run/f5pcimap: OK
done
 - saving ...done
root@(bigip02)(cfg-sync Standalone)(Active)(/Common)(tmos)# 
root@(bigip02)(cfg-sync Standalone)(Active)(/Common)(tmos)# 
root@(bigip02)(cfg-sync Standalone)(Active)(/Common)(tmos)# quit
[root@bigip02:Active:Standalone] config # 
[root@bigip02:Active:Standalone] config # 
[root@bigip02:Active:Standalone] config # grep VLAN_EXTERNAL -A 4 /config/bigip_base.conf
        /Common/VLAN_EXTERNAL
        /Common/http-tunnel
        /Common/socks-tunnel
    }
}
--
net vlan /Common/VLAN_EXTERNAL {
    mtu 3000
    tag 999
}
net fdb tunnel /Common/http-tunnel { }
--
net fdb vlan /Common/VLAN_EXTERNAL { }
net tunnels tunnel /Common/http-tunnel {
    description "Tunnel for http-explicit profile"
    profile /Common/tcp-forward
}
[root@bigip02:Active:Standalone] config # 

Advanced Shellからのtmsh実行

今まではtmshコマンドでTMOSに入る方法を紹介しました。この方法を使えば、入力補完やヘルプストリングの恩恵を受ける事ができます。

しかし、これら恩恵がいらないならば、tmshの後にコマンドを指定する事で直接実行する事もできます。使用例は以下の通りです。

[root@bigip02:Active:Standalone] config # tmsh delete net vlan VLAN_EXTERNAL
[root@bigip02:Active:Standalone] config # 

BIG-IP上で非インタラクティブな処理を実行したい時は、このテクニックを知っていると非常に便利です。

設定流し込みの工夫

tmshコマンドは設定を施す毎に構文解析して設定をメモリ上に展開する処理を実施します。実はこの処理が非常に重たいため、狂気的な短納期を強制するようなプロジェクトでは「設定をまとめて投入する」工夫で時間短縮する必要があります。

これは処理そのものの待ち時間の問題なので、Ansibleなどの自動化で解消できるような問題ではありません。Ansibleを使ったとしても同様の工夫が求められます。

load sys config merge

load sys config mergeコマンドを使うと設定をbigip.confに書かれている形で流し込む事ができます。まずは、load sys config merge from-terminalコマンドを入力します。

load sys config merge from-terminal 01

以下のようなテキストファイルを作成し、ターミナルに貼り付けます。

net vlan VLAN0200 {
    interfaces {
        1.3 {
            tagged
        }
    }
    mtu 9000
    tag 200
}
net vlan VLAN0201 {
    interfaces {
        1.3 {
            tagged
        }
    }
    mtu 9000
    tag 201
}
net vlan VLAN0202 {
    interfaces {
        1.3 {
            tagged
        }
    }
    mtu 9000
    tag 202
}

load sys config merge from-terminal 02

Ctrl+Dで設定反映し、Ctrl+Cならばキャンセル操作です。

load sys config merge from-terminal 03

configファイルの直接編集

/config/bigip.conf, /config/bigip_base.confをviコマンドやsedコマンドで編集し、それを反映させる事もできます。例えば、命名規則の仕様変更が発生した場合などでは、sedコマンドで一括置換するのは非常に便利でしょう。

設定ファイル編集後に以下のコマンドで設定ファイルを読み込んで設定を反映させる事ができます。

load sys config

非常に高速で便利な操作ですが、わりと事故が発生しやすい危険な操作です。bigip.conf, bigip_base.confのバックアップがあった方が、もしもの時の復旧が早くなります。構築作業限定の操作であり、サービスイン後は絶対にオススメしません。

タイトルとURLをコピーしました