pierky.arouteserver

ansible-role-arouteserver

一个用于安装和配置 ARouteServer 的角色。

描述

该角色...

  • 安装 ARouteServer 和 bgpq4

  • 复制本地的 通用策略定义文件general.yml 文件)或根据最佳实践和建议构建一个

  • 复制本地的客户端列表(clients.yml 文件)或从 IX-F 会员导出 JSON 文件 导入(如 IXP-Manager 导出的文件)

  • 构建路由服务器配置文件,最终可以推送到实际的路由服务器。

请注意:该角色并不设置实际路由服务器主机,仅设置 ARouteServer 执行的主机。

实际的路由服务器主机必须是 arouteserver_managed_routeservers 组的一部分,以允许该角色找到它们。

该角色的大多数行为可以使用下面记录的一些变量来设置。

安装

ARouteServer 使用 pip 通过 PyPI 安装或从控制机器上的本地包安装。当 ansible 变量 arouteserver_upgrade 设置为 true(默认为 false)时,--upgrade 参数将传递给 pip 以允许升级安装。

角色的 templates/config 目录中的任何本地文件将复制到 ARouteServer 的目录(支持 Jinja2 模板)。

通用策略(general.yml

通用策略可以从本地文件复制(支持 Jinja2 模板)或根据最佳实践和建议构建。

每个路由服务器主机将创建一个 general.yml 文件。路由服务器的详细信息(ASN、路由器 ID、BGP 守护进程)会从主机的变量中收集。

客户端列表(clients.yml

客户端列表可以从本地文件复制或从 IX-F 会员导出 JSON 文件导入,后者也可以通过 HTTP/HTTPS 获取。

当其变化时,路由服务器配置文件的构建也会被触发。

路由服务器配置文件的构建

路由服务器配置文件保存在 ARouteServer 的目录中;其名称遵循此模式:<hostname>-[bird4|bird6|openbgpd].cfg

如果设置,当配置文件变更时,将通知外部处理程序。

标签

  • configure_policy:设置后,仅生成通用策略定义文件(general.yml)。

  • configure_clients:设置后,仅更新客户端列表。如果发生变化,也会触发配置文件的构建。

  • build_rs_config:设置后,仅构建路由服务器配置文件。

要求

无要求。

角色变量

此角色使用的变量列在下面,按主题分组。

包安装

  • (可选) arouteserver_local_package_file:设置后,角色将使用该本地路径的包安装 ARouteServer,否则将从 PyPI 获取并安装最新版本(默认)。
  • (可选) arouteserver_upgrade:设置为 true,将 --upgrade 传递给 PIP,以启用上游 arouteserver Python 包的选择性升级。

路由服务器配置:通用策略(general.yml

  • (可选) arouteserver_general_cfg_file:将此变量设置为将用于配置 ARouteServer 的 general.yml 文件的本地路径(可以使用 Jinja2 模板)。 如果未设置,将使用 configure 命令 来根据最佳实践和建议的设置设置策略定义文件(默认)。

路由服务器配置:客户端列表(clients.yml

必需,以下 3 个变量中的一个:

  • arouteserver_clients_cfg_fileclients.yml 文件的本地路径。

  • arouteserver_clients_from_euroix_file:用于导入路由服务器客户端列表的 Euro-IX 会员列表文件的本地路径。

  • arouteserver_clients_from_euroix_url:用于导入路由服务器客户端列表的 Euro-IX 会员列 URL。这可用于 将 ARouteServer 与 IXP-Manager 集成 并从那里获取客户端列表。

  • (在使用 Euro-IX 导入时必需) arouteserver_clients_from_euroix_ixp_id:在 Euro-IX 会员列表文件中引用的 IXP 的 ID。

  • (可选) arouteserver_clients_from_euroix_extra_args:应与 clients-from-euroix 命令 一起使用的任何额外参数。例如:--merge-from-peeringdb as-set max-prefix --vlan-id 123

路由服务器自定义:特定站点的自定义配置文件

变量 arouteserver_local_files_dirarouteserver_use_local_files 可以设置为通过 ARouteServer 的 --use-local-files 命令行选项指针 传递给本地自定义文件。

路由服务器操作:RFC8326 优雅关闭

变量 arouteserver_perform_graceful_shutdown,如果设置,将指示 ARouteServer 构建以下配置,启用 优雅关闭 选项,以在维护事件期间临时排空流量。

考虑到优雅关闭操作的性质,建议不将此变量永久设置为 true,而是在维护之前 在运行时传递

与其他角色的集成

  • (可选) arouteserver_notify_on_rs_change:设置时,该角色将在路由服务器配置文件更新时通知此处理程序。

目录布局

用于安装角色组件的目录和路径。默认值如下:

  • arouteserver_venv_dir~/.virtualenvs/arouteserver
  • arouteserver_bin{{arouteserver_venv_dir}}/bin/arouteserver
  • arouteserver_dir~/arouteserver
  • arouteserver_var~/arouteserver_var
  • bgpq4_dir~/bgpq4

主机变量名称

以下变量定义了用于从路由服务器主机收集一些信息的主机变量的名称。 例如,由 arouteserver_varname_rs_asn 引用的变量(默认为 rs_asn)必须在路由服务器主机上定义,并且必须包含路由服务器的 ASN。

请参见 示例剧本 部分以获取示例。

  • arouteserver_varname_rs_asnrs_asn,路由服务器的 ASN。例如 64496
  • arouteserver_varname_daemondaemon,主机上使用的 BGP 守护进程。可以是 birdopenbgpd 之一。
  • arouteserver_varname_daemon_versiondaemon_version,BGP 守护进程的版本。例如 1.6.3
  • arouteserver_varname_router_idrouter_id,主机的路由器 ID。例如 192.0.2.1
  • arouteserver_varname_local_networkslocal_networks,IXP 使用的本地网络的以逗号分隔列表(需要构建允许路由服务器拒绝任何对 IXP 自有前缀的公告的过滤器)。例如 192.0.2.0/24,2001:db8::/32

用于设置 arouteserver_varname_daemonarouteserver_varname_daemon_version (默认分别是 daemondaemon_version)引用的变量的值必须是 ARouteServer 支持的某个守护进程及其版本。

它们将用于设置主命令和执行工具时的 --target-version 参数:

arouteserver <daemon> --target-version <daemon_version>

可以使用帮助命令 arouteserver --helparouteserver <daemon> --help 获取当前支持的值的列表。

依赖关系

代表路由服务器的主机必须是 arouteserver_managed_routeservers 组的成员。

Host variable names 部分引用的变量必须在每个路由服务器主机上配置(或由 group_var 继承)。

请参见 示例剧本 部分以获取示例。

示例剧本

hosts 文件:

[arouteserver_hosts]
172.17.0.2      # 安装 ARouteServer 的主机
                # 执行以构建路由服务器配置文件。

[arouteserver_managed_routeservers]
rs1		# 路由服务器将运行的主机。
rs2

group_vars/arouteserver_managed_routeservers 文件:

rs_asn: 64496
local_networks:
- 192.0.2.0/24
- 2001:db8::/32

host_vars/rs1 文件:

daemon: bird
daemon_version: 1.6.3
router_id: 192.0.2.1

host_vars/rs2 文件:

daemon: openbgpd
daemon_version: 6.2
router_id: 192.0.2.2

site.yml 文件:

---
- hosts: arouteserver_hosts
  gather_facts: False

  vars:
    arouteserver_clients_from_euroix_url: "http://ixp-manager.example.com/api/v4/member-export/ixf/0.6?apikey=123456"
    routeserver_clients_from_euroix_ixp_id: 1

  roles:
  - ansible-role-arouteserver
$ ansible-playbook -i hosts site.yml

许可

GPLv3

作者信息

Pier Carlo Chiodi - https://pierky.com

博客: https://blog.pierky.com Twitter: @pierky

关于项目

An Ansible role for installing ARouteServer.

安装
ansible-galaxy install pierky.arouteserver
许可证
Unknown
下载
73
拥有者
Network Reliability Engineer. Interests: network automation, Internet measurement and IP accounting / network data analysis