ZTP(Zero Touch Provisioning)とAnsibleで実現するMellanoxスイッチの初期構成方法(Ansible編)
- 前回はZTPを利用したMellanoxスイッチの初期設定についてご紹介をさせていただきました。
今回は、ZTPで設定後、また既存で利用されているMellanoxスイッチについてAnsibleを利用して、Mellanoxスイッチの状態チェックや設定についてご紹介させていただきます。
Ansibleについて
様々な構成管理ツールがソリューションとして活用されている状況で、Ansibleのメリットとしてはエージェントレスで動作が可能なことや、YAML形式で記述されたPlaybookを実行することにより冪等性のある結果を出力できること等がございます。
もちろんAnsibleのネットワークモジュールの中にはMellanoxのモジュールもありますので、モジュールを活用して、ZTPで構成後の変更などに活用できます。
また、既存Mellanox機器、また既存サーバ、ネットワーク機器に対する一連のオートメーション等でも活用出来ます。
なお記事執筆時のAnsible 2.8で追加されているMellanoxのモジュールリストは以下となります。
本環境のAnsibleのバージョン情報
Ansible 2.8のMellanoxモジュールリスト
前回のおさらいとして、今回も簡易的な実践方法のご紹介のため、Ansibleを利用したネットワーク構成は以下のような構成で実施しています。
- Mellanox SN2010とMSX6012FのマネジメントポートにLANケーブルが接続され、ZTP and Ansible server(以下、Ansible SV)と疎通がとれる状態にて、Ansible SVからPlaybookを実行
- Ansible SVに実行したPlaybookモジュールのコマンド結果が表示
Ansibleのインストール
様々なサイトにて記載がされておりますので、サマリーとして記載をさせていただきます。
※ 今回はCentOS 7.2.1810を利用し、rootログインで実行しています。
1. Ansible SVサーバにログイン
2. CentOS 7にEPELリポジトリを追加するため、以下のコマンドにて追加
yum install epel-release
3. EPELリポジトリを追加後にansibleをインストール(依存関係のパッケージも一緒にインストールを実施)
yum install ansible
4. Ansibleをインストール後、以下のコマンドにてAnsibleのversion、またMellanoxのモジュール一覧の確認
ansible –version
ansible-doc –list | grep onyx
Ansibleのhosts設定ファイルについて
hostsを以下のように編集し、保存します。
hosts (/etc/ansible/hosts)
※ [Mellanox]グループのみを定義し、記述しているIPアドレスは、各MellanoxスイッチのIPアドレスとなります。
192.168.20.190 が、MSX6012F
192.168.20.192 が、SN2010
※ [Mellanox:vars]以下に記述しているパラメータは、利用するOSタイプ、ログイン名、パスワードを設定しています。
構成定義ファイル(Playbook)
■show.ymlのPlaybookファイル(showコマンド系をリスト化)
・hostsパラメータは、/etc/ansible/hostsファイル内のパラメータを参照します。
・gather_factsパラメータは、ターゲットノードのメタ情報は必要ないためfalseとしています。
・connectionパラメータは、SSH接続でコマンドを実行するためnetwork_cliとしています。
・tasksパラメータは、Mellanoxスイッチのshowコマンドを記述します。
■show.ymlの実行
ansible-playbookコマンドにて以下のように実行します。
ansible-playbook show.yml
この状態でコマンドを実行すると以下のような結果出力となります。
この状態だと結果しか出力されないため、verboseオプションを使用し、debug出力をいれると以下のような出力となります。
debugレベルの詳細な出力が表示されるので、確認結果をリダイレクトし、編集などを実施し、活用することも可能となります。
■config.ymlのPlaybookファイル(コマンド系をリスト化)
・hostsパラメータは、/etc/ansible/hostsファイル内のパラメータを参照します。
・gather_factsパラメータは、ターゲットノードのメタ情報は必要ないためfalseとしています。
・becomeパラメータは、admin権限でのタスクを実行するためyesとしています。
・become_methodパラメータは、admin権限を利用するためenableとしています。
・tasksパラメータは、Mellanoxスイッチのconfigコマンドを記述し、saveをyesにすることにより設定を保存するようにしています。
■config.ymlの実行
ansible-playbookコマンドにて以下のように実行します。
ansible-playbook config.yml
この状態でコマンドを実行すると以下のような結果出力となります。
この状態だと先程のshow.ymlと同様に結果しか出力されないため、verboseオプションを使用し、debug出力をいれると以下のような出力となります。
こちらもdebugレベルの詳細な出力が表示されるので、確認結果をリダイレクトし、編集などを実施し、活用することも可能となります。
Ansibleのまとめ
Ansibleを活用してMellanoxスイッチを管理、運用する場合、Ansibleをインストールしたサーバを用意することにより、AnsibleのMellanoxモジュールを利用して様々な構成の参照や変更が可能となります。
また台数が多い場合は各スイッチに対してグループを作成してタスクを別にすることにより、相当数のMellanoxスイッチについて一括管理が可能となります。
今回は、Ansible Towerについては利用していませんが、Ansible Towerを利用することによりダッシュボードによる可視化、タスクのスケジューリングなども可能となり、Mellanoxスイッチやサーバや各種スイッチ、ルータ等のオートメーション管理、また運用性を大幅に改善できる可能性がございます。
MellanoxとZTP/Ansibleのまとめ
前編のMellanoxとZTP、後編のMellanoxとAnsibleについて、2編に渡りMellanoxスイッチで実現できる方法についてご説明をさせていただきました。
Mellanoxというと、HPC(ハイパフォーマンスコンピューティング)で利用されるInfiniBand(インフィニバンド)のイメージが強いかもしれませんが、現在、Mellanoxスイッチにつきましても多様な業種の企業様にてご利用いただき嬉しい限りでございます。
その中でMellanoxスイッチの台数が多くなって来た場合のオートメーション運用、台数が少ない場合でもサーバや他社スイッチとの連携、またベースコンフィグによる復旧対応など、Mellanoxスイッチでも実現できますので、是非お試しいただき、Mellanoxスイッチの管理、運用における工数の削減などに寄与できればと思います。
以上、Mellanoxスイッチを利用したZTPとAnsibleの活用についてのご紹介となります。