■ はじめに
Ansible 2.6 で SCP/SFTP でネットワーク機器とファイルを送受信する net_get
モジュールと、 net_put
モジュール ができました。
このうち、この記事ではファイルを受信する net_get
モジュールを使って、Cisco IOS の startup-config
のバックアップを、Anislbe ホストにファイルとしてバックアップしてみたいと思います。
(Ansible 2.6.2 で確認)
net_get
モジュール 公式ドキュメント
■ 準備
IOS側
予め IOS 側で SSH のほかに、SCP を有効にします。
ip scp server enable
Ansible ホスト側
Python (Ansible) で SCP するためのパッケージをインストールします。
pip install scp
■ Playbook
- hosts: ios gather_facts: no tasks: - name: scp test net_get: src: startup-config dest: ios_startp-config.txt vars: ansible_connection: network_cli ansible_network_os: ios ansible_user: testuser ansible_ssh_pass: testpass
■ インベントリファイル
必要な変数はすべて Playbook 側で定義済みです
[ios] 172.16.0.2
■ 実行
Playbook を実行します。
(ansible262) [vagrant@centos7 vagrant]$ ansible-playbook -i inventory net_get.yml PLAY [ios] *************************************************************************** TASK [scp test] ********************************************************************** changed: [172.16.0.2] PLAY RECAP *************************************************************************** 172.16.0.2 : ok=1 changed=1 unreachable=0 failed=0
無事に実行されました。
■ 確認
Ansible ホスト側で、ファイルが保存されたか確認します。
(ansible262) [vagrant@centos7 vagrant]$ cat ios_startp-config.txt ! ! Last configuration change at 12:24:10 UTC Tue Aug 7 20 18 by testuser ! version 16.8 service timestamps debug datetime msec service timestamps log datetime msec platform qfp utilization monitor load 80 no platform punt-keepalive disable-kernel-core platform console virtual ! hostname RouterA (...略...)
無事に保存されました。
■ まとめ
コンフィグをファイルとしてバックアップするだけでしたら、 ios_command
モジュール や、ios_facts
モジュール でも可能ですが、事情により、プラットフォーム非依存のモジュール(ansible_network_os
変数の定義は必要ですが)を利用したい場合は、この方法もありかと思います。