はじめに
Ansible の Junos モジュール郡は、コネクションプラグイン(接続方式)として、netconf
と network_cli
(いわゆるSSH)に対応しています。
ただし、各モジュールごとに、利用できるコネクションプラグインが決まっています。
Junos OS Platform Options — Ansible Documentation
たとえば、設定変更コマンド(set
や delete
)などを投入できる、junos_config
モジュールは、netconf
のみに対応していて、network_cli
には対応していません。
しかし、Junos 専用モジュールではなく、ベンダー抽象化した cli_config
というモジュールであれば、Junos に対して network_cli
(SSH) で、設定変更コマンドを投入できます。
この記事では、簡単なサンプルで説明します。
サンプルPlaybook
--- - hosts: vmx gather_facts: false vars: ansible_connection: network_cli tasks: - name: config test cli_config: config: set system ntp server 10.0.1.123
junos_config
モジュールの lines
オプション(複数形)のと違って、cli_config
モジュールの config
オプションは、リストではなく文字列の指定をする点にご注意ください。
そのため、複数行指定する場合は、以下のような改行入りの文字列として指定します。
- name: config test config: | set system ntp server 10.0.1.123 set system ntp server 10.0.2.123 set system ntp server 10.0.3.123
file ルックアッププラグインと config
オプションを利用すれば、junos_config
の src
オプションのように、コンフィグをファイルから読み込む事もできます。
実行
$ ansible-playbook -i ../inventory.ini config.yml PLAY [vmx] ********************************************************************************* TASK [config test] ************************************************************************* changed: [vmx] PLAY RECAP ********************************************************************************* vmx : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
一応、機器側の設定確認をします。
testuser@vMX-addr-0> show configuration system ntp | display set set system ntp server 10.0.1.123
無事に設定変更できました。
デフォルトで commit されます。commit
オプションで無効にもできます。
他、junos_config
と cli_config
は、どちらかが完全に勝っているというわけではありません。詳細は各モジュールのドキュメントを参照してください。
- cli_config – Push text based configuration to network devices over network_cli — Ansible Documentation
- junos_config – Manage configuration on devices running Juniper JUNOS — Ansible Documentation
おわりに
このように、ベンダー専用モジュールでできなくても、cli_*
モジュールならできる、ということを何度か経験しています。
あきらめる前に、一度 cli_command
や cli_config
モジュールの説明ページを確認してみることをおすすめします。