brgalloway.phpipam_api
Playbooks pour interagir avec l'API phpipam
Avec une installation phpipam fonctionnelle, vous pouvez activer l'API et utiliser ces interactions dans les playbooks. Vous devrez configurer l'ID de l'application et créer un utilisateur qui accédera à cette API pour obtenir un jeton.
Configuration de l'API pour utilisation dans Ansible
Dans l'interface graphique, vous devrez naviguer vers la section API dans le menu d'administration. Ici, vous pouvez configurer l'ID de l'application pour l'API. Ensuite, vous devrez aller dans la section Utilisateurs pour créer votre utilisateur API.
Interagir avec l'API
Pour trouver les sous-réseaux et peupler des variables spécifiques, vous devrez explorer l'API avec Postman ou curl.
Utiliser curl pour obtenir un jeton :
curl -k https://ipam.example.com/api/phpipamappid/user/ -X POST -u <nom_utilisateur>:<mot_de_passe>
Pour récupérer le jeton à partir de la sortie JSON retournée :
curl -k https://ipam.example.com/api/phpipamappid/sections/ --header "token: .J1e9ipFZkPE6EvIRAqEf9hp" -X GET
Une fois que vous avez l'ID des sections, cela peut être utilisé pour obtenir les sous-réseaux dans cette section.
curl -k https://ipam.example.com/api/phpipamappid/sections/{ID}/subnets --header "token: .J1e9ipFZkPE6EvIRAqEf9hp" -X GET
Cela va lister tous les sous-réseaux dans cette section, et vous voudrez récupérer l'ID des objets retournés
"id": <nombre>,
...
C'est ici que la variable subnet_id:
est peuplée.
Exemple de playbook pour réserver une IP
Le playbook main.yml est un exemple utilisant le module URI pour faire un appel API, enregistrer la sortie pour peupler des variables, faire des appels pour enregistrer une IP et mettre à jour la base de données de phpipam.
Pour générer la valeur cryptée à utiliser pour le mot de passe du coffre pour la variable api_pass, vous devrez le générer avec ansible-vault. https://docs.ansible.com/ansible/2.4/vault.html
Une fois que toutes les valeurs dans le fichier group_vars/all sont définies pour correspondre à votre environnement, seulement à ce moment-là, le playbook réussira. Faire l'appel à l'API tirera le jeton qui sera ensuite stocké dans une variable et utilisé tout au long du playbook.
Documentation de phpipam https://phpipam.net/api/api_documentation/
ansible-galaxy install brgalloway.phpipam_api