Ansible操作例 – Cisco NXOSへの接続方法の説明

スポンサーリンク

AnsibleでCisco NXOS(Nexus OS)へ接続する方法を説明します。Ansibleでサーバ機器を操作する場合はPythonスクリプトを他機器へ転送する挙動になりますが、ネットワーク機器を操作する場合は「network_cli」と呼ばれる特殊な接続方法を使用します。

ネットワーク機器を操作する時は「network_cli」を使うのが多数派です。ですが、BIG-IPは「local」と呼ばれる接続を使うように例外もある事もご留意ください。

事前準備

Cisco NXOS SSH接続の確認

Ansibleでネットワーク機器を操作するにはsshで接続する必要があります。telnetによる接続方法もありますが、telnetは従来のTeraTermマクロのようなexpectの仕組みを使うため、非常に難解な実装を求められます。そのため、特別な理由がない限りはsshを接続許可しましょう。

NXOSはSSH接続許可のための明示的な設定は必要ありません。それではSSHログインが可能である事を確かめましょう。

[root@ansible70 ~]# ssh 192.168.9.62 -l admin
Warning: Permanently added '192.168.9.62' (RSA) to the list of known hosts.
User Access Verification
admin@192.168.9.62's password:

Cisco NX-OS Software
Copyright (c) 2002-2016, Cisco Systems, Inc. All rights reserved.
NX-OSv software ("NX-OSv Software") and related documentation,
files or other reference materials ("Documentation") are
the proprietary property and confidential information of Cisco
Systems, Inc. ("Cisco") and are protected, without limitation,
pursuant to United States and International copyright and trademark
laws in the applicable jurisdiction which provide civil and criminal
penalties for copying or distribution without Cisco's authorization.

Any use or disclosure, in whole or in part, of the NX-OSv Software
or Documentation to any third party for any purposes is expressly
prohibited except as otherwise authorized by Cisco in writing.
The copyrights to certain works contained herein are owned by other
third parties and are used and distributed under license. Some parts
of this software may be covered under the GNU Public License or the
GNU Lesser General Public License. A copy of each such license is
available at
The GNU General Public License v3.0 - GNU Project - Free Software Foundation
and
GNU Lesser General Public License v3.0 - GNU Project - Free Software Foundation
*************************************************************************** * NX-OSv is strictly limited to use for evaluation, demonstration and * * NX-OS education. NX-OSv is provided as-is and is not supported by * * Cisco's Technical Advisory Center. Any use or disclosure, in whole or * * in part of the NX-OSv Software or Documentation to any third party for * * any purposes is expressly prohibited except as otherwise authorized by * * Cisco in writing. * *************************************************************************** R62#

paramikoインストール

Ansibleでネットワーク機器を操作するにはparamikoと呼ばれるモジュールが必要です。paramiko未インストールの場合は以下のようなエラーメッセージが出力されます。

# ansible-playbook -i inventory.ini cisco_nxos_show_version.yml

PLAY [cisco_nxos] **************************************************************

TASK [send show version] *******************************************************
fatal: [cisco62]: FAILED! => {"msg": "paramiko is not installed: No module named 'paramiko'"}

PLAY RECAP *********************************************************************
cisco62                    : ok=0    changed=0    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0

それでは、paramikoをインストールしましょう。

pip install paramiko

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

Cisco NXOSと接続できるよう以下のようなインベントリファイルを作成します。

cat << EOF > inventory.ini
[cisco_nxos:vars]
ansible_user = 'admin'
ansible_password = 'P@ssw0rd'
ansible_connection = 'network_cli'
ansible_network_os = 'nxos'

[cisco_nxos]
cisco62 ansible_host=192.168.9.62
EOF

ansible_network_osはOSの種類によって適宜変更が必要です。NXOSを使用する場合は、「ansible_network_os」は「nxos」を指定します。

動作確認

「show version」を実行するプレイブックを作成します。

cat << EOF > cisco_nxos_show_version.yml
---
- hosts: cisco_nxos
  gather_facts: no

  tasks:
    - name: send show version
      nxos_command:
        commands: "show version"
EOF

疎通可能である事を確認するため、実行結果が「OK」となる事を確認します。

# ansible-playbook -i inventory.ini cisco_nxos_show_version.yml

PLAY [cisco_nxos] **************************************************************

TASK [send show version] *******************************************************
ok: [cisco62]

PLAY RECAP *********************************************************************
cisco62                    : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

現時点でshowコマンドの出力結果は表示されていませんが、showコマンドの結果を表示する方法は「Ansible操作例 – Cisco NXOSの操作方法の説明」で紹介します。

タイトルとURLをコピーしました