Spec-Zone.ru › Ansible 2.4

Разработка модулей

  • Приветствие
  • Нужно ли разрабатывать модуль?
  • Как разрабатывать модуль
  • Приложение: Модульные утилиты

Приветствие

В этом разделе обсуждается, как разрабатывать, отлаживать, просматривать и тестировать модули.

Модули Ansible — это многократно используемые автономные скрипты, которые могут использоваться API Ansible или программами ansible или ansible-playbook. Они возвращают информацию Ansible, выводя строку JSON в стандартный вывод перед завершением. Они принимают аргументы несколькими способами, о которых мы поговорим в процессе работы с этим учебником.

См. О модулях для списка существующих модулей.

Модули могут быть написаны на любом языке и находятся в пути, указанном в ANSIBLE_LIBRARY или в параметре командной строки --module-path или в разделе библиотеки файла конфигурации Ansible.

Нужно ли разрабатывать модуль?

Прежде чем приступать к созданию нового модуля, необходимо подумать, действительно ли необходимо его разрабатывать. Задайте следующие вопросы:

  1. Существует ли похожий модуль?

Доступно много существующих модулей, вы можете ознакомиться со списком существующих модулей по адресу О модулях

  1. Кто-то уже работал над похожим запросом на вытягивание (Pull Request)?

Возможно, кто-то уже начал разрабатывать похожий запрос на вытягивание (Pull Request). Существует несколько способов найти открытые запросы на вытягивание для модулей:

  • GitHub: новые запросы на вытягивание (Pull Request) для модулей
  • Все обновления модулей
  • Новые запросы на вытягивание (Pull Request) для модулей, перечисленные по каталогу поиск по lib/ansible/modules/

Если вы найдете существующий запрос на вытягивание (Pull Request), который, как кажется, решает вашу проблему, пожалуйста, дайте обратную связь по этому запросу — это ускорит слияние запроса.

  1. Стоит ли использовать или разрабатывать плагин действий (action plugin) вместо этого?

Плагины действий выполняются на мастер-узле, а не на целевом. Для модулей, таких как file/copy/template, часть работы должна выполняться на мастер-узле перед выполнением модуля на целевом. Плагины действий сначала выполняются на мастер-узле и затем, при необходимости, могут выполнить обычный модуль на целевом узле.

Для получения дополнительной информации о плагинах действий см. документацию по плагинам действий здесь.

  1. Стоит ли использовать роль (role) вместо этого?

Ознакомьтесь с документацией по ролям здесь.

Как разрабатывать модуль

В следующих разделах будет обсуждаться, как разрабатывать и работать с модулями:

Руководство по разработке модулей Ansible
Обзор общей методологии разработки, отладки и тестирования модулей.
Руководство по разработке модулей Ansible для Windows
Обзор общей методологии разработки, отладки и тестирования модулей для Windows.
Документирование вашего модуля
Как включить встроенную документацию в ваш модуль.
Правила, рекомендации и потенциальные ошибки
Рекомендации по наилучшим практикам, рекомендации и недопустимые действия.
Внесение вашего модуля в Ansible
Список проверок для внесения вашего модуля в Ansible.
Тестирование Ansible
Разработка модульных и интеграционных тестов.
Ansible и Python 3
Добавление поддержки Python 3 в модули (все новые модули должны быть совместимы с Python-2.6 и Python-3.5).
Информация для отправки группы модулей
Руководство для партнеров, желающих отправить несколько модулей.

См. также

О модулях
Узнайте о доступных модулях
Разработка плагинов
Узнайте о разработке плагинов
Python API
Узнайте о Python API для выполнения плейбуков и задач
Каталог модулей GitHub
Просмотрите исходный код модулей
Список рассылки
Список рассылки для разработчиков
irc.freenode.net
Канал IRC-чата #ansible

Приложение: Модульные утилиты

Ansible предоставляет ряд модульных утилит, которые предоставляют вспомогательные функции, которые вы можете использовать при разработке собственных модулей. Утилита модуля basic.py предоставляет главный входной пункт для доступа к библиотеке Ansible, и все модули Ansible должны, как минимум, импортировать из basic.py:

from ansible.module_utils.basic import *

Ниже приведен список файлов module_utils и общее описание. Исходный код модульных утилит находится в каталоге ./lib/module_utils в вашем основном пути Ansible — для получения более подробной информации об любой конкретной утилите модуля, пожалуйста, обратитесь к исходному коду.

  • a10.py — Утилиты, используемые модулем a10_server для управления устройствами A10 Networks.
  • aireos.py — Определения и вспомогательные функции для модулей, которые управляют устройствами Cisco WLC.
  • api.py — Добавляет общую поддержку для универсальных модулей API.
  • aos.py — Утилиты поддержки модулей для управления сервером Apstra AOS.
  • aruba.py — Вспомогательные функции для модулей, работающих с сетевыми устройствами Aruba.
  • asa.py — Утилиты поддержки модулей для управления сетевыми устройствами Cisco ASA.
  • azure_rm_common.py — Определения и утилиты для развертывания шаблонов Microsoft Azure Resource Manager.
  • basic.py — Общие определения и вспомогательные утилиты для модулей Ansible.
  • cloudstack.py — Утилиты для модулей CloudStack.
  • database.py — Разнообразные вспомогательные функции для PostGRES и MySQL
  • docker_common.py — Определения и вспомогательные утилиты для модулей, работающих с Docker.
  • ec2.py — Определения и утилиты для модулей, работающих с Amazon EC2
  • eos.py — Вспомогательные функции для модулей, работающих с сетевыми устройствами EOS.
  • f5.py — Вспомогательные функции для модулей, работающих с сетевыми устройствами F5.
  • facts.py — Вспомогательные функции для модулей, которые возвращают факты.
  • gce.py — Определения и вспомогательные функции для модулей, работающих с ресурсами Google Compute Engine.
  • ios.py — Определения и вспомогательные функции для модулей, которые управляют сетевыми устройствами Cisco IOS
  • iosxr.py — Определения и вспомогательные функции для модулей, которые управляют сетевыми устройствами Cisco IOS-XR
  • ismount.py — Содержит единственную вспомогательную функцию, которая исправляет os.path.ismount
  • junos.py — Определения и вспомогательные функции для модулей, которые управляют сетевыми устройствами Junos
  • known_hosts.py — утилиты для работы с файлом known_hosts
  • manageiq.py — Функции и утилиты для модулей, которые работают с платформой ManageIQ и ее ресурсами.
  • mysql.py — Позволяет модулям подключаться к экземпляру MySQL
  • netapp.py — Функции и утилиты для модулей, которые работают с платформами хранения NetApp.
  • netcfg.py — Функции утилиты конфигурации для использования сетевыми модулями
  • netcmd.py — Определяет команды и операторы сравнения для использования в сетевых модулях
  • netscaler.py — Утилиты специально для сетевых модулей netscaler.
  • network.py — Функции для запуска команд на сетевых устройствах
  • nxos.py — Содержит определения и вспомогательные функции, специфичные для сетевых устройств Cisco NXOS
  • openstack.py — Утилиты для модулей, которые работают с экземплярами Openstack.
  • openswitch.py — Определения и вспомогательные функции для модулей, которые управляют устройствами OpenSwitch
  • powershell.ps1 — Утилиты для работы с клиентами Microsoft Windows
  • pure.py — Функции и утилиты для модулей, которые работают с платформами хранения Pure Storage.
  • pycompat24.py — Обход исключений для Python 2.4.
  • rax.py — Определения и вспомогательные функции для модулей, которые работают с ресурсами Rackspace.
  • redhat.py — Функции для модулей, которые управляют регистрацией и подписками Red Hat Network
  • service.py — Содержит утилиты для обеспечения работы модулей с службами Linux (заглушка, не используется).
  • shell.py — Функции для создания оболочек и работы с командами оболочки модулями
  • six/__init__.py — Скомпилированная копия библиотеки Python Six для помощи в написании кода, совместимого с Python 2 и Python 3.
  • splitter.py — Утилиты для разделения и обработки строк для работы с шаблонами Jinja2
  • urls.py — Утилиты для работы с запросами http и https
  • vca.py — Содержит утилиты для модулей, которые работают с VMware vCloud Air
  • vmware.py — Содержит утилиты для модулей, которые работают с виртуальными машинами VMware vSphere
  • vyos.py — Определения и функции для работы с VyOS networking

© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.4/dev_guide/developing_modules.html

Spec-Zone.ru

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