はじめに
Ansible の junos_config モジュールを使ってみます。
環境
Ansible
- ansible 2.9.17
- paramiko インストール
- ncclient インストール
Router
- JUNOS 18.3R1.9
- netconf 有効
インターフェース ge-0/0/0 を有効にする
Playbook
--- - hosts: r1 gather_facts: no tasks: - name: commit interfaces enable junos_config: lines: - set interfaces ge-0/0/0 enable
junos_config モジュール
- junos の構成を管理します
lines パラメータ
- set または、delete から始まる設定変更を指定します
- リスト形式のため、複数の設定変更を指定できます
- configure exclusive 相当の動作です
- 他のユーザが configure モードに遷移していると失敗します
- 未 commit の設定変更があると失敗します
実行ログ
● Playbook実行前のjunos > show interfaces ge-0/0/0 terse Interface Admin Link Proto Local Remote ge-0/0/0 down down ge-0/0/0.0 up down inet 172.16.1.1/24 multiservice ● ansible # ansible-playbook -i inventory.ini port_up.yml PLAY [r1] ********************************************************************** TASK [commit interfaces enable] ************************************************ changed: [r1] PLAY RECAP ********************************************************************* r1 : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 ● Playbook実行後のjunos > show interfaces ge-0/0/0 terse Interface Admin Link Proto Local Remote ge-0/0/0 up up ge-0/0/0.0 up up inet 172.16.1.1/24 multiservice
その他のパラメータ
check_commit: yes
- commit せず、構文の正確さをチェックします
- デフォルトは no です
rollback: 1
バックアップを取ってから、インターフェース ge-0/0/0 を有効にする
Playbook
--- - hosts: r1 gather_facts: no tasks: - name: commit interfaces enable junos_config: lines: - set interfaces ge-0/0/0 enable backup: yes backup_options: filename: backup.cfg dir_path: /root/juniper register: result - name: debug debug: msg: "{{ result }}"
backup
- commit 前の設定をバックアップします
- デフォルトは no です
backup_options
実行ログ
# ansible-playbook -i inventory.ini port_up.yml PLAY [r1] ********************************************************************** TASK [commit interfaces enable] ************************************************ changed: [r1] TASK [debug] ******************************************************************* ok: [r1] => { "msg": { "backup_path": "/root/juniper/r1_config.2021-03-15@00:21:46", "changed": true, "date": "2021-03-15", "failed": false, "filename": "r1_config.2021-03-15@00:21:46", "shortname": "/root/juniper/r1_config", "time": "01:51:46" } } PLAY RECAP ********************************************************************* r1 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
備考
src パラメータで設定ファイルを適用することも、zeroize: yes で初期化することもできるようです。