arista.eos-system
EOS系统角色
arista.eos-system角色为常见的全局系统配置创建了一个抽象。这意味着您无需编写任何ansible任务。只需创建一个符合以下要求的对象,这个角色将接收该对象并执行必要的配置。
该角色特别支持配置IP路由、主机名和CLI用户。
安装
ansible-galaxy install arista.eos-system
要求
需要SSH连接才能与您的Arista设备连接。您可以使用任何内置的eos连接变量或方便的provider
字典。
角色变量
此角色中的任务由以下hostname
和eos_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 Guidelines(test/arista-ansible-role-test/README),包括如何开发和运行角色开发的测试用例。
许可证
版权所有 (c) 2015年,Arista Networks EOS+ 保留所有权利。
允许以源代码和二进制形式的再分发和使用,无论是否修改,前提是满足以下条件:
源代码的再分发必须保留上述版权声明、条件列表和以下免责声明。
以二进制形式的再分发必须在所分发的文档和/或其他材料中再现上述版权声明、条件列表和以下免责声明。
除非事先获得书面许可,否则不得使用Arista的名称或其贡献者的名称来支持或推广基于本软件的产品。
此软件由版权持有者和贡献者“按原样”提供,明确或暗示的任何保证,包括但不限于对适销性的隐含保证和对特定用途的适用性,均不予以声明。在任何情况下,版权持有者或贡献者对因使用本软件而导致的任何直接、间接、附带、特殊、惩戒性或后果性损害(包括但不限于替代商品或服务的采购;使用、数据或利润的损失;或商业中断)不承担任何责任,无论是在合同、严格责任还是侵权(包括疏忽或其他方式)下。
作者信息
请使用我们的GitHub库报告任何问题,或通过电子邮件发送至ansible-dev@arista.com。
ansible-galaxy install arista.eos-system