备份现有 Ansible 配置 - NVUE

虽然您可以使用模块或模板从头开始使用 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.yamlNVUE 的配置文件

有关要备份哪些文件以及 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 的更多信息。