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キー
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
デフォルトで、lidsodium
などのいくつかのDNSdist依存関係を満たすためにEPELをインストールします。
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のACL(ネットマスク)を構成します。
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 }"
dnsdistがトラフィックを送信する下流DNSサーバーのIPアドレスのリスト または新しいサーバー関数(https://dnsdist.org/reference/config.html#newServer)が解析できるLuaテーブル。
dnsdist_carbonserver: ""
dnsdistメトリクスを受信するCarbonサーバーのIPアドレス。
dnsdist_controlsocket: "127.0.0.1"
dnsdistのTCP制御ソケットのリッスンIPアドレス。
dnsdist_setkey: ""
dnsdistのTCP制御ソケットの暗号化キー。空の場合はランダムなキーが生成されます。ファイルにキーがすでに存在する場合は、それが保持されます。
dnsdist_webserver_address: ""
内蔵ウェブサーバーのリッスンIPアドレス。空の場合はデフォルトで無効です。
dnsdist_webserver_password: ""
内蔵ウェブサーバーの認証情報。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.conf
ファイルにそのまま挿入される追加のdnsdist設定。
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: []
DNS over TLSリスナーを構成します。エントリはそのまま行ごとにコピーされます。
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
カスタムモレキュールコマンドを実行するには、
$ tox -e ansible29 -- molecule test -s dnsdist-18
ライセンス
MIT
Dnsdist is a highly scriptable and DDoS aware DNS loadbalancer
ansible-galaxy install PowerDNS.dnsdist