はじめに
この記事では、Ciscoのネットワーク機器の設定変更をExastro×Ansibleを使ってやってみたいと思います。
Exastro IT Automationとは
Exastro IT Automationは、システム情報をデジタル管理するためのフレームワークです。
手順書(IaC)や、手順書に代入されるパラメータを管理することでCMDBを実現することができるツールとなっています。
詳しくは以下のサイトを読んでみてください。
https://ita.exastro.org/
今回のシナリオ
Cisco L3SWの設定変更をExastro ITAを使って自動化していきます。
今回の作業はios_commandモジュールを使ったPlaybookで構成した設定手順になります。
機器やOSによって様々なAnsibleモジュールが使用できます。
L3SWは以下の3つの作業で設定変更していきます。
- 物理インタフェースにVLAN ID作成
- VLAN IDにIPv4アドレスを設定 (VLANルーティングは自動で設定)
- running-configをstartup-configへ保存
また、Exastro ITAを使った各種登録作業の流れも整理しておきます。
作業環境
機器の登録
では作業に入って行きます。
まず対象となる Cisco L3SW を登録します。
Ansible共通から機器一覧を選択して、登録ボタンを押します。
画面が遷移するので、パラメータを入力します。
対象機器となるL3SWのHW機器対象種別、ホスト名、IPアドレス等を入力していきます。
■設定パラメータ
- HW機器種別:NW
- ホスト名:CiscoL3SW
- IPアドレス:対象スイッチのIPアドレス
- ユーザ:root
- パスワード:対象スイッチのパスワード
- 認証方式:パスワード認証
「インベントリファイル追加オプション」には、Ansibleで使用するインベントリファイル情報を記載していきます。
今回は以下を入力しました。
ansible_connection: network_cli
ansible_network_os: ios
ansible_become: yes
ansible_become_method: enable
ansible_become_pass: '{{ __loginpassword__ }}'
ansible_become_passは特権モードになるためのパスワードです。
今回はログインパスワードと同一だったためパラメータ表記となっています。
※ITA独自変数の独自変数に "loginpassword" というものがあり、機器一覧に登録したログインパスワードの値を変数として扱えます。
ITA独自変数 機器一覧
オペレーションの作成
Cisco L3SWの新たなVLAN IDとIPアドレスを設定するオペレーションを登録します。
オペレーションとは実施する作業のことで、オペレーションに対して作業対象とパラメータが紐づきます。
基本コンソールから投入オペレーションを選択します。
画面が遷移するので、パラメータを入力します。
投入するオペレーションの名前と実施予定日時を入力し、登録します。
- オペレーション名:L3SW設定1
- 実施予定日時:現在時刻
■設定パラメータ2
- オペレーション名:L3SW設定2
- 実施予定日時:現在時刻
メニュー定義と具体値入力
次にオペレーションに必要なパラメータ一覧と実行時に代入される具体値を設定していきます。
メニュー定義の作成と入力用具体値の2つの登録作業が必要です。
メニュー定義の作成
オペレーションに必要となる変数一覧(Exastro ITAのメニュー定義)を作成していきます。
パラメータシート作成 > パラメータシート定義・作成 を選択し、メニューを作成します。
■項目1
- 項目名:VLAN ID
- 項目の名前(Rest API用):vlan_id
- 入力方式:文字列(単一行)
- 最大バイト数:32
■項目2
- 項目名:Physical Interface
- 項目の名前(Rest API用):physical_interface
- 入力方式:文字列(単一行)
- 最大バイト数:32
■項目3
- 項目名:Virtual Interface
- 項目の名前(Rest API用):virtual_interface
- 入力方式:文字列(単一行)
- 最大バイト数:32
■項目4
- 項目名:IPv4 Address
- 項目の名前(Rest API用):ipv4_address
- 入力方式:文字列(単一行)
- 最大バイト数:32
■項目5
- 項目名:Subnetmask
- 項目の名前(Rest API用):subnetmask
- 入力方式:文字列(単一行)
- 最大バイト数:32
■項目6
- 項目名:Save When
- 項目の名前(Rest API用):save_when
- 入力方式:文字列(単一行)
- 最大バイト数:32
■パラメータ作成情報
- パラメータシート名:L3SW設定
- パラメータシート名(Rest):L3SW_setting
- 表示順序:1
入力用具体値
基本コンソールから入力用 > 登録したメニュー定義(L3SW設定) を選択し、登録ボタンを選択します。
■登録パラメータ1
- ホスト名:CiscoL3SW
- オペレーション名:L3SW設定1
- VLAN ID:10
- Physical Interface:Gi0/10
- Virtual Interface:Vlan10
- IPv4 Address:192.168.10.1
- Subnetmask:255.255.255.0
- Save When:modified
■登録パラメータ2
- ホスト名:CiscoL3SW
- オペレーション名:L3SW設定2
- VLAN ID:20
- Physical Interface:Gi0/20
- Virtual Interface:Vlan20
- IPv4 Address:192.168.20.1
- Subnetmask:255.255.255.0
- Save When:modified
Playbookの登録
実際にCisco L3SWに設定するためのPlaybookを登録しましょう。
Ansible-Legacy > Playbook素材集 から登録を選択します。
プレイブック素材名にはアップロードするPlaybookの分かりやすい名前を入力し、プレイブック素材欄でローカルからPlaybookをアップロードします。
■登録パラメータ1
- playbook素材集:L3スイッチvlan作成
- playbook素材: create_vlan.yml
■登録パラメータ2
- playbook素材集:L3スイッチipv4アドレス設定
- playbook素材: set_ipv4address.yml
■登録パラメータ3
- playbook素材集:L3スイッチ設定保存
- playbook素材: save_config.yml
今回アップロードしたPlaybook
今回アップロードしたPlaybookを記載します。
---
- name: set Vlan ID to physical interface
ios_command:
commands:
- config terminal
- vlan {{ VAR_vlan_id }}
- interface {{ VAR_physical_intfc_name }}
- switchport mode access
- switchport access vlan {{ VAR_vlan_id }}
---
- name: set ipv4 address to interface
ios_command:
commands:
- config terminal
- interface {{ VAR_infc_name }}
- ip address {{ VAR_ipv4_address }} {{ VAR_subnetmask }}
- no shutdown
---
- name: save running to startup when modified
ios_config:
save_when: "{{ VAR_save_when }}"
Movement登録
先ほど登録したプレイブック素材を組み合わせてMovementを登録します。
Ansible-Legacy > Movement一覧から登録開始を選択します。
Movement名は登録するMovementの分かりやすい名前を、ホスト指定形式はIPもしくはホスト名を選択します。
■登録パラメータ1
- Movement名:L3SW_VLAN作成
- ホスト指定形式:IP
■登録パラメータ2
- playbook素材集:L3SW_設定保存
- playbook素材:IP
Movementとプレイブック素材の紐づけ
Ansible-Legacy > Movement-Playbook紐付 から登録を選択します。
Movementには先ほど登録したMovementを選択、プレイブック素材には登録したプレイブックを、インクルード順序にはプレイブックを実行する順序を入力します。
■登録パラメータ1
- Movement名:L3SW_VLAN作成
- Playbook素材:L3スイッチvlan作成
- インクルード順序:1
■登録パラメータ2
- Movement名:L3SW_VLAN作成
- Playbook素材:L3スイッチipv4アドレス設定
- インクルード順序:2
■登録パラメータ3
L3スイッチvlan作成
- Movement名:L3SW_設定保存
- Playbook素材:L3スイッチ設定保存
- インクルード順序:1
1つのMovementに複数のプレイブック素材を登録する場合、実行順序を指定したいケースがあります。
今回はまさにそのケースで、VLAN IDを作成してから作成したVLAN IDのIPv4アドレス設定をするという順番をインクルード順序で指定して実行が出来ます。
代入値登録
登録した2つのオペレーションにそれぞれパラメータを登録していきましょう。
ここでは、最初に作成したメニュー定義とMovement(プレイブック)に登録された変数を結びつけてパラメータを投入していきます。
Ansible-Legacy > 代入値自動登録設定から登録開始します。
■登録パラメータ1
- 項目:VLAN ID
- 登録方式:Value型
- Movement名:L3SW_VLAN作成
- 変数名:"L3SW_VLAN作成:VAR_vlan_id"
■登録パラメータ2
- 項目:Physical Interface
- 登録方式:Value型
- Movement名:L3SW_VLAN作成
- 変数名:"L3SW_VLAN作成:VAR_physical_intfc_name"
■登録パラメータ3
- 項目:Virtual Interface
- 登録方式:Value型
- Movement名:L3SW_VLAN作成
- 変数名:"L3SW_VLAN作成:VAR_infc_name"
■登録パラメータ4
- 項目:IPv4 Address
- 登録方式:Value型
- Movement名:L3SW_VLAN作成
- 変数名:"L3SW_VLAN作成:VAR_ipv4_address"
■登録パラメータ5
- 項目:Subnetmask
- 登録方式:Value型
- Movement名:L3SW_VLAN作成
- 変数名:"L3SW_VLAN作成:VAR_subnetmask"
■登録パラメータ6
- 項目:Save When
- 登録方式:Value型
- Movement名:L3SW_VLAN作成
- 変数名:"L3SW_設定保存:VAR_save_when"
Conductorでの実行
無事にオペレーションの登録が終わったらConductorを使って実行してみましょう。
Conductorはオペレーションを自由に組み合わせてジョブフローとして実行できるツールです。
画面右下から登録したMovementをドラッグ・アンド・ドロップでパレットに配置します。
配置したパレットのINとOUTをドラッグ・アンド・ドロップすることで連結し、フローを作成出来ます。
右下のタブをFunctionに切り替えることで分岐や他のConductorの呼び出しが行えます。
Conductor > Conductor編集/作業実行から登録開始します。
作成と保存が終わったら実行ボタンから実行してみましょう。
今回は2つオペレーションがあるので2回実行します。
以上でExcastro ITAを使ったCisco L3SWの設定は完了です。
無事に完了したら対象機器にログインして、思ったとおりに設定されているか確認しましょう。
vlan10とvlan20が追加され、IPアドレスも設定されていました。
まとめ
今回はExastro×Ansibleでネットワーク機器の自動設定をしてみました。
Ansibleにはネットワーク機器用のモジュールもあり、ネットワーク機器が対象でもサーバ設定と同じような感覚で設定出来ることが分かりました。
ぜひ、本記事を参考にしてご自分でも触ってみて下さい。