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キー
      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

デフォルトでは、protobufのようなPowerDNS認証サーバーの依存関係を満たすためにEPELをインストールします。
EPELのインストールをスキップするには、pdns_install_epelFalseに設定します。

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認証サーバープロセスが実行されるユーザーとグループです。
NOTE: このロールはユーザーまたはグループを作成しません。パッケージまたは他のロールによってすでに作成されていると想定しています。

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認証サーバーの設定を含む辞書です。
NOTE: 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'

MySQLバックエンドを有効にし、最新の'41'ビルドのPowerDNS認証サーバーをインストールします。
PowerDNS認証サーバーユーザーとデータベースを自動的に作成および初期化するためのMySQL管理クレデンシャルも提供します:

- 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で提供されたクレデンシャルを使用して、
MySQLサーバーに接続し、ユーザー(userpassword)とデータベース(dbname)を自動的に作成および初期化します。

2つの異なるPostgreSQLデータベースからゾーンを読み取る「マスター」モードでPowerDNS認証サーバーを設定します:

- 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

gsqlite3バックエンドを使用してPowerDNS認証サーバーを実行するように設定します。
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
所有者