Руководство по Infoblox
- Предварительные требования
- Учетные данные и аутентификация
- Плагины поиска NIOS
- Примеры использования с модулями
- Сценарий динамического инвентаризации
Это руководство описывает, как использовать Ansible с Infoblox Network Identity Operating System (NIOS). С помощью интеграции Ansible вы можете использовать Ansible playbooks для автоматизации Infoblox Core Network Services для управления IP-адресами (IPAM), DNS и отслеживания инвентаризации.
Вы можете ознакомиться с простыми примерами задач в документации по любому из модулей NIOS или посмотреть раздел Примеры использования с модулями для более подробных примеров. Подробную информацию о продукте Infoblox можно найти на сайте Infoblox.
Примечание
Вы можете получить большинство примеров playbooks, используемых в этом руководстве, из репозитория GitHub network-automation/infoblox_ansible.
Предварительные требования
Перед использованием Ansible nios модулей с Infoblox необходимо установить infoblox-client на ваш контрольный узел Ansible:
$ sudo pip install infoblox-client
Примечание
Для использования Ansible с Infoblox необходима учетная запись NIOS с включенной функцией WAPI.
Учетные данные и аутентификация
Для использования Infoblox nios модулей в playbooks необходимо настроить учетные данные для доступа к вашей системе Infoblox. В примерах этого руководства используются учетные данные, хранящиеся в <playbookdir>/group_vars/nios.yml. Замените эти значения своими учетными данными Infoblox:
--- nios_provider: host: 192.0.0.2 username: admin password: ansible
Плагины поиска NIOS
Ansible включает следующие плагины поиска для NIOS:
- nios Использует API Infoblox WAPI для получения указанных объектов NIOS, например сетевых представлений, представлений DNS и записей о хостах.
- nios_next_ip Предоставляет следующий доступный IP-адрес из сети. Вы увидите пример этого в разделе Создание записи о хосте.
- nios_next_network - Возвращает следующий доступный диапазон сети для сетевого контейнера.
Вы должны запустить плагины поиска NIOS локально, указав connection: local. Дополнительные сведения см. в разделе плагины поиска.
Получение всех сетевых представлений
Чтобы получить все сетевые представления и сохранить их в переменной, используйте модуль set_fact с плагином поиска nios:
---
- hosts: nios
connection: local
tasks:
- name: fetch all networkview objects
set_fact:
networkviews: "{{ lookup('nios', 'networkview', provider=nios_provider) }}"
- name: check the networkviews
debug:
var: networkviews
Получение записи о хосте
Чтобы получить набор записей о хостах, используйте модуль set_fact с плагином поиска nios и включите фильтр для конкретных хостов, которые нужно получить:
---
- hosts: nios
connection: local
tasks:
- name: fetch host leaf01
set_fact:
host: "{{ lookup('nios', 'record:host', filter={'name': 'leaf01.ansible.com'}, provider=nios_provider) }}"
- name: check the leaf01 return variable
debug:
var: host
- name: debug specific variable (ipv4 address)
debug:
var: host.ipv4addrs[0].ipv4addr
- name: fetch host leaf02
set_fact:
host: "{{ lookup('nios', 'record:host', filter={'name': 'leaf02.ansible.com'}, provider=nios_provider) }}"
- name: check the leaf02 return variable
debug:
var: host
Если вы запустите этот get_host_record.yml playbook, вы должны увидеть результаты, аналогичные следующим:
$ ansible-playbook get_host_record.yml
PLAY [localhost] ***************************************************************************************
TASK [fetch host leaf01] ******************************************************************************
ok: [localhost]
TASK [check the leaf01 return variable] *************************************************************
ok: [localhost] => {
< ...output shortened...>
"host": {
"ipv4addrs": [
{
"configure_for_dhcp": false,
"host": "leaf01.ansible.com",
}
],
"name": "leaf01.ansible.com",
"view": "default"
}
}
TASK [debug specific variable (ipv4 address)] ******************************************************
ok: [localhost] => {
"host.ipv4addrs[0].ipv4addr": "192.168.1.11"
}
TASK [fetch host leaf02] ******************************************************************************
ok: [localhost]
TASK [check the leaf02 return variable] *************************************************************
ok: [localhost] => {
< ...output shortened...>
"host": {
"ipv4addrs": [
{
"configure_for_dhcp": false,
"host": "leaf02.example.com",
"ipv4addr": "192.168.1.12"
}
],
}
}
PLAY RECAP ******************************************************************************************
localhost : ok=5 changed=0 unreachable=0 failed=0
Вышеприведенный вывод показывает запись о хосте для leaf01.ansible.com и leaf02.ansible.com, которые были получены плагином поиска nios. Этот playbook сохраняет информацию в переменных, которые можно использовать в других playbooks. Это позволяет использовать Infoblox в качестве единственного источника истинности для сбора и использования динамически изменяющейся информации. Дополнительную информацию об использовании переменных Ansible см. в разделе Использование переменных. См. примеры плагинов поиска nios для получения дополнительной информации о доступных данных.
Вы можете получить доступ к этим playbooks по адресу Infoblox lookup playbooks.
Примеры использования с модулями
Вы можете использовать nios модули в задачах, чтобы упростить общие рабочие процессы Infoblox. Не забудьте настроить свои Учетные данные NIOS перед выполнением этих примеров.
Настройка сети IPv4
Для настройки сети IPv4 используйте модуль nios_network:
---
- hosts: nios
connection: local
tasks:
- name: Create a network on the default network view
nios_network:
network: 192.168.100.0/24
comment: sets the IPv4 network
options:
- name: domain-name
value: ansible.com
state: present
provider: "{{nios_provider}}"
Обратите внимание на последний параметр, provider, использует переменную nios_provider, определенную в каталоге group_vars/.
Создание записи о хосте
Чтобы создать запись о хосте с именем leaf03.ansible.com в новой сети IPv4:
---
- hosts: nios
connection: local
tasks:
- name: configure an IPv4 host record
nios_host_record:
name: leaf03.ansible.com
ipv4addrs:
- ipv4addr:
"{{ lookup('nios_next_ip', '192.168.100.0/24', provider=nios_provider)[0] }}"
state: present
provider: "{{nios_provider}}"
Обратите внимание, что IP-адрес в этом примере использует плагин поиска nios_next_ip, чтобы найти следующий доступный IPv4-адрес в сети.
Создание зоны прямого DNS
Для настройки зоны прямого DNS используйте модуль nios_zone:
---
- hosts: nios
connection: local
tasks:
- name: Create a forward DNS zone called ansible-test.com
nios_zone:
name: ansible-test.com
comment: local DNS zone
state: present
provider: "{{ nios_provider }}"
Создание зоны обратного DNS
Для настройки зоны обратного DNS:
---
- hosts: nios
connection: local
tasks:
- name: configure a reverse mapping zone on the system using IPV6 zone format
nios_zone:
name: 100::1/128
zone_format: IPV6
state: present
provider: "{{ nios_provider }}"
Сценарий динамического инвентаризации
Вы можете использовать сценарий динамической инвентаризации Infoblox для импорта инвентаризации узлов вашей сети с Infoblox NIOS. Для сбора инвентаризации из Infoblox вам потребуются два файла:
- infoblox.yaml - Файл, в котором указаны аргументы провайдера NIOS и дополнительные фильтры.
- infoblox.py - Скрипт Python, который получает инвентаризацию NIOS.
Для использования сценария динамической инвентаризации Infoblox:
- Загрузите файл
infoblox.yamlи сохраните его в каталоге/etc/ansible. - Измените файл
infoblox.yamlсо своими учетными данными NIOS. - Загрузите файл
infoblox.pyи сохраните его в каталоге/etc/ansible/hosts. - Измените разрешения на файл
infoblox.py, чтобы сделать его исполняемым:
$ sudo chmod +x /etc/ansible/hosts/infoblox.py
Вы можете использовать ./infoblox.py --list для тестирования скрипта. Через несколько минут вы должны увидеть вашу инвентаризацию Infoblox в формате JSON. Вы можете явно использовать сценарий динамической инвентаризации Infoblox следующим образом:
$ ansible -i infoblox.py all -m ping
Вы также можете неявно использовать сценарий динамической инвентаризации Infoblox, включив его в ваш каталог инвентаризации (etc/ansible/hosts по умолчанию). Дополнительные сведения см. в разделе Работа с динамической инвентаризацией.
См. также
- Сайт Infoblox
- Сайт Infoblox
- Руководство по развертыванию Infoblox и Ansible
- Руководство по развертыванию для интеграции Ansible, предоставленное Infoblox.
- Интеграция Infoblox в Ansible 2.5
- Блог Ansible об интеграции Infoblox.
- Модули Ansible NIOS
- Список поддерживаемых модулей NIOS с примерами.
- Примеры Ansible Infoblox
- Примеры playbooks Infoblox.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.7/scenario_guides/guide_infoblox.html