A10ネットワークス Thunderシリーズ用Ansibleモジュールインストールガイド
本記事は米国A10 Networksが発行した技術資料の抄訳版です。原文はこちらよりご確認ください。
A10ネットワークス(以下、A10)の製品は、あらゆるシステムと連携可能な、幅広いアプリケーションプログラミングインターフェイス(API)リソースを提供しています。A10のAPIは、RESTful APIアーキテクチャを使用しており、A10製品をDevOpsツールやその他さまざまなテクノロジーにシームレスに接続可能です。
Ansibleは、コンピュータソフトウェアとハードウェア環境を展開および管理するための構成管理ツールです。Ansibleモジュールは、特定のタスクを実行するためにAnsibleによって使用されるソフトウェアプログラムにあたります。A10のAnsibleモジュールライブラリは、AnsibleコマンドをA10のREST APIフォーマットに変換する機能を持ち、A10製品およびサービスへのRESTfulインターフェースを通じてコマンドを実行します。
この記事では、Ansibleがインストールされ動作しているLinuxシステムにA10のAnsibleモジュールライブラリをインストールする方法について説明します。
背景
A10のAnsibleモジュールライブラリには、Pythonで書かれた多数のプログラムが含まれています。DevOpsツールがA10製品を管理できるようにするには、A10のAnsibleライブラリを、Ansibleを実行しているシステムにインストールする必要があります。A10のAnsibleモジュールライブラリがインストールされると、AnsibleのPlaybookを記述することでA10製品の構成管理ができます。
A10モジュールライブラリをダウンロードする
A10のAnsibleモジュールライブラリはGitHub上のhttps://github.com/a10networks/a10-ansibleに置かれています。
さまざまなブランチの下に数バージョンのA10モジュールが置かれています。マスターブランチは誰でも利用でき、他のブランチには追加のモジュールを含んでいます。最新バージョンのA10モジュールにアクセスするには、A10にお問い合わせください。
ライブラリのバージョンを選択して、[クローン]または[ダウンロード]をクリックし、ライブラリをダウンロードします。このライブラリをAnsibleサーバーに移動します。
A10モジュールライブラリをインストールする
A10のAnsibleモジュールのGitHub Webサイトには、標準的な方法を使用してこのライブラリをインストールする手順が記載されています。PIPとPyPiを使ったインストールが説明されています。
この記事では、A10のAnsibleモジュールの手動インストールについて説明します。これにより、管理者は標準的な技術手法を使用しながら個々にインストールをカスタマイズできます。
インストール手順の概要:
- A10のAnsibleライブラリがダウンロードされたディレクトリに移動します。これは任意の一時フォルダーまたはソースフォルダです。
- ライブラリを解凍します。これにより、いくつかのフォルダーのコードとスクリプトがアンロードされます。Ansibleモジュールと追加のPythonソフトウェアだけが必要です。
- A10のAnsibleモジュールのフォルダーを特定のAnsible modulesフォルダーにコピーします。
- A10 Pythonモジュールを、お使いのPython site-packagesフォルダーにコピーしてください。
以下はbashスクリプトの例です。
#!/usr/bin/bash #This example, the sdk_development version of the A10 Networks Modules library was downloaded A10 NetworksANSIBLELIB=a10-ansible-sdk_development.zip A10 NetworksDIR=${A10 NetworksANSIBLELIB::-4} #This example, the python library is hard coded for simplicity. Your environment may likely vary ANSIBLEMODS="/usr/lib/python2.7/site-packages/ansible/modules" PYTHONMODS="/usr/lib/python2.7/site-packages/" #CD to the folder with the A10 Networks library zip file and unzip the contents HERE=`pwd` unzip -q $A10 NetworksANSIBLELIB cd $HERE/$A10 NetworksDIR/a10_ansible #The Ansible modules are stored in the "library" folder. We are renaming this folder and moving it to the Ansible modules library. mv library/ $ANSIBLEMODS/a10_ansible_modules #Also included are several Python common modules which need to be copied to the Python site-packages library like any other software package mv $HERE/$A10 NetworksDIR/a10_ansible $PYTHONMODS
Python、Linux、およびA10のAnsibleモジュールライブラリのバージョンによって、個々の環境が異なることに注意してください。スクリプトコマンドは手動で1つずつ実行できます。
A10のモジュールディストリビューションには、「example」という名前のフォルダーも含まれています。各Ansibleモジュール用のAnsible PlaybookのYAMLテンプレートの例が含まれています。
注:Pythonコードライブラリを作成する代わりに、A10モジュールおよびモジュールユーティリティプログラムをAnsible設定ファイルで参照することもできます。
次のファイルをplaybookフォルダーに"ansible.cfg "として作成します。
[defaults] library = /usr/share/a10_ansible_modules/ module_utils = /usr/share/a10_ansible/
フォルダパスを適切なものに変更します。
A10のAnsibleモジュールのテスト
次のAnsibleの設定例では、1台のA10 Thunderシリーズのイーサネットインターフェースを初期化します。実行されるステップは以下のとおりです。
- A10 Thunder仮想アプライアンスまたはハードウェアアプライアンスにログインします。
- 指定されたイーサネットインターフェースを有効にします。
- DHCP用にインターフェースを構成します。
Ansibleホストインベントリファイルを作成します。このファイルには、1つ以上のA10製品のアドレスが含まれています。
この例では、A10製品の管理IPアドレスは192.168.1.100です。 #/usr/bin/bash echo "[all]" > ./hosts echo 192.168.1.100 >> ./hosts
ローカルフォルダーにカスタムansible.cfgファイルを作成します。
[defaults] host_key_checking = False
SSHではなくRESTを使って接続しているので、リモートホストキーをチェックするという要件を無効にする必要があります。このパラメーターはAnsibleのメイン設定(通常は/etc/ansible.cfgにある)にも追加できます。
Ansible Playbookを作成します。これには2つの変数が含まれます。
- inventory_hostnameは、hostsファイルから渡されるAnsible組み込み変数です。
- ifnumはイーサネットインターフェイス番号で、実行中にコマンドラインから渡されます。
- 「connection: local」の指定はA10製品とのインタフェースにSSHの代わりにRESTが使用されるため、必須です。
name: Update A10 Networks ACOS system Ethernet interface connection: local hosts: all tasks: - name: Update Ethernet 1 Interface - IP Address, Enable a10_interface_ethernet: a10_host: "{{ inventory_hostname }}" a10_username: "admin" a10_password: "a10" state: "present" action: "enable" ifnum: "{{ ifnum }}" ip: dhcp: "true"
これを "init_ethernet_interface.yml"という名前でファイルに保存します。
次のコマンドを実行して、A10モジュール「a10_interface_ethernet」を呼び出すPlaybookを実行します。
ansible-playbook -i hosts init_ethernet_interface.yml --extra-vars "ifnum=1" -v
管理インターフェースを初期化するための、もう1つのPlaybookの例を以下に示します。
- name: Update vThunder CFW for initial use - Network, DNS, etc. connection: local hosts: all tasks: - name: Update Management Interface - IP Address, Enable a10_interface_management: a10_host: "{{inventory_hostname}}" a10_username: "admin" a10_password: "a10" state: "present" action: "enable" ip: dhcp: "true" default-gateway: "172.20.0.1"
トラブルシューティング
注:トラブルシューティングを行うには、ansible-playbookを実行する際に-vvvvパラメーターを追加してください。初期設定時には、モジュールライブラリを間違った場所に配置してしまうのが、一般的なトラブルの原因になりがちです。
補足:Ansibleのデバッグには以下の追加の環境変数が役立ちます。
ANSIBLE_DEBUG=True
AnsibleによるThunderの構成管理概要とインストールガイドは、こちらからダウンロードいただけます。