备份现有 Ansible 配置 - NVUE
虽然您可以使用模块或模板从头开始使用 Ansible 构建网络,但可以从预配置的网络中获取网络配置,甚至可以将其推送回交换机。
这种类型的模型可能对以下情况有利:
- 升级场景
- 在尝试新事物之前拍摄网络快照
- 快速恢复到快照
- 提供自动化入门介绍

要求
- Cumulus Linux 交换机
- 用于运行 Ansible 的服务器/笔记本电脑
- 在服务器/笔记本电脑上安装 Ansible
Ansible 模块
以下两个示例主要使用这四个核心 Ansible 模块
Fetch 示例
服务器上有一个名为 fetch.yml
的文件夹。
user@server ~/consulting/fetch $ ls
fetch.yml
文件的内容非常简单
---
- hosts: leaf1
become: yes
tasks:
- name: Fetch ports.conf
fetch: dest=save/{{ansible_hostname}}/startup.yaml src=/etc/nvue.d/startup.yaml flat=yes
要运行 playbook,请运行 ansible-playbook
命令
user@server ~/consulting/fetch $ ansible-playbook fetch.yml
PLAY [leaf1] ******************************************************************
GATHERING FACTS ***************************************************************
ok: [leaf1]
TASK: [Fetch startup.yaml] ******************************************************
changed: [leaf1]
PLAY RECAP ********************************************************************
leaf1 : ok=5 changed=3 unreachable=0 failed=0
playbook 将用作 Cumulus Linux NVUE 启动配置的 startup.yaml 文件复制到服务器
文件名 | 描述 |
---|---|
/etc/nvue.d/startup.yaml | NVUE 的配置文件 |
有关要备份哪些文件以及 Cumulus Linux 使用哪些文件的更多信息,请阅读升级 Cumulus Linux。
playbook 将文件复制到名为 save
的目录
user@server ~/consulting/fetch $ ls
fetch.yml save
playbook 将文件放入基于主机名的目录中。此特定示例显示 playbook 仅在名为 leaf1 的一个交换机上运行
user@server ~/consulting/fetch/save $ ls
leaf1
playbook 将所有文件存储在 leaf1
目录中
user@server ~/consulting/fetch/save/leaf1 $ ls
startup.yaml
Copy 示例
在服务器上,Ansible 向目录添加了一个名为 copy.yml
的文件;该文件具有以下内容
---
- hosts: leaf1
become: yes
tasks:
- name: Restore startup.yaml
copy: src=save/{{ansible_hostname}}/startup.yaml dest=/etc/nvue.d/
- name : Switch - Config apply
command: nv config apply startup -y
此文件只是将已保存的 startup.yaml 文件推送回,然后应用来自 startup.yaml 文件的配置,这会重启后台相关的进程和守护程序。没有发出 service=networking
命令,而是直接运行了 ifreload -a
命令。
user@server ~/consulting/fetch $ ansible-playbook copy.yml
PLAY [leaf1] ******************************************************************
GATHERING FACTS ***************************************************************
ok: [leaf1]
TASK: [Restore startup.yaml] *******************************************************
ok: [leaf1]
TASK: [Switch - Config apply] *********************************************************
changed: [leaf1]
PLAY RECAP ********************************************************************
to retry, use: --limit @/home/user/copy.retry
leaf1 : ok=8 changed=4 unreachable=0 failed=0
将 startup.yaml 文件推送回交换机后,它现在基于之前的快照运行。
您可以使用以下方法将 save
目录基于一天中的时间,而不是通用的名为 save
的文件夹
{{ansible_date_time.time}}
您可以通过阅读本文,找到有关 Ansible 收集哪些 facts 的更多信息。