marcinpraczko.named
簡単な情報
この役割は、以下のリポジトリからフォークしたものです:
このフォークを作成し、調整した理由:
Named
はまだ使われており、動作する役割があると良い。- 役割は良い構造を持ち、設定の柔軟性がある。
- この役割は、2015年以降そのままでは動作せず、一部の問題が解決されていなかった。
Ansible-role-named
バージョン: 0.1.4
- Ansible 2.0以上が必要
- RHEL/CentOS 6.x、7.x、Debian、Ubuntuのほとんどのバージョンと互換性あり
インストール
ansible-galaxyから直接インストール(最新リリース)
$ ansible-galaxy install marcinpraczko.named
GitHubリポジトリから直接インストール
develop
やfeature
ブランチに変更が適用されていることがあり、まだリリースされていない場合があります。
Ansible-galaxyは役割をGitHub
から直接インストールすることができます。
mkdir testing-roles
cd testing-roles
ansible-galaxy install -p roles git+https://github.com/marcinpraczko/ansible-role-named.git,develop
上記の例ではdevelop
ブランチをインストールします。これは、要件に応じて任意のgit SHAコミット、タグ、またはブランチ名に調整できます。
インストールされたバージョンを確認するには、次のコマンドを使用します:
ansible-galaxy list -p roles
始め方
BIND (named)のインストール
BIND (named)
とすべての必要な依存関係のインストールは非常に簡単で、設定の前に一括または個別に実行できます:
単独インストール
$ ansible-playbook -t install -i hosts named.yml
プレイブック全体を実行
$ ansible-playbook -i hosts named.yml
例のプレイブック、ホスト、およびグループ変数
例のプレイブック
- name: "マスターを正常な状態にするために必要なアクション"
hosts: named_masters
remote_user: root
roles:
- "marcinpraczko.named"
- name: "スレーブを正常な状態にするために必要なアクション"
hosts: named_slaves
remote_user: root
roles:
- "marcinpraczko.named"
例のホスト
[named_masters]
127.0.0.1
#[named_slaves]
#127.0.0.1
例のグループ変数
named_masters:
named_acls:
public_slaves:
- 8.8.8.8
- 9.9.9.9
private_slaves:
- 192.168.25.5
- 192.168.25.6
named_zones:
# ここに_があることに注意、これがansibleを喜ばせ、後で設定やゾーンで自動的に置き換えられます
foo_com:
type: master
allow_transfer:
- public_slaves
ttl: 3000
named_slaves:
named_zones_create_masters: False
named_zones:
# ここに_があることに注意、これがansibleを喜ばせ、後で設定やゾーンで自動的に置き換えられます
foo_com:
type: slave
master:
- 7.7.7.7
この役割は、インストールタスクと設定タスクから構成されており、どちらもinstall
またはconfigure
でタグ付けされていて、個別またはすべて一緒に実行できます。この役割には、named.conf
ファイルおよびaclとゾーンの含めるファイルを保持するincluded.conf
ファイル、デフォルトまたはグループ変数に基づく動的ゾーンファイルを作成するためのアクションがあります。
設定可能な項目
この役割には設定可能な項目がいくつかあります。以下は、最初のデフォルトの要約リストです
(最新のリストはdefaults/main.yml
にあります):
## インストールオプション
named_conf_file_location: /etc/named.conf
# オペレーティングシステムに対して正しいことを確認してください
named_user: named
named_group: named
named_service_name: named
# Monit固有の設定
named_monit_enable: False
named_monit_service_name: monit
named_monit_conf_directory: /etc/monit.d
named_pid_file: /var/run/named/named.pid
named_service_file: /etc/init.d/named
## 基本設定オプション
# オプションセクション
named_conf_listen_on_port: 53
named_conf_listen_on_interface:
- 127.0.0.1
named_conf_listen_on_v6_port: 53
named_conf_listen_on_v6_interface:
- ::1
named_conf_notify: "no"
named_conf_forwarders:
- 7.7.7.7
- 7.7.8.8
named_conf_directory: /var/named
named_conf_dump_file: /var/named/data/cache_dump.db
named_conf_statistics_file: /var/named/data/named_stats.txt
named_conf_memstatistics_file: /var/named/data/named_mem_stats.txt
named_conf_allow_query:
- any
#named_conf_allow_transfer: none
named_conf_recursion: no
named_conf_dnssec_enable: yes
named_conf_dnssec_validation: yes
named_conf_dnssec_lookaside: auto
named_conf_bindkeys_file: /etc/named.iscdlv.key
named_conf_managed_keys_directory: /var/named/dynamic
# ロギングセクション
named_conf_logging_channel: default_debug
named_conf_logging_file_directory: /var/log/named
named_conf_logging_file: named.log
named_conf_logging_severity: info
named_conf_logging_print_severity: yes
named_conf_logging_print_time: yes
named_conf_logging_print_category: yes
named_conf_logging_category_name: default
named_conf_logging_categories:
- default_debug
named_conf_includes_directory: /etc/named
### デフォルトのaclや含める項目はありません
## マスター設定
# この設定は、宣言されたマスターのディレクトリにゾーンファイルを作成する必要があるかどうかを決定します。
# 通常、スレーブホストを構成する場合は、これらを作成しない方が良いでしょう。
named_zones_create_masters: True
### ゾーンの設定デフォルト
named_conf_zone_ttl: 21600
named_conf_zone_soa: foo.com. noc.foo.com.
named_conf_zone_refresh: 21600
named_conf_zone_retry: 600
named_conf_zone_expire: 86400
named_conf_zone_expire_min: 3000
動的ゾーンファイル作成用のデフォルト変数を指定でき、これにより
デフォルトに外れた設定が必要なゾーンの上書きのみを指定することで、group_var
ファイルを大幅に減らすことができます。
ファクト
以下のファクトは、インベントリやこの役割の外部からアクセス可能です。
{{ ansible_local.named.interfaces_ipv4 }}
{{ ansible_local.named.interfaces_ipv6 }}
{{ ansible_local.named.port_ipv4 }}
{{ ansible_local.named.port_ipv6 }}
テスト
- 元々の役割には
travis
ファイルだけが存在しました。 - この役割をローカルでテストするための
molecule
設定を追加しました。
Molecule
はdocker
やvagrant
を使用してローカルでansible役割をテストすることができます。
また、serverspec
やtestinfra
のような検証を実行するのにも役立ちます。
これらすべてにより、この役割のテストがはるかに簡単になります。
必要なパッケージのインストール
- Docker
- Vagrant
moleculeのインストール
- システムにPythonの仮想環境をインストールします。
- Pythonの仮想環境内に
molecule
をインストールします。
virtualenv venv
source venv/bin/activate
# 一般的なpipパッケージを更新
pip install -U pip setuptools wheel
# 必要なPythonパッケージを含めてmoleculeをインストール
pip install -r tests/requirements.txt
moleculeでのテスト
次のコマンドは、Vagrantドライバーで役割をテストすることを可能にします。
注意:次のコマンドを初めて実行する場合、時間がかかります(フルVagrantイメージがローカルホストにダウンロードされる必要があります)。
molecule test --sudo
上記のコマンドは、検証ツール、例えばtestinfra
やserverspec
のためだけに--sudo
を実行します。この--sudo
オプションは、ansibleの実行方法には影響しません。
ansible-galaxy install marcinpraczko.named