alexisfacques.ansible_module_dig
ansible-module-dig
ansible-module-dig
は、リモートのAnsibleホストからDNSルックアップ操作を行い、名前ごとの解決されたIP(v4)アドレスのリストを返すカスタムAnsibleモジュールです。このdig
モジュールは、ルックアップ操作を行う前にホストの/etc/hosts
ファイルを解析するように設定することもできます。
このモジュールは次の両方の目的で使用できます:
- 解決:1つまたは複数のホスト名を解決する。
- 確認:1つまたは複数のホスト名が解決できるかどうか確認する(ホスト名が少なくとも1つのアドレスに解決できない場合、モジュールは失敗します)。
dig
モジュールとAnsibleのlookup('dig', ... )
このモジュールを使用する前に、自分が何をしているのか理解しておいてください! AnsibleでDNSルックアップを実行する公式の方法は、dig
ルックアップを使用することです。
ルックアップフィルターを使用する場合の主な問題は、すべてのテンプレートと同様に、評価がAnsibleコントロールマシンで行われ、ターゲットホストではないことです。これは、あなたの制御マシンがクラスターのすべてのホストを解決できるがホストが解決できない場合(例えば、外部管理ネットワーク経由で設定プレイブックを実行したり、オフラインまたは高度に安全なネットワーク環境で実行したりする場合)に、予期しない副作用を引き起こす可能性があります。
このAnsible dig
モジュールは、リモートホストから直接ルックアップを実行することによってこのギャップを埋めます。
はじめに
要件
このモジュールを実行するホストには、以下の要件があります。
- Python用の
dnspython
。
インストール
「Ansibleロール」方式
- このリポジトリをAnsibleの
role_path
にクローンするか、ansible-galaxy
を使ってインストールします;ansible-galaxy install alexisfacques.ansible_module_dig
dig
モジュールを必要とするロールやタスクを実行する前に、プレイブックでロールをインポートします:- hosts: all roles: - alexisfacques.ansible_module_dig tasks: - name: google.comが解決できることを確認 dig: qtype: A name: google.com register: dig_result
「Ansibleライブラリ」方式
ロールをインポートするのが面倒な場合は、このモジュールをansible.cfg
ファイルで定義されたlibrary
ディレクトリに保存できます(デフォルトは、プレイブックを含むディレクトリ内のlibrary
というサブディレクトリです):
[defaults]
library = /path/to/your/library
使い方
パラメータ
パラメータ | 選択肢/デフォルト | コメント |
---|---|---|
qtype |
デフォルト: A |
必要なクエリのタイプを示します:ANY、A、MX、SIG... タイプは有効なクエリタイプのいずれでもかまいません。 |
name - 文字列 | リスト / 必須 |
ルックアップするリソースの名前。 | |
nameserver - 文字列 | リスト |
使用するネームサーバーの名前またはIPv4アドレス。 | |
with_etc_hosts | 選択肢: true false デフォルト: true |
モジュールがルックアップ操作を実行する前に、ホストの/etc/hostsファイルを使用して名前を解決しようとするかどうか。 |
戻り値
キー | 返される | 説明 |
---|---|---|
addresses | 成功時、すべての名前が少なくとも1つのIPv4アドレスに解決された場合。 | ルックアップした各名前に対するIPv4アドレスの2次元配列。 |
使用例
使用例はこちらで見ることができます。
謝辞
ライセンス
このプロジェクトはMITライセンスの下でライセンスされています - 詳しくはLICENSEファイルをご覧ください。