最新情報

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製品の構成管理ができます。

ansible1.png

A10モジュールライブラリをダウンロードする

A10のAnsibleモジュールライブラリはGitHub上のhttps://github.com/a10networks/a10-ansibleに置かれています。

さまざまなブランチの下に数バージョンのA10モジュールが置かれています。マスターブランチは誰でも利用でき、他のブランチには追加のモジュールを含んでいます。最新バージョンのA10モジュールにアクセスするには、A10にお問い合わせください

ライブラリのバージョンを選択して、[クローン]または[ダウンロード]をクリックし、ライブラリをダウンロードします。このライブラリをAnsibleサーバーに移動します。

A10モジュールライブラリをインストールする

A10のAnsibleモジュールのGitHub Webサイトには、標準的な方法を使用してこのライブラリをインストールする手順が記載されています。PIPとPyPiを使ったインストールが説明されています。

この記事では、A10のAnsibleモジュールの手動インストールについて説明します。これにより、管理者は標準的な技術手法を使用しながら個々にインストールをカスタマイズできます。

インストール手順の概要:

  1. A10のAnsibleライブラリがダウンロードされたディレクトリに移動します。これは任意の一時フォルダーまたはソースフォルダです。
  2. ライブラリを解凍します。これにより、いくつかのフォルダーのコードとスクリプトがアンロードされます。Ansibleモジュールと追加のPythonソフトウェアだけが必要です。
  3. A10のAnsibleモジュールのフォルダーを特定のAnsible modulesフォルダーにコピーします。
  4. 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シリーズのイーサネットインターフェースを初期化します。実行されるステップは以下のとおりです。

  1. A10 Thunder仮想アプライアンスまたはハードウェアアプライアンスにログインします。
  2. 指定されたイーサネットインターフェースを有効にします。
  3. 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つの変数が含まれます。

  1. inventory_hostnameは、hostsファイルから渡されるAnsible組み込み変数です。
  2. ifnumはイーサネットインターフェイス番号で、実行中にコマンドラインから渡されます。
  3. 「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によるA10 Thunderの構成管理に関する概要資料は、こちらからダウンロードいただけます。