Spec-Zone.ru › Ansible 2.8

Руководство по Infoblox

  • Предварительные требования
  • Данные учетных записей и аутентификация
  • Плагины поиска NIOS
    • Получение всех сетевых представлений
    • Получение записи о хосте
  • Примеры использования с модулями
    • Настройка сети IPv4
    • Создание записи о хосте
    • Создание зоны прямого DNS
    • Создание зоны обратного DNS
  • Сценарий динамического инвентаризации

Это руководство описывает, как использовать 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 по адресу playbooks поиска Infoblox.

Примеры использования с модулями

Вы можете использовать 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}}"

Обратите внимание, что IPv4-адрес в этом примере использует плагин поиска 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:

  1. Загрузите файл infoblox.yaml и сохраните его в каталоге /etc/ansible.
  2. Измените файл infoblox.yaml со своими учетными данными NIOS.
  3. Загрузите файл infoblox.py и сохраните его в каталоге /etc/ansible/hosts.
  4. Измените разрешения файла 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.8/scenario_guides/guide_infoblox.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API