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
      
  • 作業ディレクトリに戻り、Automationを開始します!

    ansible-control-machine$cd /users/chiapuzi/Desktop/sandbox/
    

SSH/CLIモジュール

  • SSH/CLIモジュールaoscx_configaoscx_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_connectionaoscxに設定されている場合にのみ必要です。
  • ansible_aoscx_use_proxy: Ansibleが環境プロキシをバイパスしてAOS-CXに接続する必要があるかどうかに応じてTrueまたはFalseに設定します。ansible_connectionaoscxに設定されている場合にのみ必要です。

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_osaoscxに設定されている場合、その方法を使用します。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にする必要があります。 ホストで両方の種類のモジュールを成功裏に使用するための推奨されるアプローチは次の通りです:

  1. インベントリ変数を設定して、AnsibleがREST APIを使用してホストに接続するようにします。
  2. プレイブック内のSSH/CLIモジュールが使用されるプレイでは、ansible_connectionnetwork_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
ライセンス
Unknown
ダウンロード
97.4k