PowerDNS.dnsdist
Ansible 角色: dnsdist
这是由 PowerDNS 团队创建的 Ansible 角色,用于设置 dnsdist。
需求
需要安装 Ansible 2.9 或更高版本。
依赖关系
没有。
角色变量
可用变量如下列出,并带有默认值(请参见 defaults/main.yml
):
dnsdist_install_repo: ""
默认情况下,dnsdist 从目标主机上配置的软件仓库中安装。
# 从主分支安装 dnsdist
- hosts: dnsdist
roles:
- { role: PowerDNS.dnsdist,
dnsdist_install_repo: "{{ dnsdist_powerdns_repo_master }}"
# 安装 dnsdist 1.3.x
- hosts: dnsdist
roles:
- { role: PowerDNS.dnsdist,
dnsdist_install_repo: "{{ dnsdist_powerdns_repo_13 }}"
上面的示例显示了如何从官方 PowerDNS 仓库安装 DNSdist
(请查看 vars/main.yml
中预定义仓库的完整列表)。
- hosts: all
vars:
dnsdist_install_repo:
name: "dnsdist" # 仓库名称
apt_repo_origin: "example.com" # 用于将 dnsdist 固定到提供的仓库
apt_repo: "deb http://example.com/{{ ansible_distribution | lower }} {{ ansible_distribution_release | lower }}/dnsdist main"
gpg_key: "http://example.com/MYREPOGPGPUBKEY.asc" # 仓库公钥
gpg_key_id: "MYREPOGPGPUBKEYID" # 避免每次执行角色时重新导入密钥
yum_repo_baseurl: "http://example.com/centos/$basearch/$releasever/dnsdist"
yum_debug_symbols_repo_baseurl: "http://example.com/centos/$basearch/$releasever/dnsdist/debug"
roles:
- { role: PowerDNS.dnsdist }
还可以从自定义仓库安装 dnsdist,如上面的示例所示。
dnsdist_install_epel: True
默认情况下,安装 EPEL 以满足一些 dnsdist 依赖项,例如 lidsodium
。
要跳过 EPEL 的安装,将 dnsdist_install_epel
变量设置为 False
。
dnsdist_package_name: "{{ default_dnsdist_package_name }}"
dnsdist 软件包的名称:在 RHEL 和 Debian 衍生发行版中为 "dnsdist"。
dnsdist_package_version: ""
可选地,允许设置要安装的特定版本的 dnsdist 软件包。
dnsdist_install_debug_symbols_package: False
安装 dnsdist 调试符号软件包。
dnsdist_debug_symbols_package_name: "{{ default_dnsdist_debug_symbols_package_name }}"
在 dnsdist_install_debug_symbols_package
为 True
时要安装的 dnsdist 调试符号软件包的名称。
dnsdist_acls: []
配置 dnsdist ACLS(网络掩码)。
dnsdist_locals: ['127.0.0.1:5300']
配置 dnsdist 的监听地址。
dnsdist_servers:
- '127.0.0.1'
- "{ address='127.0.0.1:5300', source='127.0.0.1@lo', order=1 }"
下游 DNS 服务器的 IP 地址列表,dnsdist 应该将流量发送到这些服务器 或者 Lua 表,newServer 函数(https://dnsdist.org/reference/config.html#newServer)可以解析这些表。
dnsdist_carbonserver: ""
应该接收 dnsdist 指标的 Carbon 服务器的 IP 地址。
dnsdist_controlsocket: "127.0.0.1"
dnsdist 的 TCP 控制套接字的监听 IP 地址。
dnsdist_setkey: ""
dnsdist 的 TCP 控制套接字的加密密钥。如果为空,将生成随机密钥。如果文件中已经存在密钥,将保留该密钥。
dnsdist_webserver_address: ""
内置 web 服务器的监听 IP 地址,默认为空,即禁用。
dnsdist_webserver_password: ""
内置 web 服务器的身份验证凭据。设置 dnsdist_webserver_address
时必须设置。
dnsdist_webserver_apikey: ""
内置 API 的身份验证凭据。
dnsdist_webserver_acl: ""
自 1.5.0 版本起,默认情况下仅允许来自 127.0.0.1 和 ::1 的连接。 有关更多信息,请参见 https://dnsdist.org/guides/webserver.html。
dnsdist_config: ""
将额外的 dnsdist 配置直接注入到 dnsdist.conf
文件中。
dnsdist_config_owner: 'root'
dnsdist_config_group: 'root'
拥有 dnsdist.conf
文件的用户和组。
dnsdist_service_overrides: {}
服务的覆盖字典(仅适用于 systemd)。
这可用于更改 [Service]
类别中的任何 systemd 设置。
dnsdist_unit_overrides: {}
服务单元的覆盖字典(仅适用于 systemd)。
这可用于更改 [Unit]
类别中的任何 systemd 设置。
dnsdist_environment_overrides: {}
服务环境的覆盖字典(仅适用于 systemd)。
这可用于更改 [Service]
类别中 systemd 设置的任何环境变量。
dnsdist_service_state: "started"
dnsdist_service_enabled: "yes"
允许指定 DNSdist 服务的期望状态。 例如,这允许安装和配置 DNSdist,而不自动启动服务。
dnsdist_disable_handlers: False
在配置更改时禁用自动服务重启。
dnsdist_tlslocals: []
配置通过 TLS 的 DNS 监听器。条目逐一逐字复制。
dnsdist_force_reinstall: False
通过在安装步骤之前执行移除操作来强制重新安装 dnsdist 软件包。 用于需要对 dnsdist 进行降级的情况。
示例剧本
在 Quad9 前部署 dnsdist 并启用 web 监控接口
- hosts: dnsdist
roles:
- { role: PowerDNS.dnsdist,
dnsdist_servers: ['9.9.9.9'],
dnsdist_webserver_address: "{{ ansible_default_ipv4['address'] }}:8083",
dnsdist_webserver_password: 'geheim' }
更新日志
关于角色的所有更改的详细更新日志可以在 这里 找到。
测试
测试通过 Molecule 执行。
$ pip install tox
要测试所有场景,请运行
$ tox
要运行自定义的 molecul 命令
$ tox -e ansible29 -- molecule test -s dnsdist-18
许可证
MIT