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

はじめに
本記事より自動構成ツールであるAnsibleについて基本的な使用方法をご紹介していきます。最終的にはAnsibleを使いBGPクロスネットワークを構成していきます。
他にもOpen Networkingに関わる記事がありますので、以下「記事一覧はこちら」からご興味のある記事をご覧ください。
Ansibleとは?
それでは最初にAnsibleについてご紹介していきます。
Ansibleとは簡単にいうと「インフラ構成管理ツール」です。
サーバーへAnsibleをインストールし、管理対象に対しパッケージのインストールや設定ファイルの編集などを一括でかつ自動で行わせることが可能です。
ただ今回はネットワーク構築を自動化するツールとしての使用方法をご紹介してきます。

Ansibleによる自動設定イメージ図
Ansibleの動作
Ansibleの動作は非常にシンプルです。ユーザーが管理対象に対して「あるべき姿の状態」をPlaybookに記述し実行することで管理対象へ自動設定が可能です。
【手順】
① ユーザーがPlaybookを記述
② Ansibleホスト(サーバー)でPlaybookを実行
③ Playbookの内容に従い管理対象を自動設定

図2:Ansible概略図
いろいろワード出てきて混乱されると思いますので下記のように簡単にまとめました。
単語 | 意味 |
Inventory(インベントリー) | ・操作対象とするホストのアドレスを記述し、管理対象を定義するファイル ・デフォルトファイルは/etc/ansible/hosts |
Module(モジュール) | ・管理対象で実行される処理の最小単位 ・Tasksで指定した処理を実行する汎用ライブラリー |
Task(Tasks lists) | ・具体的な処理を実行する順に配列で記載したファイル |
Playbook | ・リモートホストの状態を定義したファイル(実行する処理内容) ・モジュールを複数組み合わせ、管理対象ホストに対し操作が可能 ・yamlで記述する |

Playbookの中身例
Ansibleの環境設定
続いてAnsibleを使用するための環境構築についてご紹介していきます。
まずAnsibleの動作に必要な環境は以下になります。
〇Ansibleホスト(サーバー)側
‐Ansible 2.3以降
‐Python 2.6以降
‐SSH接続可能であること
※管理対象のネットワークOSによって求められるversionが異なるため基本的には最新versionのご使用を推奨します。
上記はCumulusの場合の求められるversionになります。
サーバーへAnsibleのインストール
今回はUbuntuにAnsibleをインストールします。手順は下記になります。
$ sudo apt update
$ sudo apt install software-properties-common
$ sudo apt-add-repository --yes --update ppa:ansible/ansible
$ sudo apt install ansible
OSごとに少しずつインストール方法が異なるためUbuntu以外のOSをご使用の場合はAnsibleのホームページよりインストール手順をご参考にしてください。(下記URL)
Ansible接続確認
上記までで環境設定は終了です。次はAnsibleの接続試験を行っていきます。
Ansibleをインストールするとデフォルトで/etc/ansibleディレクトリーが作成されます。
そしてインベントリー(/etc/ansible/hosts)に対象ホストのアドレスを追記します。

Pingを実行する
下記コマンドを実行することでhostsに記述した全ての管理対象機器に対しサーバーからpingを行います。pingが通れば接続確認の完了です。
$ ansible -i [インベントリーファイル名] all –m ping

ping実行イメージ
今回はデフォルトのインベントリー(/etc/ansible/hosts)とは別に新たなhostsを用意し、それを指定し実行しています。
Ansibleでホワイトボックススイッチの自動設定
最後にAnsibleを使ってホワイトボックススイッチの自動設定をし、BGPクロスネットワークを構成していきます。今回はconfigファイルを事前に用意しておき、その各ファイルを対象スイッチへコピーし、設定を適用するPlaybookを用意します。
環境
・サーバー
‐Ubuntu 16.04
・ホワイトボックススイッチ
‐Edgecore : AS7726-32X x 2 & AS7326-56X x 2
・NOS
‐Cumulus Linux 3.7.14

BGPクロスネットワーク図
Ansibleのディレクトリー構成
┣━ hosts #インベントリーファイル
┃
┃━ setup.yaml #Playbookファイル
┃
┗━ bgp-unnumbered #各ホストの設定ファイルディレクトリー
┃
┣━ AS7726-A #AS7726-32X用設定ファイルディレクトリー
┃ ┣━daemons
┃ ┣━frr.conf
┃ ┗━interfaces
┃
┣━ AS7726-B #AS7726-32用設定ファイルディレクトリー
┃ ┣━daemons
┃ ┣━frr.conf
┃ ┗━interfaces
┃
┗━ AS7326-A #AS7326-54X用設定ファイルディレクトリー
┃ ┣━daemons
┃ ┣━frr.conf
┃ ┗━interfaces
┃
┗━ AS7326-B #AS7326-54X用設定ファイルディレクトリー
┣━daemons
┣━frr.conf
┗━interfaces
下記のように設定ファイルを用意します。

hosts

playbook
実行するTaskは下記5つ
① interfaceのコンフィグをスイッチへ投入するTask
② bgpのdaemonをenableにするTask
③ FRRのコンフィグをスイッチに投入するTask
④ interfaceコンフィグのreloadコマンドをスイッチで発行
⑤ frrコンフィグのreloadコマンドをスイッチで発行
inventry_hostnameは定義済み変数であり、hostsに書かれたホスト名を指す
AnsibleでPlaybookを実行
続いて上記で記述したPlaybookを実行していきます。

playbook実行ログ
スイッチを確認すると設定が反映されており、BGPセッションが確立されていることがわかります。

BGP実行結果①
ルートも正常に広報されています。

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

ping結果
以上が、Ansibleの基本的な使い方になります。次回はAnsibleで設定コンフィグを作成するところお見せしたいと思います。
最後に
マクニカではオープンネットワーキングを実際に体験し、試験や検証をおこなえる環境をリモートで提供するサービスのご用意があります。
本サービスでは、ネットワーク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