bluecat-ipam-rest
Название роли
Эта роль работает с API REST Bluecat Address Manager (Proteus) для получения и освобождения IP-адресов и связанных с ними DNS-имен. Она выполняет быстрое развертывание, а не полное. На вход подается целевое имя хоста, и устанавливаются следующие переменные при получении IP-адреса, которые могут быть использованы в последующих задачах:
ipAddress
ipNetmask
ipGateway
Эта роль была протестирована с Bluecat Address Manager версии 8.1.0.
Требования
Эта роль использует фильтр 'ipaddr' для получения маски подсети для заданного CIDR. Это требует наличия модуля python netaddr (из RPM python-netaddr / python3-netaddr). В качестве альтернативы вы можете удалить раздел ipNetmask из роли.
Переменные роли
Переменные можно задать в общем в верхней части плейбука или в секции include_role, как показано в примере плейбука. Переменные в верхней части перекрывают те, что в секции задач.
# Учетные данные пользователя Bluecat Address Manager с доступом к API
bluecat_username: "apiuser"
bluecat_password: "apipassword"
bluecat_url: "https://bcn_proteus.example.com"
# Конфигурация и детали представления из Bluecat
bluecat_configuration_name: "Example"
bluecat_dns_view: "internal"
# Свойства, которые передаются в вызов API Bluecat для получения IP (можно задать только одно)
address_properties: "offset=192.168.30.15" # Начать с этого адреса
address_properties: "skip=192.168.30.1-192.168.30.15" # Пропустить эти адреса
address_properties: "|excludeDHCPRange=true" # Пропустить диапазон DHCP
address_properties: "skip=10.10.10.128-10.10.11.200,10.10.11.210|offset=10.10.10.100|excludeDHCPRange=true|" # Все в одном
# Выберите "нет", если используются самоподписанные сертификаты. "да", если сертификаты действительны
validate_certs: "no"
# Определите, нужно ли получить или освободить имя IP/DNS. По умолчанию установлено "present". Возможные варианты:
# Создать или получить IP/DNS: present, acquire
# Найти IP по имени хоста: get, lookup
# Освободить IP/DNS: absent, release
state: "present"
# Имя хоста для получения или освобождения
target_hostname: "host.example.com"
# CIDR сети для получения IP
bluecat_network_cidr: "192.168.30.0/24"
Зависимости
Пример плейбука
ПРИМЕЧАНИЕ: переменные вверху перекрывают переменные include_role ниже. Если вы задаете переменную в include_role в задачах, не указывайте ее в переменных вверху.
- name: Развернуть и освободить IP-адреса
hosts: localhost
vars:
bluecat_username: "apiuser"
bluecat_password: "apipassword"
bluecat_url: "https://bcn_proteus.example.com"
bluecat_configuration_name: "Example"
bluecat_network_cidr: "192.168.30.0/24" # CIDR сети для получения IP
bluecat_dns_view: "internal"
address_properties: "offset=192.168.30.15" # Начать с этого адреса
#address_properties: "skip=192.168.30.1-192.168.30.15" # Пропустить эти адреса
#address_properties: "|excludeDHCPRange=true" # Пропустить диапазон DHCP
validate_certs: "no" # Выберите "нет", если используются самоподписанные сертификаты.
gather_facts: false
tasks:
- name: Получить IP-адрес
include_role:
name: jonjozwiak.bluecat-ipam-rest
vars:
target_hostname: "ansibletest.example.com"
- name: Сделать что-то с возвращенным IP-адресом
debug: var=ipAddress
- name: Получить IP-адрес
include_role:
name: jonjozwiak.bluecat-ipam-rest
vars:
target_hostname: "ansibletest2.example.com"
- name: Сделать что-то с возвращенным IP-адресом
debug: msg="IP-адрес: <{{ipAddress}}>. Маска подсети: <{{ipNetmask}}>. Шлюз: <{{ipGateway}}>."
- name: Освободить IP-адрес
include_role:
name: jonjozwiak.bluecat-ipam-rest
vars:
target_hostname: "ansibletest.example.com"
state: absent
- name: Освободить IP-адрес
include_role:
name: jonjozwiak.bluecat-ipam-rest
vars:
target_hostname: "ansibletest2.example.com"
state: absent
Лицензия
GPLv3
Информация об авторе
Jon Jozwiak
ansible-galaxy install jonjozwiak/bluecat-ipam-rest