ネットワークリソースモジュール¶
Ansible 2.9 では、さまざまなネットワークデバイスの管理を単純化し、標準化するネットワークリソースモジュールが導入されました。
ネットワークリソースモジュールの概要¶
ネットワークデバイスは、設定を、ネットワークサービスに適用するセクション (インターフェース、VLAN など) に分割します。Ansible ネットワークリソースモジュールは、これを利用してネットワークデバイス設定内のサブセクションや リソース の設定を可能にします。ネットワークリソースモジュールは、ネットワークデバイスが異なっても、ユーザーが体験する内容は同じになります。
ネットワークリソースモジュールの状態¶
ネットワークリソースモジュールを使用するには、モジュールの実行内容に状態を割り当てます。リソースモジュールは以下の状態に対応します。
- merged
- Ansible は、デバイス上の設定をタスクに指定した設定と統合します。
- replaced
- Ansible が、デバイス上の設定のサブセクションを、タスクに指定した設定のサブセクションに置き換えます。
- overridden
- Ansible は、タスクに指定した設定で、リソースに対するデバイス上の設定を上書きします。デバイスへのアクセスを削除できるため (たとえば、管理インターフェースの設定を上書きするなど)、この状態には注意してください。
- deleted
- Ansible は、デバイス上の設定サブセクションを削除して、デフォルト設定を復元します。
- gathered
- Ansible は、ネットワークデバイスから収集したリソースの詳細を表示し、結果の
gathered
キーでアクセスします。 - rendered
- Ansible は、デバイスネイティブ形式 (Cisco IOS CLI など) のタスクで指定される設定をレンダリングします。Ansible は、このレンダリングされた設定を、結果の
rendered
キーで返します。この状態はネットワークデバイスと通信せず、オフラインで使用できることに注意してください。 - parsed
- Ansible は、
running_configuration
オプションから、結果のparsed
キーに含まれる Ansible 構造化データに設定を解析します。この状態はオフラインで使用できるように、ネットワークデバイスから設定を収集しないことに注意してください。
ネットワークリソースモジュールの使用¶
この例では、異なる状態設定に基づいて、Cisco IOS デバイスで L3 インターフェースリソースを設定します。
- name: configure l3 interface ios_l3_interfaces: config: "{{ config }}" state: <state>
以下の表は、このタスクをさまざまな状況で変更した最初のリソースの設定の例を示しています。
ネットワークリソースモジュールは、以下の詳細を返します。
- before 状態 - タスクが実行する前の既存リソース設定。
- after 状態 - タスク実行後にネットワークデバイスに存在する新しいリソース設定。
- Commands - このデバイスに設定されるすべてのコマンド
ok: [nxos101] =>
result:
after:
contact:IT Support
location:Room E, Building 6, Seattle, WA 98134
users:
- algorithm: md5
group: network-admin
localized_key: true
password:'0x73fd9a2cc8c53ed3dd4ed8f4ff157e69'
privacy_password:'0x73fd9a2cc8c53ed3dd4ed8f4ff157e69'
username: admin
before:
contact:IT Support
location:Room E, Building 5, Seattle HQ
users:
- algorithm: md5
group: network-admin
localized_key: true
password:'0x73fd9a2cc8c53ed3dd4ed8f4ff157e69'
privacy_password:'0x73fd9a2cc8c53ed3dd4ed8f4ff157e69'
username: admin
changed: true
commands:
- snmp-server location Room E, Building 6, Seattle, WA 98134
failed: false
例:ネットワークデバイス設定が変更されていないことを確認¶
以下の Playbook は、eos_l3_interfaces モジュールを使用してネットワークデバイス設定のサブセット (レイヤー 3 インターフェースのみ) を収集し、情報が正確であり、変更されていないことを確認します。この Playbook は、eos_facts の結果を、eos_l3_interfaces
モジュールに直接渡します。
- name:Example of facts being pushed right back to device.
hosts: arista
gather_facts: false
tasks:
- name: grab arista eos facts
eos_facts:
gather_subset: min
gather_network_resources: l3_interfaces
- name:Ensure that the IP address information is accurate.
eos_l3_interfaces:
config: "{{ ansible_network_resources['l3_interfaces'] }}"
register: result
- name:Ensure config did not change.
assert:
that: not result.changed
See also
- Ansible 2.9 のネットワーク機能
- ネットワークリソースモジュールに関する入門ブログの投稿。
- ネットワークリソースモジュールの詳細
- ネットワークリソースモジュールの詳細な説明