arista.eos.eos_config 模块 – 管理 Arista EOS 配置段

注意

此模块是 arista.eos 集合 (版本 10.0.1) 的一部分。

如果您使用的是 ansible 包,则可能已安装此集合。它不包含在 ansible-core 中。要检查它是否已安装,请运行 ansible-galaxy collection list

要安装它,请使用: ansible-galaxy collection install arista.eos

要在剧本中使用它,请指定: arista.eos.eos_config

arista.eos 1.0.0 中的新增功能

概要

  • Arista EOS 配置使用简单的块缩进文件语法将配置分割成多个段。此模块提供了一种以确定性方式处理 EOS 配置段的实现。此模块可与 CLI 或 eAPI 传输一起使用。

参数

参数

注释

after

列表 / 元素=字符串

如果需要进行更改,则将附加到命令堆栈末尾的已排序命令集。与before一样,这允许剧本设计者附加一组命令,以便在命令集之后执行。

backup

布尔值

此参数将导致模块在进行任何更改之前创建远程设备当前running-config 的完整备份。如果未给出backup_options值,则备份文件将写入剧本根目录或角色根目录(如果剧本是 Ansible 角色的一部分)中的backup文件夹。如果目录不存在,则会创建它。

选项

  • false ← (默认)

  • true

backup_options

字典

这是一个包含与备份文件路径相关的可配置选项的字典对象。仅当backup设置为true时才会读取此选项的值,如果backup设置为no,则此选项将被静默忽略。

dir_path

路径

此选项提供以目录名称结尾的路径,其中将存储备份配置文件。如果目录不存在,它将首先被创建,文件名或者是filename的值,或者是在filename选项描述中定义的默认文件名。如果没有给出路径值,则会在当前工作目录中创建一个backup目录,并将备份配置复制到backup目录中的filename中。

filename

字符串

用于存储备份配置的文件名。如果未给出文件名,它将基于主机名、当前时间和日期以<主机名>_config.<当前日期>@<当前时间>格式生成。

before

列表 / 元素=字符串

如果需要进行更改,则要推送到命令堆栈的已排序命令集。这允许剧本设计者有机会在推送任何更改之前执行配置命令,而不会影响如何将命令集与系统匹配。

defaults

布尔值

defaults参数将影响如何从设备收集running-config。当值设置为true时,用于收集running-config的命令会附加all关键字。当值设置为false时,命令将不带all关键字发出。

选项

  • false ← (默认)

  • true

diff_against

字符串

使用ansible-playbook --diff命令行参数时,模块可以针对不同的来源生成差异。

当此选项配置为startup时,模块将返回running-config与startup-config的差异。

当此选项配置为intended时,模块将返回running-config与intended_config参数中提供的配置的差异。

当此选项配置为running时,模块将返回关于对设备配置所做的任何更改,running-config的之前和之后的差异。

当此选项配置为session时,返回的差异将基于配置会话。

当此选项配置为validate_config时,模块将返回应用预期配置之前的running-config(before)和应用预期配置后的会话配置(after)。

选项

  • "startup"

  • "running"

  • "intended"

  • "session" ← (默认)

  • "validate_config"

diff_ignore_lines

列表 / 元素=字符串

使用此参数指定在差异期间应忽略的一行或多行。这用于系统自动更新的配置行。此参数采用正则表达式或精确行匹配的列表。

intended_config

字符串

intended_config提供节点应符合的主配置,并用于检查最终的running-config。此参数不会修改远程设备上的任何设置,仅用于检查当前设备配置的合规性。指定此参数时,任务还应修改diff_against的值并将其设置为intended。此值的配置行应类似于如果存在于设备的running-configuration中时的外观,包括缩进以确保正确的差异。

lines

别名:commands

列表 / 元素=字符串

应在该部分中配置的已排序命令集。命令必须与设备running-config中找到的完全相同的命令相同,以确保幂等性和正确的差异。请务必注意配置命令语法,因为某些命令会由设备配置解析器自动修改。

match

字符串

指示模块如何将命令集与当前设备配置进行匹配。如果 match 设置为 line,则逐行匹配命令。如果 match 设置为 strict,则命令行按位置匹配。如果 match 设置为 exact,则命令行必须完全匹配。最后,如果 match 设置为 none,则模块将不会尝试将源配置与远程设备上的运行配置进行比较。

选项

  • "line" ← (默认)

  • "strict"

  • "exact"

  • "none"

父级

列表 / 元素=字符串

唯一标识应针对其检查命令的节或层次结构的有序父级集。如果省略 parents 参数,则会针对顶级或全局命令集检查命令。

替换

字符串

指示模块如何在设备上执行配置。如果 replace 参数设置为 line,则修改后的行将以配置模式推送到设备。如果 replace 参数设置为 block,则如果任何一行不正确,则整个命令块将以配置模式推送到设备。

选项

  • "line" ← (默认)

  • "block"

  • "config"

running_config

别名:config

字符串

默认情况下,模块将连接到远程设备并检索当前运行配置,将其用作与源内容进行比较的基准。有时,不需要让任务为 playbook 中的每个任务获取当前运行配置。running_config 参数允许实现者传入用作该模块基准配置的配置。此选项的配置行应类似于其在设备运行配置中出现的方式,包括缩进,以确保幂等性和正确的差异比较。

save_when

字符串

对设备运行配置进行更改时,默认情况下不会将更改复制到非易失性存储。使用此参数将在之前更改此行为。如果参数设置为 always,则运行配置将始终复制到启动配置,并且 modified 标志将始终设置为 True。如果参数设置为 modified,则只有在自上次保存到启动配置以来运行配置已更改时,运行配置才会复制到启动配置。如果参数设置为 never,则运行配置将永远不会复制到启动配置。如果参数设置为 changed,则只有在任务已进行更改时,运行配置才会复制到启动配置。changed 在 Ansible 2.5 中添加。

选项

  • "always"

  • "never" ← (默认)

  • "modified"

  • "changed"

src

路径

src 参数提供要加载到远程系统的配置文件的路径。如果值以 / 开头,则路径可以是配置文件的完整系统路径,也可以相对于已实现角色或 playbook 的根目录。此参数与 linesparents 参数互斥。它也可以是 Jinja2 模板。源文件中的配置行应类似于其在设备运行配置(实时交换机配置)中出现的方式,包括缩进,以确保幂等性和正确的差异比较。Arista EOS 设备配置使用 3 个空格缩进。

注释

注意

  • 已针对 Arista EOS 4.24.6F 进行测试

  • 缩写命令不是幂等的,请参见 网络常见问题

  • 为了确保幂等性和正确的差异比较,相关模块选项中的配置行应类似于其在设备运行配置中出现的方式,包括缩进。

示例

- name: configure top level settings
  arista.eos.eos_config:
    lines: hostname {{ inventory_hostname }}

- name: load an acl into the device
  arista.eos.eos_config:
    lines:
      - 10 permit ip host 192.0.2.1 any log
      - 20 permit ip host 192.0.2.2 any log
      - 30 permit ip host 192.0.2.3 any log
      - 40 permit ip host 192.0.2.4 any log
    parents: ip access-list test
    before: no ip access-list test
    replace: block

- name: load configuration from file
  arista.eos.eos_config:
    src: eos.cfg

- name: render a Jinja2 template onto an Arista switch
  arista.eos.eos_config:
    backup: true
    src: eos_template.j2

- name: diff the running config against a master config
  arista.eos.eos_config:
    diff_against: intended
    intended_config: "{{ lookup('file', 'master.cfg') }}"

- name: for idempotency, use full-form commands
  arista.eos.eos_config:
    lines:
      - shutdown
    parents: interface Ethernet1

- name: configurable backup path
  arista.eos.eos_config:
    src: eos_template.j2
    backup: true
    backup_options:
      filename: backup.cfg
      dir_path: /home/user

返回值

常见的返回值已记录在 此处,以下是此模块独有的字段

描述

backup_path

字符串

备份文件的完整路径

返回:当 backup 为 true 时

示例: "/playbooks/ansible/backup/eos_config.2016-07-16@22:28:34"

commands

列表 / 元素=字符串

将推送到远程设备的命令集

返回:始终

示例: ["hostname switch01", "interface Ethernet1", "no shutdown"]

date

字符串

从备份文件名中提取的日期

返回:当 backup 为 true 时

示例: "2016-07-16"

filename

字符串

备份文件的名称

返回:当 backup 为 true 且文件名未在备份选项中指定时

示例: "eos_config.2016-07-16@22:28:34"

shortname

字符串

备份文件的完整路径,不包括时间戳

返回:当 backup 为 true 且文件名未在备份选项中指定时

示例: "/playbooks/ansible/backup/eos_config"

time

字符串

从备份文件名中提取的时间

返回:当 backup 为 true 时

示例: "22:28:34"

updates

列表 / 元素=字符串

将推送到远程设备的命令集

返回:始终

示例: ["hostname switch01", "interface Ethernet1", "no shutdown"]

作者

  • Peter Sprygada (@privateip)