brgalloway.phpipam_api
Playbooks für die Interaktion mit der phpipam API
Mit einer funktionierenden phpipam-Installation kannst du die API aktivieren und diese Interaktionen in Playbooks verwenden. Du musst die App-ID konfigurieren und einen Benutzer erstellen, der auf diese API zugreift, um ein Token zu erhalten.
Einrichtung der API für die Nutzung in Ansible
Im GUI musst du zum API-Bereich unter Verwaltung navigieren. Hier kannst du die App-ID für die API konfigurieren. Als nächstes musst du zum Benutzerbereich navigieren, um deinen API-Benutzer zu erstellen.
Interaktion mit der API
Um die Subnetze zu finden und spezifische Variablen zu befüllen, musst du mit Postman oder Curl die API erkunden.
Verwendung von Curl, um ein Token zurückzugeben:
curl -k https://ipam.example.com/api/phpipamappid/user/ -X POST -u <benutzername>:<passwort>
Das Token aus der zurückgegebenen JSON-Ausgabe abrufen:
curl -k https://ipam.example.com/api/phpipamappid/sections/ --header "token: .J1e9ipFZkPE6EvIRAqEf9hp" -X GET
Sobald du die ID der Abschnitte hast, kannst du sie verwenden, um die Subnetze in diesem Abschnitt abzurufen.
curl -k https://ipam.example.com/api/phpipamappid/sections/{ID}/subnets --header "token: .J1e9ipFZkPE6EvIRAqEf9hp" -X GET
Dies listet alle Subnetze in diesem Abschnitt auf, und du solltest die ID aus den zurückgegebenen Objekten entnehmen:
"id": <nummer>,
...
Hier wird die Variable subnet_id:
befüllt.
Beispiel-Playbook zur Reservierung von IPs
Das main.yml-Playbook ist ein Beispiel für die Verwendung des URI-Moduls, um einen API-Aufruf zu machen, die Ausgabe zu registrieren, um Variablen zu befüllen, IPs zu registrieren und die Datenbank von phpipam zu aktualisieren.
Um den verschlüsselten Wert für das Vault-Passwort der Variable api_pass zu generieren, musst du dies mit ansible-vault erstellen. https://docs.ansible.com/ansible/2.4/vault.html
Sobald alle Werte in der Datei group_vars/all auf deine Umgebung übereinstimmen, wird das Playbook erfolgreich sein. Der Aufruf der API holt das Token, das dann in einer Variable gespeichert und im gesamten Playbook verwendet wird.
phpipam-Dokumentation https://phpipam.net/api/api_documentation/
ansible-galaxy install brgalloway.phpipam_api