arubanetworks.aoscx_role
aoscx
このAnsibleネットワークロールは、AOS-CXネットワークデバイスのために特別に設計されたプラットフォーム依存の設定管理モジュールのセットを提供します。
要件
- Python 3以上
- Ansible 2.8.1以上
- インストール手順についてはAnsibleのドキュメントを参照してください。
- Ansible 2.10以降は、
ansible.netcommon
コレクションがインストールされている必要があります。
- サポートされるAOS-CXファームウェアの最小バージョンは10.04です。
- AOS-CXデバイスでRESTを有効にするために、以下のコマンドを実行してください:
switch(config)# https-server rest access-mode read-write switch(config)# https-server vrf mgmt
インストール
Galaxyを通じて:
ansible-galaxy install arubanetworks.aoscx_role
例の出力:
ギャラクシーロールインストールプロセスを開始
- arubanetworksが所有するロール'aoscx_role'をダウンロードしています
- https://github.com/aruba/aoscx-ansible-role/archive/3.0.1.tar.gzからロールをダウンロード中
- arubanetworks.aoscx_roleを/users/chiapuzi/.ansible/roles/arubanetworks.aoscx_roleに抽出中
- arubanetworks.aoscx_role (3.0.1)が正常にインストールされました
ansible-control-machine$
ロールがインストールされたディレクトリに移動し、
ansible-galaxy role list
を実行して以下を見つけます:ansible-control-machine$ansible-galaxy role list # /users/chiapuzi/.ansible/roles - arubanetworks.aoscx_role, 3.0.1 - arubanetworks.aruba_central_role, 0.1.0 [警告]: - 構成されたパス/usr/share/ansible/rolesは存在しません。 [警告]: - 構成されたパス/etc/ansible/rolesは存在しません。 ansible-control-machine$cd /users/chiapuzi/.ansible/roles/arubanetworks.aoscx_role/ ansible-control-machine$ls cliconf_plugins httpapi_plugins README.md terminal_plugins connection_plugins library RELEASE-NOTES.md CONTRIBUTING.md meta requirements.txt docs module_utils requirements.yml ansible-control-machine$
- 次のコマンドでAnsibleの要件をすべてインストールします:
ansible-galaxy install -r requirements.yml
- 次のコマンドでPythonの要件をすべてインストールします:
python3 -m pip install -r requirements.txt
- 次のコマンドでAnsibleの要件をすべてインストールします:
作業ディレクトリに戻り、Automationを開始します!
ansible-control-machine$cd /users/chiapuzi/Desktop/sandbox/
SSH/CLIモジュール
- SSH/CLIモジュール
aoscx_config
とaoscx_command
を使用するには、AOS-CXデバイスでSSHアクセスを有効にする必要があります。デフォルトで有効になっています。- 必要に応じて、次のコマンドでデバイスでSSHアクセスを再度有効にします:
switch(config)# ssh server vrf mgmt
- 制御マシンの
known_hosts
ファイルにはターゲットデバイスの公開鍵が含まれている必要があります。- 代わりに、制御マシンによるホスト鍵のチェックを無効にすることもできますが、推奨されません。
- ホスト鍵のチェックを無効にするには、ansible.cfgファイル(デフォルトは/etc/ansible/ansible.cfg)を次のように修正します:
host_key_checking = false
限界と注意点
- デフォルトのコマンドタイムアウトは30秒です。コマンドの実行に30秒以上かかると、タスクがタイムアウトします。
- 定期的に
command timeout triggered, timeout value is 30 secs
エラーが発生する場合は、環境変数ANSIBLE_PERSISTENT_COMMAND_TIMEOUT
をより大きな値に設定することを検討してください。Ansibleのドキュメントはこちらを参照してください。
- 定期的に
インベントリ変数
AOS-CXホストのインベントリで定義すべき変数は以下の通りです:
ansible_host
: スイッチのIPアドレス(形式:A.B.C.D
)。IPv6ホストの場合は文字列として記述し、角括弧で囲みます(例:'[2001::1]'
)。ansible_user
: スイッチのユーザー名(プレーンテキスト形式)ansible_password
: スイッチのパスワード(プレーンテキスト形式)ansible_network_os
: 常にaoscx
に設定する必要があります。ansible_connection
: REST APIモジュールを使用する場合はhttpapi
、SSH/CLIモジュールを使用する場合はnetwork_cli
、pyaoscxモジュールを使用する場合はaoscx
に設定します。- 当社の新しいpyaoscx実装のAOS-CX Ansibleモジュールについては、以下を参照してください。
- ホストでREST APIモジュールとSSH/CLIモジュールの両方を使用する方法については、以下を参照してください。
ansible_httpapi_use_ssl
: (REST APIモジュールにのみ必要) 常にTrue
に設定します。AOS-CXはRESTにポート443を使用します。ansible_httpapi_validate_certs
: (REST APIモジュールにのみ必要) Ansibleが証明書を検証する必要があるかどうかに応じてTrue
またはFalse
を設定します。ansible_acx_no_proxy
: Ansibleが環境プロキシをバイパスしてAOS-CXに接続する必要があるかどうかに応じてTrue
またはFalse
に設定します。ansible_aoscx_validate_certs
: AnsibleがAOS-CXに接続するための検証をバイパスする必要があるかどうかに応じてTrue
またはFalse
に設定します。ansible_connection
がaoscx
に設定されている場合にのみ必要です。ansible_aoscx_use_proxy
: Ansibleが環境プロキシをバイパスしてAOS-CXに接続する必要があるかどうかに応じてTrue
またはFalse
に設定します。ansible_connection
がaoscx
に設定されている場合にのみ必要です。
pyaoscxモジュール
最近更新されたAOS-CX用のPython SDKであるPyaoscxを活用するために、私たちのAnsible統合をpyaoscxを使ってすべてのREST-APIベースのモジュールに再設計しました。
もし私がAOS-CX REST APIモジュールと一緒にAnsibleを使っていた場合、これはどういう意味ですか?
従来の実装は正常に動作し続けますが、今後のモジュールのサポートはありません。つまり、ansible_network_os=aoscx
や追加の変数を指定するために、Ansibleインベントリ変数を更新する必要があります。また、Python3のpipを使用してpyaoscxパッケージをインストールする必要があります。すべてのプレイブックは同じままです:pip3 install pyaoscx
AOS-CX Ansibleロールは、pyaoscxがインストールされているかどうかを自動的に判断し、ansible_network_os
がaoscx
に設定されている場合、その方法を使用します。httpapi
に設定されている場合は、従来の実装方法を継続して使用します。
サンプルインベントリ:
REST APIモジュールのみ:
INI
aoscx_1 ansible_host=10.0.0.1 ansible_user=admin ansible_password=password ansible_network_os=aoscx ansible_connection=aoscx ansible_aoscx_validate_certs=False ansible_aoscx_use_proxy=False
YAML
all:
hosts:
aoscx_1:
ansible_host: 10.0.0.1
ansible_user: admin
ansible_password: password
ansible_network_os: aoscx
ansible_connection: aoscx # pyaoscx接続メソッド
ansible_aoscx_validate_certs: False
ansible_aoscx_use_proxy: False
ansible_acx_no_proxy: True
従来のREST APIモジュール:
INI
aoscx_1 ansible_host=10.0.0.1 ansible_user=admin ansible_password=password ansible_network_os=aoscx ansible_connection=httpapi ansible_httpapi_validate_certs=False ansible_httpapi_use_ssl=True ansible_acx_no_proxy=True
YAML
all:
hosts:
aoscx_1:
ansible_host: 10.0.0.1
ansible_user: admin
ansible_password: password
ansible_network_os: aoscx
ansible_connection: httpapi # REST API接続メソッド
ansible_httpapi_validate_certs: False
ansible_httpapi_use_ssl: True
ansible_acx_no_proxy: True
SSH/CLIモジュールのみ:
INI
aoscx_1 ansible_host=10.0.0.1 ansible_user=admin ansible_password=password ansible_network_os=aoscx ansible_connection=network_cli
YAML
all:
hosts:
aoscx_1:
ansible_host: 10.0.0.1
ansible_user: admin
ansible_password: password
ansible_network_os: aoscx
ansible_connection: network_cli # SSH接続メソッド
例のプレイブック
ロールの含め方
Galaxyを通じてインストールしたロールをarubanetworks.aoscx_role
としてリストに追加します:
- hosts: all
roles:
- role: arubanetworks.aoscx_role
vars:
ansible_python_interpreter: /usr/bin/python3
gather_facts: False
tasks:
- name: L3インターフェース1/1/3の作成
aoscx_l3_interface:
interface: 1/1/3
description: Uplink_Interface
ipv4: ['10.20.1.3/24']
ipv6: ['2001:db8::1234/64']
ホストでREST APIとSSH/CLIモジュールの両方を使用する
同じホストでREST APIモジュールとSSH/CLIモジュールの両方を使用するには、各プレイがREST APIモジュールのみ、またはSSH/CLIモジュールのみを使用するように別々のプレイを作成する必要があります。
プレイはREST APIとSSH/CLIモジュール呼び出しを混在させることができません。
各プレイでは、使用されるモジュールに応じてansible_connection
が適切な値を持たなければなりません。
REST APIモジュールを使用するプレイでは、値はaoscx
にする必要があります。SSH/CLIモジュールを使用するプレイでは、値はnetwork_cli
にする必要があります。
ホストで両方の種類のモジュールを成功裏に使用するための推奨されるアプローチは次の通りです:
- インベントリ変数を設定して、AnsibleがREST APIを使用してホストに接続するようにします。
- プレイブック内のSSH/CLIモジュールが使用されるプレイでは、
ansible_connection
をnetwork_cli
に設定します。
インベントリは次のようになります:
all:
hosts:
aoscx_1:
ansible_host: 10.0.0.1
ansible_user: admin
ansible_password: password
ansible_network_os: aoscx
ansible_connection: aoscx # REST API接続メソッド
ansible_httpapi_validate_certs: False
ansible_httpapi_use_ssl: True
ansible_acx_no_proxy: True
プレイブックは次のようになります(SSH/CLIモジュールaoscx_command
を使用する2番目のプレイがansible_connection
の値を適切に設定していることに注意してください):
- hosts: all
roles:
- role: arubanetworks.aoscx_role
vars:
ansible_python_interpreter: /usr/bin/python3
gather_facts: False
tasks:
- name: バナーの追加または更新
aoscx_banner:
banner_type: banner
banner: "こんにちは!"
- hosts: all
roles:
- role: arubanetworks.aoscx_role
vars:
ansible_connection: network_cli
gather_facts: False
tasks:
- name: スイッチでshow runを実行する
aoscx_command:
commands: ['show run']
貢献
Aruba Networksでは、製品の品質を確保することに尽力していますので、問題を見つけた場合は、ぜひGitHubに問題を報告してください。迅速に対応いたします!
さらなる貢献の機会については、CONTRIBUTING.mdに記載されたガイドラインを参照してください。
ライセンス
Apache 2.0
著者情報
- Madhusudan Pranav Venugopal (@madhusudan-pranav-venugopal)
- Yang Liu (@yliu-aruba)
- Tiffany Chiapuzio-Wong (@tchiapuziowong)
- Derek Wang (@derekwangHPEAruba)
- Daniel Alvarado Bonilla (@daniel-alvarado)
Ansible modules for configuring AOS-CX switches. (github repo - https://github.com/aruba/aoscx-ansible-role)
ansible-galaxy install arubanetworks.aoscx_role