【次回】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】)の説明は完了です!