Ansibleによるネットワーク機器の操作(1.インストール〜疎通確認【AWS】)

Ansibleによるネットワーク機器の操作(1.インストール〜疎通確認【AWS】)

【次回】Ansibleによるネットワーク機器の操作(2.ログ取得【AWS】)

目次

Ansibleとは

Ansible(アンシブル)は、RedHat社が開発するオープンソースの構成管理ツールです。”構成管理ツール”と謳っていますが、簡単なコードを書くことによりネットワーク機器に対する各種操作を自動化することが可能です。

ネットワーク構成

ネットワーク機器はCMLでローカル環境に構築し、AWS上のEC2からAnsibleを利用します。ローカル環境とAWSをVPNで接続し、EC2からネットワーク機器にSSHアクセス可能にします。

AWSとCMLのVPN接続方法は下記を参照してください。
AWSサイト間VPNの構築(1.AWSの基本設定)

ネットワーク機器のSSH設定方法は下記を参照してください。
Cisco機器のSSH設定 – ルーター・スイッチ(IOS)/Nexus(NX-OS)

Ansibleのインストール

AWS上のEC2にAnsibleをインストールします。

Linux系の場合

sudo yum -y install python-devel openssl-devel gcc git pip
sudo pip install ansible

AmazonLinuxの場合

sudo amazon-linux-extras install epel
sudo amazon-linux-extras install ansible2

Ansibleのインストール確認

以下のコマンドを実行し、Ansibleがインストールされたことを確認します。

ansible --version
[ec2-user@ip-10-0-0-100 ~]$ ansible --version
ansible 2.9.23
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/home/ec2-user/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.18 (default, Jun 10 2021, 00:11:02) [GCC 7.3.1 20180712 (Red Hat 7.3.1-13)]

Ansibleによる疎通確認

Ansibleの作業フォルダを作成

homeディレクトリ直下で問題ないので、作業用ディレクトリを作成します。

mkdir ansible
cd ansible
[ec2-user@ip-10-0-0-100 ~]$ mkdir ansible
[ec2-user@ip-10-0-0-100 ~]$ 
[ec2-user@ip-10-0-0-100 ~]$ cd ansible
[ec2-user@ip-10-0-0-100 ansible]$ 

インベントリーファイルの作成

管理対象のネットワーク機器を記述したインベントリーファイルを作成します。ここでは、各機器をルーター(Router)/スイッチ(Switch)/ネクサス(Nexus)にグループ分けして記述しています。

vi net_hosts
----------------------------
(下記を記述します。)
[Router]
VPN-Router ansible_host=192.168.1.100
Router1 ansible_host=192.168.2.1

[Router:vars]
ansible_ssh_user=cisco
ansible_ssh_pass=cisco
ansible_become=yes
ansible_become_method=enable
ansible_become_pass=cisco
ansible_connection=network_cli
ansible_network_os=ios


[Switch]
L2Switch1 ansible_host=172.16.1.252

[Switch:vars]
ansible_ssh_user=cisco
ansible_ssh_pass=cisco
ansible_become=yes
ansible_become_method=enable
ansible_become_pass=cisco
ansible_connection=network_cli
ansible_network_os=ios


[Nexus]
Nexus1 ansible_host=172.16.1.253

[Nexus:vars]
ansible_ssh_user=cisco
ansible_ssh_pass=Ciscopass1
ansible_become=yes
ansible_become_method=enable
ansible_become_pass=cisco
ansible_connection=network_cli
ansible_network_os=nxos


[all:vars]
ansible_python_interpreter=/usr/bin/python3

pingモジュールによる疎通確認

Ansibleに標準で準備されているpingモジュールを利用して疎通確認を行います。

ネットワークエンジニアとしては、Pingと言えば、ICMPを利用した疎通確認を想像すると思いますが、Ansible標準のpingモジュールは、sshで各機器に接続しPythonが利用できるかを確認することで、OK/NG(Success/Failed)の判定を行なっています。

下記コマンドを実行します。

ansible all -i net_hosts -m ping
[ec2-user@ip-10-0-0-100 ansible]$ ansible all -i net_hosts -m ping
Nexus1 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}
L2Switch1 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}
Router1 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}
VPN-Router | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}

全ホストでSUCCESSと表示され、”ping”に対して”pong”となっていれば、疎通確認はOKとなります。

以上で、Ansibleによるネットワーク機器の操作(1.インストール〜疎通確認【AWS】)の説明は完了です!

【次回】Ansibleによるネットワーク機器の操作(2.ログ取得【AWS】)

  • URLをコピーしました!
  • URLをコピーしました!
目次