Zum Inhalt springen Weiter zur Suche
Testversion
Blog

Installieren von Ansible-Modulen für A10 Networks

A10 Networks Produkte wurden von Grund auf auf der Grundlage einer umfangreichen Reihe von API-Ressourcen (Application Programming Interface) entwickelt, die jeden Aspekt jedes Systems verwalten können. Die A10 Networks API nutzt die RESTful API-Architektur, um A10 Networks Systeme nahtlos mit DevOps-Management-Systemen und einer Vielzahl anderer Technologien zu verbinden.

Ansible ist ein Automatisierungssystem für die Bereitstellung und Verwaltung von Computer-Software- und Hardware-Umgebungen. Ansible-Module sind Softwareprogramme, die von Ansible zur Ausführung bestimmter Aufgaben verwendet werden. Die A10 Networks Ansible-Bibliothek mit Modulen hat die Aufgabe, den Ansible-Befehl in das spezifische A10 Networks API-Format zu übersetzen und die RESTful-Schnittstelle zu A10 Networks Produkten und Diensten bereitzustellen.

Dieser Artikel beschreibt, wie die A10 Networks Modulbibliotheken auf einem Linux-System mit installiertem und laufendem Ansible installiert werden.

Hintergrund

Die A10 Networks Ansible-Modulbibliothek enthält eine große Anzahl von in Python geschriebenen Programmen. Damit DevOps-Systeme A10 Networks Geräte verwalten können, muss die A10 Networks Ansible-Bibliothek auf dem System installiert werden, auf dem Ansible läuft. Sobald die A10 Networks Ansible-Modulbibliothek installiert ist, können Ansible-Skripte eine Schnittstelle zu A10 Networks Systemen herstellen.

DevOps Ansible-Umgebung zur Verwaltung von A10 Networks Geräten

Laden Sie die A10 Networks Modulbibliothek herunter.

A10 Networks Die Ansible-Modulbibliotheken befinden sich auf GitHub unter a10-ansible.

Es gibt mehrere Versionen der A10 Networks Module, die sich in verschiedenen Zweigen befinden. Der Master-Zweig ist für jeden zugänglich. Andere Zweige enthalten zusätzliche Module. Um Zugang zu den neuesten Versionen der A10 Networks Module zu erhalten, sollten Sie sich an Ihren lokalen A10 Networks Vertriebsmitarbeiter wenden, der Ihnen Zugang und Anleitung gibt.

Wählen Sie die Bibliotheksversion aus und klicken Sie auf die Schaltfläche "Klonen oder Herunterladen", um die Bibliothek herunterzuladen. Verschieben Sie diese Bibliothek auf den Ansible-Server.

Installieren Sie die A10 Networks Modulbibliothek

Die GitHub-Website für die Ansible-Module A10 Networks beschreibt das Verfahren zur Installation dieser Bibliothek mit den üblichen und geeigneten Methoden. Beschrieben wird die Installation mit PIP und PyPi.

In diesem Artikel wird die manuelle Installation der Module von A10 Networks beschrieben. Dies hilft den Administratoren bei der Anpassung der Installationen an die lokalen IT-Standardverfahren.

Übersicht der Installationsschritte:

  1. Wechseln Sie in das Verzeichnis, in das die A10 Networks ansible-Bibliothek heruntergeladen wurde. Dies kann ein beliebiger temporärer oder Quellordner sein.
  2. Entpacken Sie die Bibliothek. Dadurch werden mehrere Ordner mit Code und Skripten entladen. Die Ansible-Module und zusätzliche Python-Software sind alles, was benötigt wird.
  3. Kopieren Sie den Ordner A10 Networks Ansible modules in den Ordner für Ihre spezifischen Ansible-Module.
  4. Kopieren Sie die A10 Networks Python-Module in Ihren Python-Site-Packages-Ordner.

Im Folgenden finden Sie ein Beispiel für ein Bash-Skript.


#!/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

Beachten Sie, dass Ihre spezifische Umgebung je nach Version von Python, Linux und der A10 Networks Modules Library variieren kann. Die Skriptbefehle können nacheinander manuell ausgeführt werden.

Die A10 Networks Modules-Distribution enthält auch einen Ordner namens "examples", der YAML-Beispielvorlagen für jedes Ansible-Modul enthält.

HINWEIS: Anstatt die Python-Codebibliotheken zu füllen, können alternativ auch die A10 Networks Module und Module Utility-Programme in der Ansible-Konfigurationsdatei referenziert werden.

Erstellen Sie die folgende Datei im Playbook-Ordner als "ansible.cfg"


[defaults]
library = /usr/share/a10_ansible_modules/
module_utils = /usr/share/a10_ansible/  

Ändern Sie die Ordnerpfade nach Bedarf.

Testen von A10 Networks Ansible-Modulen

Mit der folgenden Ansible-Konfiguration wird eine einzelne A10 Networks Thunder Ethernet-Schnittstelle initialisiert. Die durchgeführten Schritte sind:

  1. Melden Sie sich bei dem virtuellen System oder der Hardware A10 Networks an.
  2. Aktivieren Sie die angegebene Ethernet-Schnittstelle
  3. Konfigurieren Sie die Schnittstelle für DHCP

Erstellen Sie einen Ordner und eine CD in diesem Ordner.

Erstellen Sie eine Ansible-Hosts-Inventardatei. Diese Datei enthält die Adressen von einem oder mehreren A10 Networks Systemen.


#/usr/bin/bash
echo "[all]" > ./hosts
echo 192.168.1.100 >> ./hosts

In diesem Beispiel lautet die IP-Adresse des A10 Networks Systems Management 192.168.1.100.

Erstellen Sie eine benutzerdefinierte ansible.cfg-Datei im lokalen Ordner.


[defaults]
host_key_checking = False

Da wir eine Verbindung über REST statt über SSH herstellen, müssen wir die Anforderung, die Schlüssel des entfernten Hosts zu überprüfen, deaktivieren. Dieser Parameter kann auch zur Hauptkonfiguration von Ansible hinzugefügt werden, normalerweise unter /etc/ansible.cfg.

Erstellen Sie eine Ansible-Playbook-YAML-Datei. Diese wird zwei Ansible-Variablen enthalten.

  1. inventory_hostname ist eine in Ansible eingebaute Variable, die aus der hosts-Datei übergeben wird
  2. ifnum ist die Nummer der Ethernet-Schnittstelle und wird während der Ausführung aus der Befehlszeile übergeben.
  3. connection: ist erforderlich, da REST anstelle von SSH für die Schnittstelle zum System A10 Networks verwendet wird.

- 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"

Speichern Sie dies in einer Datei namens "init_ethernet_interface.yml".

Führen Sie den folgenden Befehl aus, um das Playbook auszuführen, das das A10 Networks -Modul "a10_interface_ethernet" aufruft.


ansible-playbook -i hosts init_ethernet_interface.yml --extra-vars  "ifnum=1" -v

Ein weiteres Playbook-Beispiel zur Initialisierung der Verwaltungsschnittstelle.


- 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"

Fehlersuche

HINWEIS: Fügen Sie zur Fehlerbehebung den Parameter -vvvv hinzu. Bei der Ersteinrichtung kann es vorkommen, dass Modulbibliotheken an den falschen Stellen platziert werden.
HINWEIS: Zusätzliche Parameter sind für die Fehlersuche in Ansible-Umgebungen nützlich.

ANSIBLE_DEBUG=True