PowerDNS.pdns
Ansibleロール: PowerDNS 認証サーバー
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_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_package
がTrue
の場合にインストールされる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-dir
、setuid
、setgid
ディレクティブは、pdns_user
、pdns_group
、pdns_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サーバーに接続し、ユーザー(user
、password
)とデータベース(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