jonjozwiak.bluecat-ipam-rest
Nom du Rôle
Ce rôle utilise l'API REST du Bluecat Address Manager (Proteus) pour acquérir et libérer des adresses IP ainsi que leurs noms DNS associés. Il effectue un déploiement rapide plutôt qu'un déploiement complet. Il prend un nom d'hôte cible en entrée et définit les variables suivantes lors de l'acquisition d'une adresse IP, qui peuvent être utilisées dans les actions suivantes :
ipAddress
ipNetmask
ipGateway
Ce rôle a été testé avec Bluecat Address Manager 8.1.0
Exigences
Ce rôle utilise le filtre 'ipaddr' pour renvoyer le masque de sous-réseau pour le CIDR donné. Cela nécessite le module python netaddr (provenant des RPM python-netaddr / python3-netaddr). Alternativement, vous pouvez supprimer la section ipNetmask du rôle.
Variables du Rôle
Les variables peuvent être définies dans la section supérieure d'un playbook ou dans la section include_role comme indiqué dans l'exemple de playbook. Les variables dans la section supérieure remplacent celles de la section des tâches.
# Identifiants de l'utilisateur avec accès API pour Bluecat
bluecat_username: "apiuser"
bluecat_password: "apipassword"
bluecat_url: "https://bcn_proteus.example.com"
# Détails de configuration et de vue depuis Bluecat
bluecat_configuration_name: "Exemple"
bluecat_dns_view: "interne"
# Propriétés à transmettre à l'appel API Bluecat pour acquérir une IP (une seule peut être définie)
address_properties: "offset=192.168.30.15" # Commencer à partir de cette adresse
address_properties: "skip=192.168.30.1-192.168.30.15" # Ignorer ces adresses
address_properties: "|excludeDHCPRange=true" # Ignorer la plage DHCP
address_properties: "skip=10.10.10.128-10.10.11.200,10.10.11.210|offset=10.10.10.100|excludeDHCPRange=true|" # Tout en un
# Choisir non si vous utilisez des certificats auto-signés. Oui si les certificats sont valides
validate_certs: "non"
# Déterminer s'il faut acquérir ou libérer un nom IP/DNS. La valeur par défaut est présent. Les options sont :
# Créer ou acquérir IP/DNS : présent, acquérir
# Rechercher IP par nom d'hôte : get, lookup
# Libérer IP/DNS : absent, libérer
state: "présent"
# Nom d'hôte à acquérir ou libérer
target_hostname: "host.example.com"
# Le CIDR du réseau pour acquérir une IP
bluecat_network_cidr: "192.168.30.0/24"
Dépendances
Exemple de Playbook
REMARQUE : les variables en haut remplacent celles de la section include_role ci-dessous. Si vous définissez une variable dans l'include_role dans les tâches, ne la mentionnez pas dans les variables en haut.
- name: Déployer et retirer les adresses IP
hosts: localhost
vars:
bluecat_username: "apiuser"
bluecat_password: "apipassword"
bluecat_url: "https://bcn_proteus.example.com"
bluecat_configuration_name: "Exemple"
bluecat_network_cidr: "192.168.30.0/24" # Le CIDR du réseau pour acquérir une IP
bluecat_dns_view: "interne"
address_properties: "offset=192.168.30.15" # Commencer à partir de cette adresse
#address_properties: "skip=192.168.30.1-192.168.30.15" # Ignorer ces adresses
#address_properties: "|excludeDHCPRange=true" # Ignorer la plage DHCP
validate_certs: "non" # Choisir non si vous utilisez des certificats auto-signés..
gather_facts: false
tasks:
- name: Obtenir l'adresse IP
include_role:
name: jonjozwiak.bluecat-ipam-rest
vars:
target_hostname: "ansibletest.example.com"
- name: Faire quelque chose avec l'adresse IP renvoyée
debug: var=ipAddress
- name: Obtenir l'adresse IP
include_role:
name: jonjozwiak.bluecat-ipam-rest
vars:
target_hostname: "ansibletest2.example.com"
- name: Faire quelque chose avec l'adresse IP renvoyée
debug: msg="Adresse IP : <{{ipAddress}}>. Masque de sous-réseau : <{{ipNetmask}}>. Passerelle : <{{ipGateway}}>."
- name: Libérer l'adresse IP
include_role:
name: jonjozwiak.bluecat-ipam-rest
vars:
target_hostname: "ansibletest.example.com"
state: absent
- name: Libérer l'adresse IP
include_role:
name: jonjozwiak.bluecat-ipam-rest
vars:
target_hostname: "ansibletest2.example.com"
state: absent
Licence
GPLv3
Informations sur l'Auteur
Jon Jozwiak
ansible-galaxy install jonjozwiak.bluecat-ipam-rest