arubanetworks.aruba_central_role

aruba-central-ansible-role

このAnsibleネットワークロールは、クラウドベースのネットワーク管理システムであるAruba Centralのために特別に設計された、プラットフォーム依存の構成管理モジュールとプラグインのセットを提供します。

要件

  • Python 3.5以上

  • Ansible 2.9以上

    • Ansible 2.10以上はansible.netcommonコレクションが必要です
  • サポート対象の最小Aruba Centralファームウェアは2.5.2です

  • 次のコマンドを使用して、すべてのAnsible要件をインストールします:

    ansible-galaxy install -r requirements.yml
    
  • 次のコマンドを使用して、すべてのPython要件をインストールします:

    pip install -r requirements.txt
    

インストール

Galaxy経由で:

ansible-galaxy install arubanetworks.aruba_central_role

GitHub経由で、次のコマンドを使用します。現在のロールバージョンを上書きするには、オプション-fを使用します:

ansible-galaxy install git+https://github.com/aruba/aruba-central-ansible-role.git

注意事項

  • このロールのモジュールはCentralのREST APIを使用しています。REST APIに関する情報およびREST APIを利用するためのアクセスを取得する方法については、Aruba Developer HubのREST APIの始め方をご覧ください。
  • Aruba CentralのAPI GatewayでユーザーのためにAPIトークンを作成する必要があり、有効で期限切れでない**access_token**を使用する必要があります。API Gatewayの始め方に関する詳細については、こちらのYouTube動画を視聴できます。
  • 有効なアクセストークンはInventoryセクションに記載されているように、インベントリファイルに使用できます。
  • 新しいトークンをAPI Gatewayで追加する際に「ネットワークオペレーション」がアプリケーションのドロップダウンリストで選択されていることを確認してください。
  • 新しいトークンが生成されると、access_tokenrefresh_tokenが生成されます。
  • アクセストークンは7200秒、つまり2時間の間有効です。2時間後には期限切れとなり、新しいトークンを作成する必要があります。トークンの有効期限は現在設定できません。
  • **refresh_tokenclient_id、およびclient_secret**はアクセストークンを更新するために使用されます。この機能はインベントリプラグインを使用してこのロールに実装されています。インベントリファイルまたはインベントリプラグイン設定ファイルを使用してプラグインを利用できます。
  • トークンの自動更新に使用するためのプラグイン設定ファイルやその他の認証情報の使用方法についての詳細は、インベントリプラグイン設定ファイルセクションに記載されています。

インベントリ/ホストファイル

Aruba Central Ansibleロールと一緒にインベントリまたはホストファイルを使用する方法は2つあります:

  1. インベントリ
    • Ansibleに必要なhttpapiプラグインとその他の詳細、アクセストークンを指定するホストファイル。
  2. インベントリプラグイン設定ファイルまたはインベントリソース
    • インベントリプラグインによって使用されるインベントリソースファイル。
    • 一般的なインベントリプラグインの実装には、プラグインスクリプト(通常はPythonで記述される)とインベントリソース(この場合はYAMLファイル)が含まれます。
    • Ansibleのドキュメントによると、インベントリリソースはインベントリプラグインが扱う入力文字列です。インベントリソースはファイルへのパスやスクリプトであり、プラグインが動的にインベントリ変数を生成するのに解釈できる生データであることもあります。
    • このロールのためには、インベントリプラグインが受け入れるのは、インベントリプラグイン設定ファイル変数を持つ.ymlファイルのみです。

インベントリ変数

Aruba Centralアカウント用にインベントリに定義すべき変数は次のとおりです:

  • ansible_host: Aruba CentralのAPI Gatewayのクラスター固有のBase-URL(FQDN形式)。API GatewayのAPIドキュメントURLで確認できます。
  • ansible_connection: 常にhttpapiに設定する必要があります。
  • ansible_network_os: 常にaruba_centralに設定する必要があります。
  • ansible_httpapi_use_ssl: 常にTrueに設定する必要があります。
  • ansible_httpapi_central_access_token: Aruba CentralのAPIアクセストークンです。

サンプルインベントリ:

YAML
all:
  hosts:
    central:
      ansible_host: apigw-prod2.central.arubanetworks.com
      ansible_connection: httpapi
      ansible_network_os: aruba_central
      ansible_httpapi_use_ssl: True
      ansible_httpapi_central_access_token: CnjDaXXxvnjrvJRwxxxxXXxxXXXXxxxx
INI
arubacentral ansible_host=apigw-prod2.central.arubanetworks.com  ansible_connection=httpapi ansible_network_os=aruba_central  ansible_httpapi_use_ssl=True  ansible_httpapi_central_access_token=CnjDaXXxvnjrvJRwxxxxXXxxXXXXxxxx

インベントリプラグイン設定ファイル

  • これはインベントリプラグインによって使用され、HttpAPI接続プラグインに必要なすべてのオプションで動的にインベントリを生成するためのインベントリソースファイルです。
  • ユーザーは、プラグイン名と他の中央の資格情報を持つ設定ファイルを作成する必要があります。

注意事項

  • 通常、インベントリプラグインはロール内で配布することはできません。AnsibleはPlaybookまたはロールの実行前にインベントリプラグインを実行するからです。詳細については、Ansible Docsをご覧ください。
    • したがって、Aruba Central Ansibleコレクションを公開するまで、カスタムインベントリプラグインを利用するための次の回避策を実行する必要があります。この方法でトークンの自動更新を行います。

メソッド1:

  • GitHubからcentral_inventory.pyインベントリプラグインファイルをコピーし、Playbooksディレクトリ内のinventory_pluginsディレクトリに保存します。
  • Playbooksディレクトリには次の構造がなければなりません:
playbooks_dir
+-- playbook1.yml
+-- playbook2.yml
+-- inv_src.yml
+-- inventory_plugins/
|   +-- central_inventory.py
  • **inv_src.yml**または別の**.yml**ファイルはインベントリプラグイン設定ファイルとして機能します。サンプルインベントリプラグイン設定ファイルとその変数は以下に記載されています。
  • インベントリプラグイン設定ファイルはAnsible Vaultと一緒に使用しないでください。インベントリプラグインは更新されたリフレッシュおよびアクセストークンをプラグイン設定ファイルに書き戻す必要があるためです。
  • ユーザーは最初に、インベントリプラグイン設定ファイルに有効なアクセストークンとリフレッシュトークンが入力されていることを確認する必要があります。両方のトークンが無効な場合、インベントリプラグインはファイルに**<Enter a Valid Access/Refresh Token>**というメッセージを変更し、実行は「Unauthorized」エラーで失敗します。
  • Centralの**refresh_token14日間**有効です。14日間使用されない場合、トークンは取り消され、新しいトークンを作成する必要があります。リフレッシュトークンの有効期間は現時点では設定できません。

メソッド2:

  • ロールをインストールしたら、ロールディレクトリに移動します。次のコマンドを使用してロールがどこにインストールされているかを確認し、インベントリプラグインファイルを含むディレクトリをプレイブックディレクトリに移動します。
$ ansible-galaxy role list 

------------------output-----------------
# /home/admin/.ansible/roles
- arubanetworks.aruba_central_role, 0.2.1
  • パスを選択し、ロールディレクトリに移動します。
  • ロール名はインストール方法によって異なる場合があります。
  • パスが決まったら、インベントリプラグインディレクトリをプレイブックディレクトリに移動します。
$ cd /home/admin/.ansible/roles

$ cd arubanetworks.aruba_central_role
または
$ cd aruba-central-ansible-role

$ mv inventory_plugins/ <playbooks_directoryのパス>

インベントリプラグイン設定変数

Aruba Centralアカウント用にインベントリプラグイン設定ファイルに定義すべき変数は次のとおりです:

  • access_token: Aruba CentralのAPIアクセストークン。
  • api_gateway: Aruba CentralのAPI Gatewayのクラスター固有のBase-URL(FQDN形式)。API GatewayのAPIドキュメントURLで確認できます。
  • client_id: Aruba CentralのAPIクライアントID
  • client_secret: Aruba CentralのAPIクライアントシークレット
  • host: 常にcentralに設定する必要があります。
  • plugin: 常にcentral_inventoryに設定する必要があります。
  • refresh_token: Aruba CentralのAPIリフレッシュトークン

サンプルインベントリプラグイン設定ファイル:

YAML
access_token: CnjDaXXxvnjrvJRwxxxxXXxxXXXXxxxx
api_gateway: apigw-prod2.central.arubanetworks.com
client_id: FOqWxx124ASdfS36HqKIeXXzZ
client_secret: O2RfdKgiS13GhswdrWAIEueMPOxxZxX
host: central
plugin: central_inventory
refresh_token: X12daE6BFhk8QqqzzeifHTYxxZZ12XxX

例のPlaybook

ロールを含む

ロールをGalaxyを通じてインストールした場合、ロールはarubanetworks.aruba_central_roleに設定します:

---
-  hosts: all
   roles:
     - role: arubanetworks.aruba_central_role
   tasks:
   - name: Get all the UI and Template Groups on Central
     central_groups:
       action: get_groups
       limit: 20
       offset: 0

ロールをGitHubを通じてインストールした場合、ロールはaruba-central-ansible-roleに設定します:

---
-  hosts: all
   roles:
     - role: aruba-central-ansible-role
   tasks:
   - name: Get all the UI and Template Groups on Central
     central_groups:
       action: get_groups
       limit: 20
       offset: 0

Playbookの実行

ansible-playbook playbook.yml -i inventory.yml
  • inventory.ymlはシンプルなインベントリファイルまたはインベントリプラグイン設定ファイル(インベントリソース)である可能性があります。
  • インベントリプラグイン設定ファイルを使用してPlaybookを実行する前に、inventory_plugins/ディレクトリにcentral_inventory.pyがあることを確認してください。

貢献

Aruba Networksでは、製品の品質を確保するために全力を尽くしていますので、問題を見つけた場合は、GitHubに問題を報告してください。迅速に対応いたします!

さらなる貢献の機会については、CONTRIBUTING.mdに記載されているガイドラインをご覧ください。

ライセンス

MIT

著者情報

  • Jay Pathak (@jayp193)
  • Derek Wang (@derekwangHPEAruba)
プロジェクトについて

Ansible modules for automating various monitoring and configuration constructs on Aruba Central, which is used to manage network devices (github repo - https://github.com/aruba/aruba-central-ansible-role)

インストール
ansible-galaxy install arubanetworks.aruba_central_role
ライセンス
mit
ダウンロード
83.8k