Ansible操作例 – network_cliを用いたJUNOSへの接続方法

スポンサーリンク

AnsibleでJUNOS(JUNiper Operating System)へ接続する方法を説明します。JUNOSへの接続方法は「network_cli」から「netconf」への過渡期の状況です。2020年時点の最新Ansibleでは旧方式「network_cli」は切り捨てられ「netconf」のみの接続を許容するAnsibleモジュールもあります。

旧バージョンのAnsibleを使わざるを得ない方向けに、このページでは「network_cli」による接続方法を説明します。

事前準備

JUNOS SSH接続の確認

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

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

[root@ansible70 ~]# ssh 192.168.9.63 -l admin
Warning: Permanently added '192.168.9.63' (ECDSA) to the list of known hosts.
Password:
--- JUNOS 19.3R2.9 Kernel 64-bit  JNPR-11.0-20191120.0ebd4bf_buil
admin@R63>

admin@R63> configure
Entering configuration mode
Users currently editing the configuration:
  root terminal u0 (pid 16640) on since 2020-08-29 11:14:01 UTC, idle 00:00:32
      [edit]

[edit]
admin@R63#

paramikoインストール

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

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

PLAY [junos] *******************************************************************

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

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

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

pip install paramiko

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

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

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

[junos]
junos63 ansible_host=192.168.9.63
EOF

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

動作確認

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

cat << EOF > junos_show_version.yml
---
- hosts: junos
  gather_facts: no

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

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

新しいバージョンのAnsibleでnetwork_cliを使うと以下のようなWARNINGが出力される事もあります。これはnetconfによる接続に切り替えると解消されます。

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

PLAY [junos] *******************************************************************

TASK [send show version] *******************************************************
[WARNING]: arguments wait_for, match, rpcs are not supported when using
transport=cli

ok: [junos63]

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

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

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