arista.eos-system

EOS系统角色

arista.eos-system角色为常见的全局系统配置创建了一个抽象。这意味着您无需编写任何ansible任务。只需创建一个符合以下要求的对象,这个角色将接收该对象并执行必要的配置。

该角色特别支持配置IP路由、主机名和CLI用户。

安装

ansible-galaxy install arista.eos-system

要求

需要SSH连接才能与您的Arista设备连接。您可以使用任何内置的eos连接变量或方便的provider字典。

角色变量

此角色中的任务由以下hostnameeos_ip_routing_enabled以及eos_users对象驱动:

hostname

类型 说明
hostname string 用于配置节点当前运行配置中的主机名值的ASCII字符串。

eos_ip_routing_enabled

类型 说明
eos_ip_routing_enabled boolean: true, false* 配置交换机上IPv4 'ip routing' 的状态。默认情况下,EOS交换机为'no ip routing'

eos_users (列表) 每个条目包含以下键:

类型 说明
name string (必需) 唯一的用户名。用户名必须遵循特定格式规则。有效的用户名以A-Z、a-z或0-9开头,并可以包含以下字符: @#$%^&*-_= +;<>,.~
encryption 选项: md5, sha512 定义相应secret键中提供的密码的加密格式。
secret string 此键与加密一起使用。值应为先前生成的哈希密码。
nopassword boolean: true, false* nopassword键用于创建没有密码的用户。此属性与secret和encryption互斥。
role string 配置分配给用户的角色。
privilege int: 0-15 配置用户的特权级别。允许的值是0到15之间的整数。如果您省略此键,则EOS默认特权为1。
sshkey string 为CLI用户配置一个sshkey。此sshkey将保存在/home/USER/.ssh/authorized_keys中。
state 选项: present*, absent 设置CLI用户的状态
注意:星号 (*) 表示如果未指定,则为默认值

配置变量

选项 描述
eos_save_running_config true*, false 指定是否将角色执行过程中对运行配置的任何更改保存到内存,将配置复制到启动配置。
注意:星号 (*) 表示如果未指定,则为默认值

连接变量

Ansible EOS角色需要以下连接信息以建立与库存中的节点的通信。此信息可以存在于Ansible的group_vars或host_vars目录中,也可以直接在剧本中指定。

必需 选项 描述
host 指定连接到远程设备的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 配置传输以在transport=eapi时仅在设置为true时使用SSL。如果transport=cli,则忽略此值。
provider 方便的方法,允许将所有上述连接参数作为字典对象传递。所有约束(必需、选项等)必须通过单个参数或该字典中的值满足。
注意:星号 (*) 表示如果未指定,则为默认值

Ansible变量

选项 描述
no_log true, false* 防止在剧本执行期间记录模块参数和输出。默认情况下,对于收集和保存EOS配置信息的任务,no_log设置为true,以减少输出大小。设置为true可防止显示任务结果以外的所有输出。
注意:星号 (*) 表示如果未指定,则为默认值

依赖性

eos-system角色基于核心Ansible代码中包含的模块。这些模块是在ansible版本2.1.0中添加的。

  • Ansible 2.1.0

示例剧本

以下示例将使用arista.eos-system角色来完全设置CLI用户、IP路由和交换机主机名,而无需编写任何任务。我们将创建一个hosts文件来添加我们的交换机,然后相应地创建一个host_vars文件,最后是一个仅引用eos-system角色的简单剧本。通过包含该角色,我们自动获得所有用于配置系统功能的任务。如果您有一个没有系统配置的主机,任务将自动跳过,而不会出现任何问题。

示例主机文件:

[leafs]
leaf1.example.com

示例host_vars/leaf1.example.com

provider:
  host: "{{ inventory_hostname }}"
  username: admin
  password: admin
  use_ssl: no
  authorize: yes
  transport: cli

eos_users:
  - name: superadmin
    encryption: md5
    secret: '$1$J0auuPhz$Pkr5NnHssW.Jqlk17Ylpk0'
    privilege: 15
    role: network-admin
  - name: simplebob
    nopassword: true
    privilege: 0
    role: network-operator

hostname: leaf1

eos_ip_routing_enabled: yes

一个简单的剧本来配置bridging,leaf.yml

- hosts: leafs
  roles:
     - arista.eos-system

然后运行:

ansible-playbook -i hosts leaf.yml

开发者信息

欢迎开发贡献。有关更多信息,请参阅Arista Roles for Ansible - Development Guidelinestest/arista-ansible-role-test/README),包括如何开发和运行角色开发的测试用例。

许可证

版权所有 (c) 2015年,Arista Networks EOS+ 保留所有权利。

允许以源代码和二进制形式的再分发和使用,无论是否修改,前提是满足以下条件:

  • 源代码的再分发必须保留上述版权声明、条件列表和以下免责声明。

  • 以二进制形式的再分发必须在所分发的文档和/或其他材料中再现上述版权声明、条件列表和以下免责声明。

  • 除非事先获得书面许可,否则不得使用Arista的名称或其贡献者的名称来支持或推广基于本软件的产品。

此软件由版权持有者和贡献者“按原样”提供,明确或暗示的任何保证,包括但不限于对适销性的隐含保证和对特定用途的适用性,均不予以声明。在任何情况下,版权持有者或贡献者对因使用本软件而导致的任何直接、间接、附带、特殊、惩戒性或后果性损害(包括但不限于替代商品或服务的采购;使用、数据或利润的损失;或商业中断)不承担任何责任,无论是在合同、严格责任还是侵权(包括疏忽或其他方式)下。

作者信息

请使用我们的GitHub库报告任何问题,或通过电子邮件发送至ansible-dev@arista.com

关于项目

Role for managing EOS global system configuration

安装
ansible-galaxy install arista.eos-system
许可证
bsd-3-clause
下载
12.2k
拥有者
Applications developed and supported by Arista EOS+