はじめに

本記事より自動構成ツールである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)

https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html?extIdCarryOver=true&sc_cid=701f2000001OH7YAAW

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で設定コンフィグを作成するところお見せしたいと思います。

最後に

マクニカではオープンネットワーキングを実際に体験し、試験や検証を行える環境をリモートで提供するサービスのご用意がございます。基本構成での検証では無償でご利用可能となっております。より詳細は以下に記載がございますのでもしご興味がございましたらご覧ください。

お問い合わせ

本記事に関してご質問などありましたら、以下より問い合わせください。

Open Networking Blogとは?

さまざまなOpen Networking(オープンネットワーキング)に関わるトピックを分かりやすく説明している技術情報ページです。