たそ@ITインフラ初心者

taso@初心者エンジニア

新卒2年目 エンジニアが適当に語るブログてす

Ansibleでルータ設定 #1 インターフェイス設定編

お疲れ様です。たそ(@taso_int)です。
GWも終わってしまいましたtohoho...
引き続き資格取得に向けて勉強したいです。
取ってほしいと言われた資格は残り基本情報のみで、
それを取ったらAzure資格を少し取りたいです。

前回環境構築をしたので、今回は実際に何か設定したいと思います。
前回の内容について知りたい方はこちらへ

taso-int.hatenablog.com

今回はこれの続きです。 ルータに新しいインターフェイスを追加したいと思います。

1.構成図

f:id:taso_int:20210509162817j:plain

以前の構成図からR1にf1/0とLo0を設定します。
次からアドレス一覧も付けたいと思います。

2. 目標

この構成の完成を目指す。
Ansibleで設定して確認が出来ればOK
自動化を理解するためには手動設定も大切なので手動設定も行う。

3-1. 手順(手動)

f1/0の設定
ルータに入り、以下のように設定 R1#conf t
R1(config)#
R1(config)#int f0/1/0
R1(config-if)#ip add 192.168.2.254 255.255.255.0
R1(config-if)#no shut

Lo0の設定
ルータに入り、以下のように設定
R1#conf t
R1(config)#
R1(config)#int Lo0
R1(config-if)#ip add 192.168.255.1 255.255.255.255

ループバックインターフェイスにno shutは不要です。

設定確認
R1#show run
(抜粋)
interface Loopback0
ip address 192.168.255.1 255.255.255.255

interface FastEthernet0/1/0
ip address 192.168.2.254 255.255.255.0
duplex auto
speed auto

3-2. 手順(Ansible)

手動設定ができたので
次はAnsibleでこの設定をしたいと思います。
Ansibleではplaybookを実行することで自動的に設定を行うことが出来ます。

1.インターフェイスの有効化
まずはインターフェイスの有効化をします。

  tasks:
    - name: Ethernet ena
      ios_interfaces:
        config:
          - name: FastEthernet0/0
            enabled: False
          - name: FastEthernet0/1
            enabled: True
          - name: FastEthernet0/1/0
            enabled: True
          - name: Loopback0
            enabled: True

インターフェイスの有効化はios_interfaceモジュールを使用します。
enabledでTrueを設定すると有効化(手動のno shutと同じ)
enabledでFalesを設定すると無効化(手動のshutと同じ)
ループバックインターフェイスについてですが手動設定の場合は
no shutが不要でしたが、Ansibleではここで設定をしないと有効化されませんでした。

2.アドレスの割り当て
インターフェイスの有効化が出来たのでIPアドレスを設定します。

    - name: add ip
      ios_l3_interfaces:
        config:
        - name: FastEthernet0/1/0
          ipv4: 
            - address: 192.168.2.254/24
        - name: Loopback0
          ipv4:
            - address: 192.168.255.1/32

アドレスの割り当てはios_l3_interfacesモジュールを使用します。
ipv4などipv6などの設定が可能となっております。

3.設定を保存
このままだとルータの電源を切ってしまうと設定が反映されないので、
設定を反映するようにします。(手動のwrite memory)

    - name: write memory
      ios_config:
        save_when: modified
      tags:
        - save

ios_configモジュールにsave_whenオプションがあり、
これを利用することで、設定が保存できます。
save_whenオプションの値は色々ありますがstartup-configと running-config に
差分がある場合に設定を保存してくれるmodifiedを値として設定しました。

4.実行
最終的にこんな感じのyamlになりました。

---
- hosts: Router1
  gather_facts: False
  tasks:
    - name: Ethernet ena
      ios_interfaces:
        config:
          - name: FastEthernet0/0
            enabled: False
          - name: FastEthernet0/1
            enabled: True
          - name: FastEthernet0/1/0
            enabled: True
          - name: Loopback0
            enabled: True
    - name: add ip
      ios_l3_interfaces:
        config:
        - name: FastEthernet0/1/0
          ipv4: 
            - address: 192.168.2.254/24
        - name: Loopback0
          ipv4:
            - address: 192.168.255.1/32
    - name: write memory
      ios_config:
        save_when: modified
      tags:
        - save

実行はansible-playbook -i inventory routercon.yml で実行できます。
実行様子
f:id:taso_int:20210509205631p:plain
上手く実行されて設定が反映されているのでchangeになっています。

以前も使ったios_factsモジュールを使って確認したいと思います。
実行はansible -i inventory ios -m ios_facts

f:id:taso_int:20210509205741p:plain

ちゃんと設定されてますね。

最後に

無事Ansibleでルータに設定を追加することが出来ました。
来週はインターフェイスの設定変更をしていきたいと思います。
ここまで読んでいただきありがとうございました。