arista.eos-route-control
EOS 路由控制角色
arista.eos-route-control 角色为常见的 EOS 路由策略配置提供了一个抽象。 这意味着您无需编写任何 ansible 任务。 只需创建一个符合以下要求的对象,该角色将处理该对象并进行必要的配置。
此角色用于配置路由映射和静态 IPv4 路由。
安装
ansible-galaxy install arista.eos-route-control
要求
需要通过 SSH 连接到您的 Arista 设备。您可以使用任何内置的 eos 连接变量,或方便的 provider
字典。
角色变量
此角色中的任务由以下 routemaps
和 ipv4_static_routes
对象驱动:
routemaps(列表)每个条目包含以下键:
键 | 类型 | 备注 |
---|---|---|
name | 字符串(必需) | 要管理的路由映射名称。 |
action | 选择: permit, deny (必需) | 与路由映射名称相关联的动作。 |
seqno | 整数(必需) | 此条目对应的规则的序列号。 |
description | 字符串 | 此路由映射条目的描述。 |
match | 列表 | 定义路由映射条目的匹配语句列表。匹配语句应为不带“match”字样的匹配语句列表。 |
set | 列表 | 定义路由映射条目的设置语句列表。设置语句应为不带“set”字样的设置语句的列表。 |
continue | 整数 | 该语句定义下一个要评估的路由映射条款。 |
state | 选择: present*, absent | 设置路由映射配置的状态。 |
ipv4_static_routes(列表)每个条目包含以下键:
键 | 类型 | 备注 |
---|---|---|
ip_dest | 字符串(必需) | 目标 IP 地址或网络。 |
next_hop | 字符串(必需) | 与该路由相关联的下一跳。 |
next_hop_ip | 字符串 | 下一跳路由器的 IP 地址。仅在 next_hop 为出口接口时有效 |
distance | 整数 | 为此路由指定的距离。如果状态为“present”,则默认值为 1。 |
tag | 整数 | 为该路由分配的标签。如果状态为“present”,则默认值为 0。 |
route_name | 字符串 | 路由的描述性名称 |
state | 选择: present*, absent | 设置路由配置的状态。 |
注意:星号 (*) 表示如果未指定,则为默认值
配置变量
键 | 选择 | 描述 |
---|---|---|
eos_save_running_config | true*, false | 指定是否将角色执行结果导致的任何更改写入运行配置,并将配置复制到启动配置。 |
注意:星号 (*) 表示如果未指定,则为默认值
连接变量
Ansible EOS 角色需要以下连接信息以建立与您库存中的节点的通信。该信息可以存在于 Ansible group_vars 或 host_vars 目录中,或在剧本本身中。
键 | 必需 | 选择 | 描述 |
---|---|---|---|
host | 是 | 指定用于通过指定的transport 连接远程设备的 DNS 主机名或地址。host 的值用作传输的目标地址。 | |
port | 否 | 指定在建立与远程设备的连接时使用的端口。此值适用于 transport 的任何可接受值。如果未在任务中提供端口值,则该值将默认为适合此传输类型的常用端口(cli=22,http=80,https=443)。 | |
username | 否 | 配置用于验证与远程设备连接的用户名。username 的值用于根据使用的 transport 验证 CLI 登录或 eAPI 身份验证。如果未在任务中指定此值,则将改为使用环境变量 ANSIBLE_NET_USERNAME 的值。 | |
password | 否 | 指定用于验证与远程设备连接的密码。这是用于任何可接受的 transport 的常见参数。如果未在任务中指定此值,则将改为使用环境变量 ANSIBLE_NET_PASSWORD 的值。 | |
ssh_keyfile | 否 | 指定用于验证与远程设备连接的 SSH 密钥文件。此参数仅在 transport=cli 时使用。如果未在任务中指定此值,则将改为使用环境变量 ANSIBLE_NET_SSH_KEYFILE 的值。 | |
authorize | 否 | yes, no* | 指示模块在发送任何命令之前进入远程设备的特权模式。如果未指定,则设备将尝试在非特权模式下执行所有命令。如果未在任务中指定此值,则将改为使用环境变量 ANSIBLE_NET_AUTHORIZE 的值。 |
auth_pass | 否 | 指定在需要输入远程设备的特权模式时使用的密码。如果 authorize=no,则此参数没有任何作用。如果未在任务中指定此值,则将改为使用环境变量 ANSIBLE_NET_AUTH_PASS 的值。 | |
transport | 是 | cli*, eapi | 配置连接到远程设备时使用的传输连接。transport 参数支持通过 cli (ssh) 或 eapi 连接到设备。 |
use_ssl | 否 | yes*, no | 如果在设置为 true 时使用 SSL,仅在 transport=eapi 时应用。如果 transport=cli,则该值将被忽略。 |
provider | 否 | 方便的方法,允许将上述所有连接参数作为字典对象传递。所有约束(必需项、选择等)必须通过单个参数或该字典中的值满足。 |
注意:星号 (*) 表示如果未指定,则为默认值
Ansible 变量
键 | 选择 | 描述 |
---|---|---|
no_log | true, false* | 防止在剧本执行期间记录模块参数和输出。默认情况下,对于收集和保存 EOS 配置信息的任务,no_log 被设置为 true,以减少输出大小。设置为 true 可以防止输出所有内容,除了任务结果。 |
注意:星号 (*) 表示如果未指定,则为默认值
依赖关系
eos-route-control 角色建立在 Ansible 核心代码中包含的模块上。这些模块是在 ansible 版本 2.1 中添加的。
- Ansible 2.1.0
示例剧本
以下示例将使用 arista.eos-route-control 角色来配置路由映射和静态路由。我们将创建一个包含我们的交换机的 hosts
文件,然后创建相应的 host_vars
文件,以及一个仅引用 eos-route-control 角色的简单剧本。
通过包含该角色,我们自动获得访问这些 EOS 功能的所有任务。这样好的一点是,如果您有一个没有任何相应配置的主机,任务将会毫无问题地被跳过。
样本主机文件:
[leafs]
leaf1.example.com
样本 host_vars/leaf1.example.com
provider:
host: "{{ inventory_hostname }}"
username: admin
password: admin
use_ssl: no
authorize: yes
transport: cli
routemaps:
- name: RM-1
action: permit
seqno: 10
description: 我的精彩路由映射
match:
- as 1000
- source-protocol bgp
continue: 20
- name: RM-1
action: permit
seqno: 20
description: 我的精彩路由映射
set:
- distance 50
- tag 100
ipv4_static_routes:
- ip_dest: 0.0.0.0/0
next_hop: Management1
next_hop_ip: 172.16.130.2
route_name: 默认
tag: 100
一个简单的剧本,leaf.yml
- hosts: leafs
roles:
- arista.eos-route-control
然后运行:
ansible-playbook -i hosts leaf.yml
开发者信息
欢迎提交开发贡献。请参见 Arista Roles for Ansible - Development Guidelines(test/arista-ansible-role-test/README)以获取更多信息,包括如何开发和运行角色开发的测试案例。
许可证
版权 (c) 2015, Arista Networks EOS+ 保留所有权利。
允许以源代码和二进制形式进行重新分发和使用,无论是否修改,但前提是满足以下条件:
源代码的重新分发必须保留上述版权声明、此条件列表和以下免责声明。
二进制形式的重新分发必须在分发的文档和/或其他材料中再现上述版权声明、此条件列表和以下免责声明。
Arista 的名称或其贡献者的名称不得用于支持或促进从本软件衍生的产品,除非事先获得明确书面许可。
本软件由版权持有者和贡献者“按原样”提供,并且对任何明示或暗示的担保,包括但不限于对适销性和特定用途的适用性的担保不做任何保证。在任何情况下,版权持有者或贡献者均不对因使用本软件而引起的任何直接、间接、偶然、特殊、惩戒性或后果性的损害负责(包括但不限于采购替代商品或服务;使用损失、数据或利润;或业务中断),无论是基于合同、严格责任还是侵权(包括过失或其他原因)而造成的,即使在告知可能发生此类损害的情况下。
作者信息
如有任何问题,请通过我们的 GitHub 仓库提交或发送电子邮件至 ansible-dev@arista.com。
Role for managing EOS Routemaps and IPv4 static routing configuration
ansible-galaxy install arista.eos-route-control