初心者向けAnsibleを使ったホワイトボックススイッチの自動設定方法 part2

はじめに
前回の記事ではAnsibleは「ネットワーク構築を自動化するツール」であることを紹介し、事前に用意した設定ファイルを使うことで、BGPクロスネットワークを自動構築できることをお見せしました。今回は、その設定ファイルもAnsibleを使い自動生成できるところをご紹介していきたいと思います。
他にもOpen Networkingに関わる記事がありますので、以下「記事一覧はこちら」からご興味のある記事をご覧ください。
Ansibleで設定ファイルを作成するメリット
記事を読まれている皆さんの中では、わざわざAnsibleを使って設定ファイルを作成しなくても手作業で作成すればよいのではないか?っと思われる方もいらっしゃるかと思います。
確かに数台のスイッチの設定ファイルなら良いですが、大規模ネットワークのようなスイッチが数十台以上となってくると非常に時間がかかる作業となります。また、ミスが起こる可能性も大きいです。
ただ設定ファイルの内容を見ますとスイッチごとに大きな違いはなく、一部パラメーターが異なるだけではないでしょうか?
まさにそういった場面に、Ansibleのtemplateモジュールを使用することで、数十台スイッチの設定ファイルをそこまで苦労せず作成することができますし、将来構成を拡張することも容易に可能です。また、誤字の可能性も大幅に減らすことができます。
まとめると以下3点になります。

Ansibleを使用する3つのメリット
このメリットはtemplateモジュールのみでなくAnsibleそのものに対しても当てはまります。Ansibleは、大幅にユーザー負荷を下げてくれる非常に強力なツールです。
Ansibleのtemplateモジュールとは?
そもそもtemplateモジュールとはなんぞや?についてお話していきたいと思います。
templateモジュールは、Jinja2といわれるpython用のtemplateエンジンを利用することができるモジュールになります。これにより数十以上の設定ファイルをそれほど苦労せず自動作成することができるようになります。
具体的にはJinja2のtemplateファイルによって、for文やif文などの制御文と変数を組み合わせて使用することができ、スイッチごとにパラメーターを変更した設定ファイルをまとめて作成することが可能です。
それでは実際に動作させて動きをお見せしていきたいと思います。
Ansibleで設定ファイルの自動作成
それでは実際にAnsibleを使って設定ファイルを作成していきます。今回はOcNOSでBGPクロスネットワークを構成できるstartup-configを作成していきます。設定を適用後に構築されるネットワークは以前の記事で作成された構成と全く同じになります。
環境
・サーバー
‐Ubuntu 16.04
・ホワイトボックススイッチ
‐Edgecore : AS7726-32X x 2 & AS7326-56X x 2
・NOS
‐OcNOS 1.3.9

BGPクロスネットワーク図
Ansibleのディレクトリ構成
├── hosts #インベントリーファイル
│
├── make_conf.yaml #Playbookファイル
│
└── roles
│
├── leaf
│ │
│ ├── tasks
│ │ └── main.yml #leafのconfigを作成するtask
│ │
│ ├── templates
│ │ └── leaf.j2 #leaf用Jinja2 templateファイル
│ │
│ └── vars
│ └── main.yml #leafスイッチの変数を格納
│
└── spine
│
├── tasks
│ └── main.yml #spineのconfigを作成するtask
│
├── templates
│ └── spine.j2 #spine用Jinja2 templateファイル
│
└── vars
└── main.yml #leafスイッチの変数を格納
下記のように設定ファイル(hosts, Playbook)を設定します。
※これからご紹介する設定ファイルは本記事の最後にある資料ダウンロードフォームのアンケートにご回答いただけますと、ダウンロードできるようになっています。

hosts

Playbook
続いてrolesディレクトリーのspineの中身になります

spine/tasks/main.yml
上記は、templateモジュールを使い設定ファイルを作成後、/tmp/confgsディレクトリーにコピーするtaskになります。

spine/templates/spine.j2
Jinja2のtemplateファイルではif文やfor文を使用することで、スイッチごとに異なるパラメーターを持つ設定ファイルを作成することが可能です。
上図では赤字が変数、青字がif文, for文の箇所になります。

spine/vars/main.yml
templatesで使用される変数をまとめたファイルです。
rolesディレクトリーのleafについてはspineとほぼ同じため割愛します。
AnsibleでPlaybookを実行
続いて上記で記述したPlaybookを実行していきます

Playbook実行画面
正しく実行でき、4つの設定ファイルが作成されることが確認できます。

作成された4つの設定ファイル
続いて作成したファイルを各スイッチへ適用いたします。
(本記事ではご紹介しませんが、OcNOSの設定をAnsibleを使いホワイトボックス自動投入させることももちろん可能です。)
設定を適用後、BGPセッションが正常に確立されことが確認できます。

BGP結果
また、ルートも広報されており、各スイッチのloopbackへpingが飛ぶことが確認できます。

BGP ping実行結果
以上がAnsibleを使った設定ファイルの自動作成方法になります。
今回まででAnsibleを使った「ネットワーク構築を自動化するツール」を紹介する記事は一旦終わりになります。次回はスイッチの構築段階を自動化するZTPを紹介いたします。
資料ダウンロードフォーム
本記事で使用されている設定ファイルは以下「資料ダウンロードはこちら」よりアンケートにご回答いただきますと資料ダウンロードのご案内メールに記載されているURLよりダウンロードができます。
最後に
マクニカではオープンネットワーキングを実際に体験し、試験や検証をおこなえる環境をリモートで提供するサービスのご用意があります。
本サービスでは、ネットワークOSの操作性の検証、様々なメーカーのネットワークOSやホワイトボックススイッチ、光トランシーバーを組み合わせた試験をおこなえます。

リモート検証サービス イメージ図
気軽にオープンネットワーキングの検証をおこなえるサービスとなっており、基本構成での利用は無償になっています。
ご利用可能なネットワークOSやホワイトボックススイッチについて、具体的なユースケース、またお申し込み方法はダウンロード資料よりご確認いただけます。資料は下記「マクニカ ネットワークOS リモート検証サービス」よりアンケートにご回答いただきますとご案内メールに記載されているURLよりダウンロードができます。
こんな方がリモート検証サービスを利用しています。

実際に利用いただいた方の声をご紹介します。
古河ネットワークソリューション株式会社 様
「昨今リモートのサービス環境が増えていますが、その中でも評価機材へのアクセス性が良く好印象でした。
ご提供頂いた資料も分かり易く、目的とした検証を円滑に進めることができました。」
資料一覧はこちら
マクニカが取り扱う製品のご紹介のほか、
BGPクロスネットワーク自動構築ファイルやネットワーク運用試験評価レポートなど、オープンネットワーキングに関する資料を掲載しております。
詳細はこちら
製品ページTopへ
IP Infusion
オープンネットワーキングプロバイダのマーケットリーダーとして、キャリア、サービスプロバイダ、データセンターなど600社以上のお客様に信頼性の高いネットワークソリューションを提供しています。
お問い合わせ・資料請求
株式会社マクニカ Edgecore Networks 担当
- TEL:045-470-9831
- E-mail:projectmonstar@macnica.co.jp
平日 9:00~17:00