PowerDNS.dnsdist

Ansible 角色: dnsdist

构建状态 许可证 Ansible 角色 GitHub 标签

这是由 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_packageTrue 时要安装的 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

关于项目

Dnsdist is a highly scriptable and DDoS aware DNS loadbalancer

安装
ansible-galaxy install PowerDNS.dnsdist
许可证
mit
下载
22.7k
拥有者