PowerDNS.pdns

Ansible角色:PowerDNS权威服务器

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

这是一个由PowerDNS团队创建的Ansible角色,用于设置PowerDNS权威服务器

要求

需要安装Ansible版本2.12或更高。

依赖

无。

角色变量

可用的变量如下所示,以及它们的默认值(请参见defaults/main.yml):

pdns_install_repo: ""

默认情况下,从目标主机上配置的软件仓库中安装PowerDNS权威服务器。

# 从' master '官方仓库安装PowerDNS权威服务器
- hosts: all
  roles:
    - { role: PowerDNS.pdns,
        pdns_install_repo: "{{ pdns_auth_powerdns_repo_master }}"

# 从' 4.7.x '官方仓库安装PowerDNS权威服务器
- hosts: all
  roles:
    - { role: PowerDNS.pdns,
        pdns_install_repo: "{{ pdns_auth_powerdns_repo_47 }}"
        
# 从' 4.8.x '官方仓库安装PowerDNS权威服务器
- hosts: all
  roles:
    - { role: PowerDNS.pdns,
        pdns_install_repo: "{{ pdns_auth_powerdns_repo_48 }}"
        
# 从' 4.9.x '官方仓库安装PowerDNS权威服务器
- hosts: all
  roles:
    - { role: PowerDNS.pdns,
        pdns_install_repo: "{{ pdns_auth_powerdns_repo_49 }}"

上述示例展示了如何从PowerDNS的官方仓库安装PowerDNS权威服务器(请参见vars/main.yml中的预定义仓库的完整列表)。

- hosts: all
  vars:
    pdns_install_repo:
      name: "powerdns" # 仓库的名称
      apt_repo_origin: "example.com"  # 用于将PowerDNS软件包固定到提供的仓库
      apt_repo: "deb http://example.com/{{ ansible_distribution | lower }} {{ ansible_distribution_release | lower }}/pdns main"
      gpg_key: "http://example.com/MYREPOGPGPUBKEY.asc" # 仓库的公钥
      gpg_key_id: "MYREPOGPGPUBKEYID" # 避免每次执行角色时重新导入密钥
      yum_repo_baseurl: "http://example.com/centos/$basearch/$releasever/pdns"
      yum_debug_symbols_repo_baseurl: "http://example.com/centos/$basearch/$releasever/pdns/debug"
  roles:
    - { role: PowerDNS.pdns }

也可以从自定义仓库中安装PowerDNS权威服务器,如上例所示。
注意:这些仓库在Arch Linux上会被忽略。

 pdns_install_epel: True

默认情况下,安装EPEL以满足一些PowerDNS权威服务器的依赖项,如protobuf
要跳过EPEL的安装,将pdns_install_epel设置为False

pdns_package_name: "{{ default_pdns_package_name }}"

PowerDNS权威服务器软件包的名称,在类似RedHat的系统中为pdns,在类似Debian的系统中为pdns-server

pdns_package_version: ""

可选地,允许设置要安装的PowerDNS权威服务器软件包的特定版本。

pdns_install_debug_symbols_package: False

安装PowerDNS权威服务器调试符号。

pdns_debug_symbols_package_name: "{{ default_pdns_debug_symbols_package_name }}"

pdns_install_debug_symbols_packageTrue时要安装的PowerDNS权威服务器调试包的名称,
在类似RedHat的系统中为pdns-debuginfo,在类似Debian的系统中为pdns-server-dbg

pdns_user: pdns
pdns_group: pdns

PowerDNS权威服务器进程将以此用户和组身份运行。
注意:此角色不会创建用户或组,因为我们假设它们已经由软件包或其他角色创建。

pdns_service_name: "pdns"

PowerDNS服务名称。

pdns_service_state: "started"
pdns_service_enabled: "yes"

允许指定PowerDNS权威服务器服务的期望状态。

pdns_disable_handlers: False

在配置更改时禁用自动服务重启。

pdns_config_dir: "{{ default_pdns_config_dir }}"
pdns_config_file: "pdns.conf"

PowerDNS权威服务器的配置文件和目录。

pdns_config: {}

包含PowerDNS权威服务器配置的字典。
注意:PowerDNS后端的配置以及config-dirsetuidsetgid指令必须通过pdns_userpdns_grouppdns_backends角色变量进行配置(请参见templates/pdns.conf.j2)。
例如:

pdns_config:
  master: yes
  slave: no
  local-address: '192.0.2.53'
  local-ipv6: '2001:DB8:1::53'
  local-port: '5300'

配置PowerDNS权威服务器在端口5300上监听DNS请求。

pdns_service_overrides:
  User: {{ pdns_user }}
  Group: {{ pdns_group }}

服务的覆盖字典(仅适用于systemd)。
可用于更改[Service]类别中的任何systemd设置。

pdns_backends:
  bind:
    config: '/dev/null'

声明所有希望启用的后端的字典。您可以使用{backend}:{instance_name}语法使用相同类型的多个后端。
例如:

pdns_backends:
  'gmysql:one':
    'user': root
    'host': 127.0.0.1
    'password': root
    'dbname': pdns
  'gmysql:two':
    'user': pdns_user
    'host': 192.0.2.15
    'password': my_password
    'dbname': dns
  'bind':
    'config': '/etc/named/named.conf'
    'hybrid':  yes
    'dnssec-db': '{{ pdns_config_dir }}/dnssec.db'

默认情况下,此角色仅启动bind后端,并使用空配置文件。

pdns_mysql_databases_credentials: {}

用于创建PowerDNS权威服务器数据库和用户的MySQL后端的管理凭据。
例如:

pdns_mysql_databases_credentials:
  'gmysql:one':
    'priv_user': root
    'priv_password': my_first_password
    'priv_host':
      - "localhost"
      - "%"
  'gmysql:two':
    'priv_user': someprivuser
    'priv_password': my_second_password
    'priv_host':
      - "localhost"

请注意,这仅需包含在pdns_backends中提供的gmysql后端的凭据。

pdns_sqlite_databases_locations: []

如果使用gsqlite3后端,则需要创建的SQLite3数据库的位置。

pdns_lmdb_databases_locations: []

如果使用lmdb后端,则需要创建的LMDB数据库的位置。

mysql和sqlite3基础模式的位置。
设置后,将使用此值,并且不会自动检测。

pdns_mysql_schema_file: ''

pdns_sqlite3_schema_file: ''

示例剧本

使用bind后端作为主服务器运行(当您已经有一个named.conf文件时):

- hosts: ns1.example.net
  roles:
    - { role: PowerDNS.pdns }
  vars:
    pdns_config:
      master: true
      local-address: '192.0.2.53'
    pdns_backends:
      bind:
        config: '/etc/named/named.conf'

安装最新的'41'版本的PowerDNS权威服务器,并启用MySQL后端。
还提供了MySQL管理凭据,以自动创建和初始化PowerDNS权威服务器用户和数据库:

- hosts: ns2.example.net
  roles:
    - { role: PowerDNS.pdns }
  vars:
    pdns_config:
      master: true
      slave: false
      local-address: '192.0.2.77'
    pdns_backends:
      gmysql:
        host: 192.0.2.120
        port: 3306
        user: powerdns
        password: P0w3rDn5
        dbname: pdns
    pdns_mysql_databases_credentials:
      gmysql:
        priv_user: root
        priv_password: myrootpass
        priv_host:
          - "%"
    pdns_install_repo: "{{ pdns_auth_powerdns_repo_41 }}"

注意:在这种情况下,该角色将使用在pdns_mysql_databases_credentials中提供的凭据,
自动创建和初始化用户(userpassword)和数据库(dbname),并连接到MySQL服务器(hostport)。

配置PowerDNS权威服务器为'主'模式,从两个不同的PostgreSQL数据库中读取区域:

- hosts: ns2.example.net
  roles:
    - { role: PowerDNS.pdns }
  vars:
    pdns_config:
      master: true
      local-port: 5300
      local-address: '192.0.2.111'
    pdns_backends:
      'gpgsql:serverone':
        host: 192.0.2.124
        user: powerdns
        password: P0w3rDn5
        dbname: pdns2
      'gpgsql:otherserver':
        host: 192.0.2.125
        user: root
        password: root
        dbname: dns

配置PowerDNS权威服务器使用gsqlite3后端运行。
SQLite数据库将在database_name变量指定的位置由角色创建和初始化。

- hosts: ns4.example.net
  roles:
    - { role: PowerDNS.pdns }
  vars:
    database_name: '/var/lib/powerdns/db.sqlite'
    pdns_config:
      master: true
      slave: false
      local-address: '192.0.2.73'
    pdns_backends:
      gsqlite3:
        database: "{{ database_name }}"
        dnssec: yes
    pdns_sqlite_databases_locations:
      - "{{ database_name }}"

更新日志

所有对角色所做更改的详细更新日志在此处可用这里

测试

测试由Molecule执行。

$ pip install tox

要测试所有场景,请运行

$ tox

要运行自定义的molecule命令

$ tox -e ansible214 -- molecule test -s pdns-49

许可证

MIT

关于项目

Install and configure the PowerDNS Authoritative DNS Server

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