HiRoLabブログ

HiRoのゆるふわIT備忘録

ansibleを使ったネットワーク構築

1. 自己紹介

まずは自己紹介

 

ヨワヨワITエンジニアのHiRoといいます(笑)

ゆる〜く、IT技術に関することをブログにしていければと思っております。(更新は気まぐれ)

主にネットワーク技術に関することをansibleやpythonを踏まえながらブログ更新をしたいと思っております。

たま〜に脱線して違う技術ブログを更新するかも。。。

ブログ作成は会社を代表とした技術者ブログ作成が困難な為、それなら個人でやっちゃえ〜と思ったからです。 なので所属組織に関する物では有りません。

まぁ最初は勉強中のansibleの個人メモも兼ねてansibleでospfでのネットワーク構築の記事にしたいと思います。

今回の記事の流れは下記を予定してます。

  • ターゲット対象のデバイスの紹介

  • トポロジー紹介

  • インベントリーの紹介

  • プレイブックの紹介

  • 実行

  • 結果確認

2.使用デバイス紹介

Cisco(iOS)-892 サービス統合型ルータ

3.トポロジー

f:id:HiRo1325:20210101221932p:plain

上図にある通り、各ルーターのホスト名をR1~R3とします。 今回はansibleをメインにしてる為、設定するIPやエリアはテキトーです。

4.インベントリー

[r1]
192.168.100.21

[r2]
192.168.100.22

[r3]
192.168.100.23

[r1:vars]
ansible_connection=network_cli
ansible_network_os=ios
ansible_user=cisco
ansible_ssh_pass=cisco
ansible_become=yes
ansible_become_method=enable
ansible_become_pass=cisco
ansible_authorize=yes

[r2:vars]
ansible_connection=network_cli
ansible_network_os=ios
ansible_user=cisco
ansible_ssh_pass=cisco
ansible_become=yes
ansible_become_method=enable
ansible_become_pass=cisco
ansible_authorize=yes

[r3:vars]
ansible_connection=network_cli
ansible_network_os=ios
ansible_user=cisco
ansible_ssh_pass=cisco
ansible_become=yes
ansible_become_method=enable
ansible_become_pass=cisco
ansible_authorize=yes

今回はインベントリーのファイル名をinventとしました。

5.プレイブック

---
- hosts: r1
  gather_facts: no
  tasks:
    - name: interface-setup
      ios_config:
        parents:
          - interface FastEthernet8
        lines:
          - ip address 192.168.1.1 255.255.255.0
    - name: ospf-setup
      ios_config:
        parents:
          - router ospf 1
        lines:
          - network 192.168.1.1 0.0.0.0 area 0
- hosts: r2
  gather_facts: no
  tasks:
    - name: interface-setup
      ios_config:
        parents:
          - interface FastEthernet8
        lines:
          - ip address 192.168.1.2 255.255.255.0
    - name: interface-setup
      ios_config:
        parents:
          - interface GigabitEthernet0
        lines:
          - ip address 192.168.2.1 255.255.255.0
    - name: ospf-setup
      ios_config:
        parents:
          - router ospf 1
        lines:
          - network 192.168.1.2 0.0.0.0 area 0
          - network 192.168.2.1 0.0.0.0 area 0
- hosts: r3
  gather_facts: no
  tasks:
    - name: interface-setup
      ios_config:
        parents:
          - interface GigabitEthernet0
        lines:
          - ip address 192.168.2.2 255.255.255.0
    - name: ospf-setup
      ios_config:
        parents:
          - router ospf 1
        lines:
          - network 192.168.2.2 0.0.0.0 area 0

今回作成したプレイブックのファイル名はmain.ymlとしました。

使用したansibleのモジュールはios_configモジュールです。 ios_configはCisco(ios)の設定ができます。

今回はios_configモジュールのlinesパラメーターとparentsパラメーターを使用することで簡単なospfの設定を行いました。 parentsパラメーターでは主に階層を移動する設定などを行い、linesパラメーターでは1から複数のコマンドを指定して設定を行うことができます。

6.実行

ansible-playbook -i invent main.yml

7.結果

ansible-playbookの実行結果 f:id:HiRo1325:20210101224216p:plain

neighbor確認 f:id:HiRo1325:20210101230406p:plain

ping確認 f:id:HiRo1325:20210101230431p:plain

8.最後に

今回はansibleのios_configモジュールを使ってciscoルータでospfを喋らせてネットワーク構築を行ってみました。 こうしたらいいんじゃない?などご意見があればコメントいただけると幸いです。 今後もansibleに関して投稿は行いつつ、batfishやpyatsについても投稿を行っていく予定です。

9.参考ページ

docs.ansible.com