DDoS-Erkennung, Mitigation, Management und Bedrohungsanalyse
Umfassende Sicherheit & CGNAT
TLS/SSL Inspection
Web-Application-Firewall
Anwendungssicherheit und Load Balancing
Analytik und Management
CGNAT und IPv6-Migration
A10 Networks Produkte mit der Advanced Core Operating System (ACOS)-Technologie beinhalten eine umfassende API-Infrastruktur für Systemintegrationen und -verwaltung. Bei diesem API-Produkt handelt es sich um aXAPI, eine auf RESTful-Webservices basierende Schnittstelle, die DevOps und IT-Betrieb die Möglichkeit bietet, sich nahtlos in bestehende Verwaltungsplattformen zu integrieren.
aXAPI integriert sich in Management-Automatisierungssysteme wie Ansible, Chef, Puppet und Jenkins oder kann direkt mit selbst entwickelter Software verwendet werden. Für weitere Informationen lesen Sie den Artikel "aXAPI For Integration".
Dieser Artikel enthält direkte Programmierbeispiele für allgemeine Verwaltungsaufgaben:
In den folgenden Beispielen werden der Einfachheit halber Linux cURL-Skripte verwendet. Diese funktionierenden Beispiele können dann auf jede Sprache oder Verwaltungsumgebung portiert werden.
Der folgende Aufruf dient der Authentifizierung mit einem Benutzernamen und einem Passwort. Die API gibt dann Daten im JSON-Format zurück, einschließlich eines Tokens im Signaturfeld. Dieses Token muss an alle weiteren API-Aufrufe weitergegeben werden.
/usr/bin/curl -k -s "https://$HOSTIP/axapi/v3/auth" \ -H "Content-Type:application/json" \ -d '{ "credentials": { "username": "admin", "password": "a10" } }' > /tmp/out.json sig=`cat /tmp/out.json | grep "\signature\""" | cut -f 2 -d ':' | sed 's/""//g' | sed 's/ if [ ""$sig"" == """" ]; then echo ""ERROR - Failed to login to ACOS device - exiting"" exit fi
Die zurückgegebene Token-Zeichenkette wird in die Variable $sig eingelesen, die in nachfolgenden API-Aufgaben verwendet werden kann.
Eine wichtige Funktion ist die Sicherung des Systems. Das folgende Beispiel weist das A10 System an, ein Paket mit dem Systemabbild und der Konfiguration zu erstellen und das Backup per FTP auf einen entfernten Server zu übertragen. Es können auch andere Protokolle verwendet werden, einschließlich HTTP SCP
curl -k -s -X POST \ ""https://$HOSTIP/axapi/v3/backup/system"" \ -H ""Authorization: A10 $sig"" \ -H ""Content-Type:application/json"" \ -d ""{ \"system\": { \"remote-file\":\"ftp://backup@server.where.com/$BKPATH/$BKFILE\" \"password\":\"a102345\" } }"" > /tmp/out.backup.json x=`cat /tmp/out.backup.json | grep ""\"status\": \"OK\"""` if [ ""$x"" = """" ] then echo ""System Backup failed"" cat /tmp/out.backup.json else echo ""System Backup successful [$BKPATH/$BKFILE]"" fi
Durch das Löschen wird die Systemkonfiguration auf die Werkseinstellungen zurückgesetzt. Wenn Sie ein System mit einem unbekannten Zustand neu einrichten, empfiehlt es sich, eine Löschung durchzuführen. Protokolle und andere Nutzungsdaten werden zusammen mit allen anderen Konfigurationen gelöscht.
echo ""Erase Configuration"" curl -k -s -X POST \ ""https://$HOST/axapi/v3/erase"" \ -H ""Authorization: A10 $sig"" \ -H ""Content-Type:application/json"" \ -d '{ ""erase"": { ""preserve-management"":0 ""preserve-accounts"":1 ""reload"":1 } }' > /tmp/out.json
Die Option "preserve-managemen" ist nicht aktiviert, da sie standardmäßig auf DHCP gesetzt wird.
Die Option "Neu laden" ist aktiviert und löst einen Neustart des Systems aus.
Im Folgenden wird eine Paket-Backup-Datei auf das A10-System heruntergeladen und das Image und die Konfigurationen wiederhergestellt.
curl -k -s -X POST \ ""https://$HOSTIP/axapi/v3/restore"" \ -H ""Authorization: A10 $sig"" \ -H ""Content-Type:application/json"" \ -d ""{ \"restore\": { \"remote-file\":\"ftp://root:12345@server.where.com/$BKPATH/$BKFILE\" } }"" > /tmp/out.restore.json x=`cat /tmp/out.restore.json` if [ ""$x"" == """" ] then echo ""System Restore successful [$BKPATH/$BKFILE]"" echo ""Need to reboot system to complete restore"" else echo ""ERROR - System Restore failed [$BKPATH/$BKFILE]"" cat /tmp/out.restore.json fi
Senden Sie die Anweisung zum Neustart des Systems.
curl -k -s -X POST \ ""https://$HOSTIP/axapi/v3/reboot"" \ -H ""Authorization: A10 $sig"" \ -H ""Content-Type:application/json"" \ -d ""{ \"reboot\": { \"all\":\"0\" } }"" > /tmp/out.reboot.json #x=`cat /tmp/out.reboot.json | grep ""\"status\": \"OK\"""` x=`cat /tmp/out.reboot.json` if [ ""$x"" == """" ] then echo ""System Reboot sucessful"" else echo ""System Reboot failed"" cat /tmp/out.reboot.json fi
Bei der Automatisierung von Verwaltungsaufgaben, die einen Neustart erfordern, muss das System abgefragt werden, ob der Bootvorgang abgeschlossen ist und ob es sich in einem betriebsbereiten Zustand befindet. Das folgende Skript wird normalerweise nach einem Neustart ausgeführt. Sobald dieses Skript abgeschlossen ist, gibt es die Wartezustände frei und übergibt die Kontrolle an den nächsten Befehl.
#/usr/bin/bash HOST=""$1"" echo ""Remote host [$HOST]"" echo ""Polling the system for both booted and ready condition"" sleep 5 while [ 1 ] do ##echo ""Login to Thunder"" curl -k -s ""https://$HOST/axapi/v3/auth"" \ -H ""Content-Type:application/json"" \ -d '{ ""credentials"": { ""username"": ""admin"" ""password"": ""a10"" } }' > /tmp/out.json x=`cat /tmp/out.json | grep ""\"signature\""" | cut -f 2 -d ':' | sed 's/""//g' | sed 's///g'` if [ ""$x"" = """" ] then echo ""System not available - waiting..."" sleep 10 else echo ""System booted"" break fi done while [ 1 ] do ##echo ""Login to Thunder"" curl -k -s ""https://$HOST/axapi/v3/auth"" \ -H ""Content-Type:application/json"" \ -d '{ ""credentials"": { ""username"": ""admin"" ""password"": ""a10"" } }' > /tmp/out.json x=`cat /tmp/out.json | grep ""\"signature\""" | cut -f 2 -d ':' | sed 's/""//g' | sed 's///g'` curl -k -s \ ""https://$HOST/axapi/v3/running-config"" \ -H ""Authorization: A10 $x"" \ -H ""Content-Type:application/json"" \ -d '{ ""running-config"": { ""aflex"": 0 ""class-list"": 0 } }' > /tmp/out.json out=`cat /tmp/out.json | grep ""running-config"" ` if [ ""$out"" = """" ] then echo ""Still loading - waiting..."" sleep 10 else echo ""System loaded"" sleep 5 break fi done exit
Die folgenden API-Aufrufe legen die primäre DNS-IP-Adresse und das DNS-Suffix des Systems fest.
echo ""Set Primary DNS Primary IP"" curl -s -k -X POST \ ""https://$HOST/axapi/v3/ip/dns/primary"" \ -H ""Authorization: A10 $sig"" \ -H ""Content-Type:application/json"" \ -d ""{ \"primary\": \"ip-v4-addr\": ""\"$DNSIP\""" } }"" > /tmp/out.set_dns_primary.json echo ""Set DNS Suffix"" curl -s -k -X POST \ ""https://$HOST/axapi/v3/ip/dns/suffix"" \ -H ""Authorization: A10 $sig"" \ -H ""Content-Type:application/json"" \ -d '{ ""suffix"": { ""domain-name"": ""what.com"" } }' > /tmp/out.set_dns_suffix.json