arubanetworks.aruba_central_role
aruba-central-ansible-role
このAnsibleネットワークロールは、クラウドベースのネットワーク管理システムであるAruba Centralのために特別に設計された、プラットフォーム依存の構成管理モジュールとプラグインのセットを提供します。
要件
Python 3.5以上
Ansible 2.9以上
- Ansible 2.10以上は
ansible.netcommon
コレクションが必要です
- Ansible 2.10以上は
サポート対象の最小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_token
とrefresh_token
が生成されます。 - アクセストークンは7200秒、つまり2時間の間有効です。2時間後には期限切れとなり、新しいトークンを作成する必要があります。トークンの有効期限は現在設定できません。
- **
refresh_token
とclient_id
、およびclient_secret
**はアクセストークンを更新するために使用されます。この機能はインベントリプラグインを使用してこのロールに実装されています。インベントリファイルまたはインベントリプラグイン設定ファイルを使用してプラグインを利用できます。 - トークンの自動更新に使用するためのプラグイン設定ファイルやその他の認証情報の使用方法についての詳細は、インベントリプラグイン設定ファイルセクションに記載されています。
インベントリ/ホストファイル
Aruba Central Ansibleロールと一緒にインベントリまたはホストファイルを使用する方法は2つあります:
- インベントリ
- Ansibleに必要なhttpapiプラグインとその他の詳細、アクセストークンを指定するホストファイル。
- インベントリプラグイン設定ファイルまたはインベントリソース
- インベントリプラグインによって使用されるインベントリソースファイル。
- 一般的なインベントリプラグインの実装には、プラグインスクリプト(通常は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_token
は14日間**有効です。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クライアントIDclient_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