Infoblox ガイド¶
トピック
本ガイドでは、Infoblox NIOS (Network Identity Operating System) で Ansible を使用する方法を説明します。Ansible 統合では、Ansible Playbook を使用して、IP アドレス管理 (IPAM)、DNS、およびインベントリー追跡について Infoblox Core Network Services を自動化できます。
ドキュメントの簡単なサンプルタスクで、NIOS モジュール について確認し、詳細な例は「`モジュールを使用した使用事例`_」のセクションを参照してください。Infoblox 製品の詳細は、Infoblox の Web サイトを参照してください。
Note
本ガイドで使用されている Playbook の例のほとんどは、GitHub リポジトリー network-automation/infoblox_ansible から取得できます。
要件¶
Infoblox で Ansible nios
モジュールを使用する前に、Ansible コントロールノードに infoblox-client
をインストールする必要があります。
$ sudo pip install infoblox-client
Note
Infoblox で Ansible を使用するには、WAPI 機能が有効になっている NIOS アカウントが必要です。
認証情報および認証¶
Playbook で Infoblox の nios
モジュールを使用するには、Infoblox システムにアクセスするための認証情報を設定する必要があります。 本ガイドの例では、<playbookdir>/group_vars/nios.yml
に保存されている認証情報を使用します。これらの値を、Infoblox 認証情報に置き換えます。
---
nios_provider:
host:192.0.0.2
username: admin
password: ansible
NIOS Lookup プラグイン¶
Ansible には、NIOS 用に以下の lookup プラグインが含まれます。
- nios - Infoblox WAPI API を使用して NIOS が指定されたオブジェクト (ネットワークビュー、DNS ビュー、ホストレコードなど) を取得します。
- nios_next_ip - ネットワークから次に利用可能な IP アドレスを指定します。この例では、「ホストレコードの作成」を参照してください。
- nios_next_network - ネットワークコンテナーで利用可能な次のネットワーク範囲を返します。
connection: local
を指定して、NIOS lookup プラグインをローカルに実行する必要があります。詳細は、「lookup プラグイン」を参照してください。
すべてのネットワークビューの取得¶
すべてのネットワークビューを取得して変数に保存するには、nios lookup プラグインで set_fact <set_fact_module>モジュールを使用します。
---
- hosts: nios
connection: local
tasks:
- name: fetch all networkview objects
set_fact:
networkviews: "{{ lookup('nios', 'networkview', provider=nios_provider) }}"
- name: check the networkviews
debug:
var: networkviews
ホストレコードの取得¶
ホストレコードのセットを取得するには、nios
lookup プラグインで set_fact
モジュールを使用し、取得する特定ホストのフィルターを含めます。
---
- hosts: nios
connection: local
tasks:
- name: fetch host leaf01
set_fact:
host: "{{ lookup('nios', 'record:host', filter={'name': 'leaf01.ansible.com'}, provider=nios_provider) }}"
- name: check the leaf01 return variable
debug:
var: host
- name: debug specific variable (ipv4 address)
debug:
var: host.ipv4addrs[0].ipv4addr
- name: fetch host leaf02
set_fact:
host: "{{ lookup('nios', 'record:host', filter={'name': 'leaf02.ansible.com'}, provider=nios_provider) }}"
- name: check the leaf02 return variable
debug:
var: host
この Playbook get_host_record.yml
を実行すると、以下のような結果が表示されるはずです。
$ ansible-playbook get_host_record.yml
PLAY [localhost] ***************************************************************************************
TASK [fetch host leaf01] ******************************************************************************
ok: [localhost]
TASK [check the leaf01 return variable] *************************************************************
ok: [localhost] => {
< ...output shortened...>
"host": {
"ipv4addrs": [
{
"configure_for_dhcp": false,
"host": "leaf01.ansible.com",
}
],
"name": "leaf01.ansible.com",
"view": "default"
}
}
TASK [debug specific variable (ipv4 address)] ******************************************************
ok: [localhost] => {
"host.ipv4addrs[0].ipv4addr": "192.168.1.11"
}
TASK [fetch host leaf02] ******************************************************************************
ok: [localhost]
TASK [check the leaf02 return variable] *************************************************************
ok: [localhost] => {
< ...output shortened...>
"host": {
"ipv4addrs": [
{
"configure_for_dhcp": false,
"host": "leaf02.example.com",
"ipv4addr": "192.168.1.12"
}
],
}
}
PLAY RECAP ******************************************************************************************
localhost : ok=5 changed=0 unreachable=0 failed=0
上記の出力は、nios
lookup プラグインによって取得した leaf01.ansible.com
および leaf02.ansible.com
のホストレコードを示しています。この Playbook は、他の Playbook で使用できる変数に情報を保存します。これにより、Infoblox を単一のソースとして使用し、動的に変更する情報を収集して使用できます。Ansible 変数の使用方法の詳細は、「変数の使用」を参照してください。取得できるその他のデータオプションは、「nios」の例を参照してください。
この Playbook には、Infoblox lookup playbooks でアクセスできます。
モジュールとのユースケース¶
nios
モジュールをタスク内で使用して、共通の Infoblox ワークフローを簡素化できます。以下の例を使用する前に、NIOS 認証情報 を必ず設定してください。
IPv4 ネットワークの設定¶
IPv4 ネットワークを設定するには、nios_network モジュールを使用します。
---
- hosts: nios
connection: local
tasks:
- name:Create a network on the default network view
nios_network:
network:192.168.100.0/24
comment: sets the IPv4 network
options:
- name: domain-name
value: ansible.com
state: present
provider: "{{nios_provider}}"
最後のパラメーター provider
は、group_vars/
ディレクトリーに定義された変数 nios_provider
を使用します。
ホストレコードの作成¶
新たに作成した IPv4 ネットワーク上に leaf03.ansible.com という名前のホストレコードを作成するには、以下を実行します。
---
- hosts: nios
connection: local
tasks:
- name: configure an IPv4 host record
nios_host_record:
name: leaf03.ansible.com
ipv4addrs:
- ipv4addr:
"{{ lookup('nios_next_ip', '192.168.100.0/24', provider=nios_provider)[0] }}"
state: present
provider: "{{nios_provider}}"
この例の IPv4 アドレスは、nios_next_ip lookup プラグインを使用して、ネットワーク上で次に利用可能な IPv4 アドレスを検索します。
正引き DNS ゾーンの作成¶
正引き DNS ゾーンを設定するには、nios_zone
モジュールを使用します。
---
- hosts: nios
connection: local
tasks:
- name:Create a forward DNS zone called ansible-test.com
nios_zone:
name: ansible-test.com
comment: local DNS zone
state: present
provider: "{{ nios_provider }}"
逆引き DNS ゾーンの作成¶
逆引き DNS ゾーンを設定するには、以下を行います。
---
- hosts: nios
connection: local
tasks:
- name: configure a reverse mapping zone on the system using IPV6 zone format
nios_zone:
name:100::1/128
zone_format:IPV6
state: present
provider: "{{ nios_provider }}"
動的インベントリースクリプト¶
Infoblox 動的インベントリースクリプトを使用して、Infoblox NIOS でネットワークノードのインベントリーをインポートできます。Infoblox からインベントリーを収集するには、以下の 2 つのファイルが必要です。
- infoblox.yaml - NIOS プロバイダーの引数とオプションフィルターを指定するファイル。
- infoblox.py - NIOS インベントリーを取得する python スクリプト。
Infoblox 動的インベントリースクリプトを使用するには、以下を実行します。
- Download the
infoblox.yaml
ファイルを作成し、これを/etc/ansible
ディレクトリーに保存します。
NIOS 認証情報が含まれる #. Modify the infoblox.yaml
ファイル
infoblox.py
ファイルをダウンロードして、/etc/ansible/hosts
ディレクトリーに保存します。
実行可能にする
#. infoblox.py
ファイルのパーミッションを変更して、ファイルを実行ファイルにします。
$ sudo chmod +x /etc/ansible/hosts/infoblox.py
必要に応じて、./infoblox.py --list
を使用してスクリプトをテストできます。数分後に、Infoblox インベントリーが JSON 形式で表示されるはずです。以下のように Infoblox 動的インベントリースクリプトを明示的に使用できます。
$ ansible -i infoblox.py all -m ping
Infoblox 動的インベントリースクリプトをインベントリーディレクトリー (デフォルトでは etc/ansible/hosts
) に追加することで暗黙的に使用することもできます。詳細は、動的インベントリーの使用 を参照してください。
See also
- Infoblox Web サイト
- Infoblox の Web サイト
- Infoblox および Ansible デプロイメントガイド
- Infoblox が提供する Ansible 統合のデプロイメントガイド
- Ansible 2.5 での Infoblox 統合
- Infoblox に関する Ansible ブログ投稿
- Ansible NIOS モジュール
- 対応している NIOS モジュールの一覧 (サンプル例あり)
- Infoblox Ansible のサンプル
- Infoblox の Playbook サンプル