はじめに

Open Networking(オープンネットワーキング)について取り上げた第2~4回記事ではZero Touch Provisioning(ZTP)とAnsibleをそれぞれご紹介しました。

今回の記事ではその2つを組み合わせて実施できるより効率的なネットワーク構築方法をご紹介いたします。

ZTPとAnsibleについて

ZTPでできること

ZTPについて簡単にまずおさらいしますと、ホワイトボックススイッチなどの機器を導入したいネットワークへ接続し、電源を入れるだけで自動的に設定がおこなわれ、使用できるようにする仕組みになります。

図にすると下記のような流れになり、DHCP SeverとWeb Serverを用意すれば簡単に構築が可能です。

 

① ホワイトボックススイッチを起動すると、DHCP requestが開始

② DHCP ServerはホワイトボックススイッチからのDHCP Requestに対してAckを返答

  この際にIPアドレスだけでなく、NOS image fileやLicense、Config fileの保存場所も通知

③ ホワイトボックススイッチはDHCP serverから通知された情報を基にWeb serverへアクセス

④ Web ServerからNOS image fileやLicense、Config fileをダウンロードし、ダウンロードした各種ファイルをホワイトボックススイッチに適応し、設定作業完了

ZTPの構成例図

ZTPの詳細については第4回の記事に詳細な説明がありますので、よかったらご覧ください

 

ZTPメリット/デメリット

ZTP単体の時のメリット/デメリットは下記になります。

 

 

[メリット]

 ・設定がシンプルであるためZTP環境の構築が難しくない

 

[デメリット]

 ・各ホワイトボックススイッチのConfigを事前に作成する必要がある

 ・初期設定に変更があれば自動で修正する仕組みがなければ全てのConfigに対してマニュアルで修正する必要がある

 

 

ZTP環境自体の構築事態は難しくありませんが、各ホワイトボックススイッチ用のConfigを用意する必要があり、この数が多いほどマニュアルによる準備の時間がかかってしまうのが課題となっています。

ZTP x Ansibleでできること

続いて、ZTP x Ansibleについてご紹介していきます。

基本的な流れはZTP単体と同じですが、Configの作成をAnsibleで行うことが可能となっています。

 

① ZTPで各ホワイトボックススイッチのConfigを適応(ConfigはAnsibleで作成)

② 設定変更時はAnsibleホスト上のPlaybookを編集/実行によって、リアルタイムで設定変更可能(多くのスイッチへ同じ設定を投入する際に有効)

③ Ansibleホストを使い、定期的に各装置のConfigのバックアップが可能
  ※ Playbookは実行する処理内容がかかれたファイル

ZTP x Ansibleの構成例図

ZTP x Ansibleのメリット/デメリット

ZTPとAnsibleを組み合わせた際のメリット/デメリットは下記になります。

 

 

[メリット]

 ・Ansibleで各Configを作成することができ、またその後の初期設定変更も容易におこなえる

 ・ZTP起動後は、Ansibleを使いリアルタイムでホワイトボックススイッチに対し設定変更が可能

 ・Ansibleを使い、定期的なConfigのバックアップが可能

 

[デメリット]

 ・Ansibleの学習コストがかかる

 

 

ZTP単体の時にあったConfigの作成作業が大幅に削減することが可能です。また、一度AnsibleのPlaybookを作成すればその後の設定変更や機器の拡張にも容易に対応が可能になります。さらに、各ホワイトボックススイッチのConfigについて定期的なバックアップを取ることも可能であり、よりオペレーションを自動化することが可能です。

 

※Ansibleを使ったConfigの作成方法は第3回記事により詳しく紹介していますので、よかったらご覧ください。

Ansibleを使ったバックアップ取得方法

続いてはZTP x Ansibleのメリットでも記載したAnsibleのバックアップ取得方法をご紹介します。

 

ホワイトボックススイッチに対し、バックアップを定期的に行うことで、常に最新のConfigを取得できます。これによりホワイトボックススイッチが故障したとしても、交換機器に対し素早くZTPで最新のConfigを適用することができ、よりスピーディーな対応が可能になります。

 

環境

 ・Server

  ‐Ubuntu 16.04

 ・ホワイトボックススイッチ

  ‐Edgecore : AS7726-32X

 ・NOS

  ‐OcNOS 1.3.9

バックアップ取得構成図

Ansibleのディレクトリー構成

 

 

├── hosts #インベントリーファイル

├── set_crontab.yml #実行するPlaybookファイル  

└── backup.yml #cronジョブで実行されるPlaybookファイル

 

 

下記のようにPlaybook(set_crontab.yml)を設定し、1分おきにcronジョブ(backup.yml)を実行するスクリプトを作成します。

set_crontab.yml
---
- hosts: localhost
  gather_facts: false
  tasks:
    - name: set crontab
      cron:
        name: backup_config
        job: "/usr/bin/ansible-playbook -i ~/Ansible/ocnos-bgp-ansible/hosts  ~/Ansible/ocnos-bgp-ansible/backup.yml

 

cronジョブで実行されるPlaybookは下記になります。

backup.yml
---
- name: Buck up running-config
  gather_facts: no
  hosts: OCNOS
  vars:
    now_date: "{{ lookup('pipe','date +%Y%m%d%H%M') }}"
  tasks:
    - ocnos_config:
          exec_cmds:
                - 'copy running-config scp scp://tecstar:tecstar@192.168.0.80/tmp/configs/{{inventory_hostname}}_bk.conf.{{ now_date }} vrf management'

AnsibleでPlaybookを実行

下記コマンドからPlaybook(set_crontab.yml)を実行することで定期的なバックアップの設定が完了します。

ansible-playbook set_crontab.yml

Playbookを実行後、crontabが問題なく設定されていることを確認します。

tecstar@tecstar:~$ crontab -l    ----->コマンド実行
#Ansible: backup_config
* * * * * /usr/bin/ansible-playbook -i ~/Ansible/ocnos-bgp-ansible/hosts  ~/Ansible/ocnos-bgp-ansible/backup.yml  ---->正常に設定されていることが確認できる

また、下記のように実際に1分おきにConfigが取得できており、正常に動作していることが確認できます。

(今回はファイル名にタイムスタンプをつけており、16時53分, 16時54分, 16時55分, 16時56分でバックアップが取得されている)

tecstar@tecstar:/tmp/configs$ ls
AS7726-A_bk.conf.202107191653  AS7726-A_bk.conf.202107191654  AS7726-A_bk.conf.202107191655  AS7726-A_bk.conf.202107191656

 

 

以上がZTPとAnsibleを使った自動化ソリューションのご紹介でした。

次回はOSSツールを使った監視/可視化方法をご紹介していく予定です。

最後に

今回記事で紹介した設定ファイルは、下記お問い合わせフォームよりご連絡いただければ提供しています。また、もしオープンネットワーキングご興味がありましたら、マクニカではオープンネットワーキングを実際に体験し、試験や検証を行える環境をリモートで提供するサービスのご用意もあります。基本構成での検証では無償でご利用可能となっています。より詳細は以下に記載していますので、もしご興味があればご覧ください。

お問い合わせ

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

他のOpen Networking記事

以下「Open Networking Blog 記事一覧」より、Open Networkingに関わる他の記事をご覧いただけます。

Open Networking Blogとは?

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