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_file
:clients.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_dir
和 arouteserver_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_asn
:rs_asn
,路由服务器的 ASN。例如64496
。arouteserver_varname_daemon
:daemon
,主机上使用的 BGP 守护进程。可以是bird
或openbgpd
之一。arouteserver_varname_daemon_version
:daemon_version
,BGP 守护进程的版本。例如1.6.3
。arouteserver_varname_router_id
:router_id
,主机的路由器 ID。例如192.0.2.1
。arouteserver_varname_local_networks
:local_networks
,IXP 使用的本地网络的以逗号分隔列表(需要构建允许路由服务器拒绝任何对 IXP 自有前缀的公告的过滤器)。例如192.0.2.0/24,2001:db8::/32
。
用于设置 arouteserver_varname_daemon
和 arouteserver_varname_daemon_version
(默认分别是 daemon
和 daemon_version
)引用的变量的值必须是 ARouteServer 支持的某个守护进程及其版本。
它们将用于设置主命令和执行工具时的 --target-version
参数:
arouteserver <daemon> --target-version <daemon_version>
可以使用帮助命令 arouteserver --help
和 arouteserver <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