0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Exastro ITA 2.4× Ansibleでやってみよう♪ ネットワーク機器の自動設定

Last updated at Posted at 2024-06-24

はじめに

この記事では、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つの作業で設定変更していきます。

  1. 物理インタフェースにVLAN ID作成
  2. VLAN IDにIPv4アドレスを設定 (VLANルーティングは自動で設定)
  3. running-configをstartup-configへ保存

image.png

image.png

image.png

また、Exastro ITAを使った各種登録作業の流れも整理しておきます。
L3SW-02_全体作業.png

作業環境

今回の作業環境は以下のようにしています。
image.png

機器の登録

では作業に入って行きます。
まず対象となる Cisco L3SW を登録します。

Ansible共通から機器一覧を選択して、登録ボタンを押します。

image.png

画面が遷移するので、パラメータを入力します。
対象機器となるL3SWのHW機器対象種別、ホスト名、IPアドレス等を入力していきます。

image.png

image.png

image.png

■設定パラメータ

  • 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アドレスを設定するオペレーションを登録します。
オペレーションとは実施する作業のことで、オペレーションに対して作業対象とパラメータが紐づきます。
基本コンソールから投入オペレーションを選択します。

image.png

画面が遷移するので、パラメータを入力します。
投入するオペレーションの名前と実施予定日時を入力し、登録します。

image.png
■設定パラメータ1

  • オペレーション名:L3SW設定1
  • 実施予定日時:現在時刻

■設定パラメータ2

  • オペレーション名:L3SW設定2
  • 実施予定日時:現在時刻

メニュー定義と具体値入力

次にオペレーションに必要なパラメータ一覧と実行時に代入される具体値を設定していきます。
メニュー定義の作成と入力用具体値の2つの登録作業が必要です。

メニュー定義の作成

オペレーションに必要となる変数一覧(Exastro ITAのメニュー定義)を作成していきます。
パラメータシート作成 > パラメータシート定義・作成 を選択し、メニューを作成します。

image.png

image.png

■項目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設定) を選択し、登録ボタンを選択します。
image.png

image.png

image.png

■登録パラメータ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素材集 から登録を選択します。
image.png

プレイブック素材名にはアップロードするPlaybookの分かりやすい名前を入力し、プレイブック素材欄でローカルからPlaybookをアップロードします。
image.png

■登録パラメータ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を記載します。

create_vlan.yml
---
- 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 }}
set_ipv4address.yml
---
- name: set ipv4 address to interface
  ios_command:
    commands:
      - config terminal
      - interface {{ VAR_infc_name }}
      - ip address {{ VAR_ipv4_address }} {{ VAR_subnetmask }}
      - no shutdown
save_config.yml
---
- name: save running to startup when modified
  ios_config:
    save_when: "{{ VAR_save_when }}"

Movement登録

先ほど登録したプレイブック素材を組み合わせてMovementを登録します。
Ansible-Legacy > Movement一覧から登録開始を選択します。

image.png

Movement名は登録するMovementの分かりやすい名前を、ホスト指定形式はIPもしくはホスト名を選択します。

image.png

■登録パラメータ1

  • Movement名:L3SW_VLAN作成
  • ホスト指定形式:IP

■登録パラメータ2

  • playbook素材集:L3SW_設定保存
  • playbook素材:IP

Movementとプレイブック素材の紐づけ

Ansible-Legacy > Movement-Playbook紐付 から登録を選択します。

image.png

Movementには先ほど登録したMovementを選択、プレイブック素材には登録したプレイブックを、インクルード順序にはプレイブックを実行する順序を入力します。
image.png

■登録パラメータ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 > 代入値自動登録設定から登録開始します。
image.png

image.png

■登録パラメータ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編集/作業実行から登録開始します。
image.png

作成と保存が終わったら実行ボタンから実行してみましょう。
今回は2つオペレーションがあるので2回実行します。
image.png

image.png

image.png

以上でExcastro ITAを使ったCisco L3SWの設定は完了です。
無事に完了したら対象機器にログインして、思ったとおりに設定されているか確認しましょう。

#show startup-config
image.png

image.png

vlan10とvlan20が追加され、IPアドレスも設定されていました。

まとめ

今回はExastro×Ansibleでネットワーク機器の自動設定をしてみました。
Ansibleにはネットワーク機器用のモジュールもあり、ネットワーク機器が対象でもサーバ設定と同じような感覚で設定出来ることが分かりました。
ぜひ、本記事を参考にしてご自分でも触ってみて下さい。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?