arubanetworks.aruba_central_role

aruba-central-ansible-role

这个 Ansible 网络角色提供了一组依赖于平台的配置管理模块和插件,专门为 Aruba Central 设计,这是一种基于云的网络管理系统。

需求

  • Python 3.5 及以上版本

  • Ansible 2.9 或更高版本

    • Ansible 2.10 及以上版本需要安装 ansible.netcommon
  • 最低支持的 Aruba Central 固件为 2.5.2

  • 安装所有 Ansible 需求的命令如下:

    ansible-galaxy install -r requirements.yml
    
  • 安装所有 Python 需求的命令如下:

    pip install -r requirements.txt
    

安装

通过 Galaxy 安装:

ansible-galaxy install arubanetworks.aruba_central_role

通过 GitHub 安装,使用以下命令。使用 -f 选项来覆盖当前角色版本:

ansible-galaxy install git+https://github.com/aruba/aruba-central-ansible-role.git

注意事项

  • 该角色中的模块使用 Central 的 REST API。有关 REST API 的信息以及如何获得访问权限,请访问 Aruba 开发者中心:REST API 入门
  • 必须为 Aruba Central 的 API 网关创建一个 API 令牌,并使用有效且未过期的 **access_token**。有关 API 网关入门的更多信息,您还可以观看此 YouTube 视频
  • 有效的访问令牌可以在上面的 清单 部分中提到的清单文件中使用。
  • 确保在 API 网关上添加新令牌时,在应用程序下拉列表中选择“网络操作”。
  • 一旦生成新令牌,它将包含一个 access_token 和一个 refresh_token
  • 访问令牌有效期为 7200 秒或两小时。两小时后,它将过期,需要创建一个新令牌。目前令牌的过期时间不可配置。
  • refresh_token 以及 client_idclient_secret 用于续订访问令牌。此功能通过使用一个清单插件在此角色中实现。您可以使用清单文件或使用清单插件配置文件来使用该插件。
  • 有关如何使用此插件配置文件与令牌和其他凭据进行令牌自动续订的更多细节请参阅下方的 清单插件配置文件 部分。

清单/主机文件

您可以通过以下两种方式使用 Aruba Central Ansible 角色的清单或主机文件:

  1. 清单
    • 主机文件告诉 Ansible 需要使用的 httpapi 插件以及其他详细信息和访问令牌。
  2. 清单插件配置文件清单源
    • 由清单插件使用的清单源文件。
    • 典型的清单插件实现包括一个插件脚本(通常用 Python 编写)和一个清单源(在本例中为 YAML 文件)。
    • 根据 Ansible 文档,清单源是清单插件使用的输入字符串。清单源可以是一个文件路径或脚本路径,或者是插件可以解释以动态生成清单变量的原始数据。
    • 只有包含 清单插件配置文件变量.yml 文件被清单插件接受作为此角色的清单源。
  • 您可以根据需要选择使用以上文件。
    • 如果不需要令牌的自动续订,请使用简单的 清单文件
    • 或者,如果希望实现令牌的自动续订,请使用 清单插件配置文件 来为清单插件提供配置。

清单

清单变量

在您的清单中应该定义的变量有:

  • ansible_host: 针对 Aruba Central API 网关的集群特定 Base-URL,采用 FQDN 格式,可在 API 文档 URL 中找到。
  • ansible_connection: 必须始终设置为 httpapi
  • ansible_network_os: 必须始终设置为 aruba_central
  • ansible_httpapi_use_ssl: 必须始终设置为 True
  • ansible_httpapi_central_access_token: Aruba Central 的 API 访问令牌

示例清单:

YAML
all:
  hosts:
    central:
      ansible_host: apigw-prod2.central.arubanetworks.com
      ansible_connection: httpapi
      ansible_network_os: aruba_central
      ansible_httpapi_use_ssl: True
      ansible_httpapi_central_access_token: CnjDaXXxvnjrvJRwxxxxXXxxXXXXxxxx
INI
arubacentral ansible_host=apigw-prod2.central.arubanetworks.com  ansible_connection=httpapi ansible_network_os=aruba_central  ansible_httpapi_use_ssl=True  ansible_httpapi_central_access_token=CnjDaXXxvnjrvJRwxxxxXXxxXXXXxxxx

清单插件配置文件

  • 这是一个清单源文件,清单插件利用它动态生成清单,包含所需的所有选项(如上面的简单清单文件所示)以用于 HttpAPI 连接插件。
  • 用户需要创建一个配置文件,其中包含插件的名称和其他中央凭据。

注意事项

  • 一般而言,清单插件不能与角色一起分发,因为 Ansible 在执行剧本或角色之前会先执行清单插件。有关更多信息,请参见 Ansible 文档
    • 因此,在发布 Aruba Central Ansible 集合之前,您需要执行以下变通方法,以便在使用此 Ansible 角色时使用自定义清单插件,该插件将处理令牌的自动续订。

方法 1:

  • GitHub 复制 central_inventory.py 清单插件文件并将其存储在您剧本目录中的 inventory_plugins 目录内。
  • 您的剧本目录应具有以下结构:
playbooks_dir
+-- playbook1.yml
+-- playbook2.yml
+-- inv_src.yml
+-- inventory_plugins/
|   +-- central_inventory.py
  • 其中 **inv_src.yml** 或任何其他不同名称的 **.yml** 文件可以作为清单插件配置文件。示例清单插件配置文件 及其使用的变量如下所示。
  • 清单插件配置文件不应与 Ansible Vault 一起使用,因为清单插件需要将续订后的刷新和访问令牌写回插件配置文件。
  • 用户首次必须确保在清单插件配置文件中输入有效的访问和刷新令牌。如果两个令牌均无效,清单插件将会在清单插件配置文件中修改文件,并显示 <请输入有效的访问/刷新令牌> 的消息,执行将因“未经授权”而失败。
  • 中央的 refresh_token 有效期为 14 天。如果在 14 天内未使用,该令牌将被撤销,需要重新创建新令牌。刷新令牌的有效期目前不可配置。

方法 2:

  • 角色安装后,转到角色目录。使用以下命令获取角色安装路径,并将带有插件文件的 inventory_plugins 目录移动。
$ ansible-galaxy role list 

------------------output-----------------
# /home/admin/.ansible/roles
- arubanetworks.aruba_central_role, 0.2.1
  • 选择路径并进入角色目录。
  • 角色名称可能会有所不同,具体取决于您选择的安装方式。
  • 一旦找到路径,将清单插件目录移动到您的剧本目录。
$ cd /home/admin/.ansible/roles

$ cd arubanetworks.aruba_central_role$ cd aruba-central-ansible-role

$ mv inventory_plugins/ <playbooks_directory的路径>

清单插件配置变量

在您的清单插件配置文件中应该定义的变量有:

  • access_token: Aruba Central 的 API 访问令牌。
  • api_gateway: 针对 Aruba Central API 网关的集群特定 Base-URL,采用 FQDN 格式,可在 API 文档 URL 中找到。
  • client_id: Aruba Central 的 API 客户端 ID。
  • client_secret: Aruba Central 的 API 客户端密钥。
  • host: 必须始终设置为 central
  • plugin: 必须始终设置为 central_inventory
  • refresh_token: Aruba Central 的 API 刷新令牌。

示例清单插件配置文件:

YAML
access_token: CnjDaXXxvnjrvJRwxxxxXXxxXXXXxxxx
api_gateway: apigw-prod2.central.arubanetworks.com
client_id: FOqWxx124ASdfS36HqKIeXXzZ
client_secret: O2RfdKgiS13GhswdrWAIEueMPOxxZxX
host: central
plugin: central_inventory
refresh_token: X12daE6BFhk8QqqzzeifHTYxxZZ12XxX

示例剧本

包含角色

如果通过 Galaxy 安装角色,请将角色设置为 arubanetworks.aruba_central_role

---
-  hosts: all
   roles:
     - role: arubanetworks.aruba_central_role
   tasks:
   - name: 获取 Central 上的所有 UI 和模板组
     central_groups:
       action: get_groups
       limit: 20
       offset: 0

如果通过 GitHub 安装角色,请将角色设置为 aruba-central-ansible-role

---
-  hosts: all
   roles:
     - role: aruba-central-ansible-role
   tasks:
   - name: 获取 Central 上的所有 UI 和模板组
     central_groups:
       action: get_groups
       limit: 20
       offset: 0

剧本执行

ansible-playbook playbook.yml -i inventory.yml
  • 其中 inventory.yml 可以是简单的清单文件,也可以是清单插件配置文件(清单源)。
  • 确保在使用清单插件配置文件执行剧本之前,将 central_inventory.py 放在 inventory_plugins/ 目录中。

贡献

在 Aruba Networks,我们致力于确保产品质量,所以如果您发现任何问题,请在我们的 Github 上提交问题,我们会及时回复!

有关更多贡献机会,请遵循我们在 CONTRIBUTING.md 中概述的指南。

许可证

MIT

作者信息

  • Jay Pathak (@jayp193)
  • Derek Wang (@derekwangHPEAruba)
关于项目

Ansible modules for automating various monitoring and configuration constructs on Aruba Central, which is used to manage network devices (github repo - https://github.com/aruba/aruba-central-ansible-role)

安装
ansible-galaxy install arubanetworks.aruba_central_role
许可证
mit
下载
83.8k