Модули – это дискретные единицы кода, которые можно запускать с помощью командной строки или с помощью плейбука для того, чтобы вносить определенные изменения в целевой узел или собирать с него информацию. Ansible реализует каждый модуль на удалённом целевом узле, а также собирает ответные значения. Модули Ansible также известны как плагины задач или библиотечные плагины.  Существует несколько наиболее важных Ansible-модулей, которые часто используются при автоматизации ряда задач. Но охватить все важные модули в одной статье будет не самой хорошей идеей, поэтому мы делим её на три части. В этой части мы рассмотрим модули проверки подключения хоста, а также целевого узла (модуль ping), модуль, который может извлекать информацию с целевого узла (модуль setup), модули управления существующим пакетом и установки новых пакетов (yum, apt, package, pip и npm модули), а также модуль запуска базовых команд и скриптов на целевых узлах (raw, command, shell и script модули). Итак, начнём..   Модуль Ping используется при проверке на удаленном хосте, особенно при подключении к удаленному хосту, и проверке Python на нём. Он также может использоваться для проверки логина пользователя и доступов.  Результатом выполнения команды будет: Важные факты о модуле Ping: Он не работает на ICMP, но по умолчанию работает на SSH или на любом другом установленном методе подключения. Одним из допустимых параметров являются данные, которые принимают значения вида pong, crash или какой-либо другой строки. Pong – по умолчанию. Он представляет собой возвращаемое значение при успешном выполнении. Если данные предоставлены со значением crash, то этот модуль вернет исключение. Модуль Setup помогает нам в сборе данных о целевых узлах, таких как hostname, ip, os и других. Этот модуль автоматически реализуется плейбуком для сбора полезной информации об удаленном хосте. Вся информация представлена в удобном формате t JSON, а всем значениям предшествует “ansible_”. Применив обозначенную выше команду, получим результат в следующем формате: Также можно отфильтровать результаты, используя параметр фильтра: Модуль yum используется для установки различных пакетов или программного обеспечения в Linux на базе Redhat. Модуль apt package используется для управления ПО в ОС Linux на базе debian.   Этот модуль управляет пакетами на целевом объекте без указания модуля диспетчера пакетов (yum, apt, …). Его удобно использовать в гетерогенной среде без необходимости создавать конкретную задачу под каждого менеджера пакетов. Этот модуль выступает в качестве прокси-сервера для базового модуля диспетчера пакетов, тогда как все параметры будут переданы базовому модулю:  Модуль pip используется при управлении пакетами Python в целевой системе.    Модуль npm используется при управлении node.js пакетами. Этот модуль не является частью ansible-core модулей. Для того, чтобы использовать его в плейбуке, укажите: community.general.npm. Модуль raw используется при выполнении низкоуровневой команды SSH, она очень эффективна, но должна выполняться лишь в нескольких случаях.  Наиболее распространенным случаем является установка Python в системе, в которой Python отсутствует. Другим случаем является обращение к любым устройствам, таким как маршрутизаторы, на которых не установлен Python. В любом другом случае уместнее будет использовать модуль shell или модуль command. Параметры, переданные модулем raw, выполняются напрямую через удалённый настроенный модуль shell. Модуль Command используется для выполнения команд на удаленном узле. В основном он применяется для выполнения простых команд Linux. Команда или несколько команд не будут обрабатываться модулем shell, поэтому такие переменные, как  $HOSTNAME и операции типа “*”, “<”, “>”, “|”, “;” не будут работать. Для целей Windows нужно использовать модуль win_command. Для целей на базе Windows win_command может использоваться вместо модуля command.   Модуль shell предназначен для выполнения shell-команд на целевых хостах на базе unix. В отличие от модуля Ansible command, Ansible Shell будет принимать очень сложные команды с каналами, переадресацией и т.д. Также можно выполнять shell script с помощью этого модуля. Этот модуль предназначен для работы только с ПО на базе Linux, а не Windows. Для Windows следует использовать модуль win_powershell. Модуль script можно использовать для запуска локального скрипта на удаленном узле. Когда мы вызываем модуль shell и передаем ему локальный shell script, сначала он передает script на удаленный узел бэкэнда, а затем выполняет его.  Две важные вещи, которые следует знать об этом модуле: первая – он не требует Python на удаленном узле, вторая – script выполняется через shell. Модуль script также поддерживается для узлов на базе Windows. В следующей части мы рассмотрим все модули, связанные с управлением различными файлами и их свойствами, такими как модуль копирования или загрузки файлов (модули copy, fetch и get_url), модуль сжатия и распаковки файлов (модули archive и unarchive), модуль создания/удаления (модуль file), модуль управления доступом к файлам (модуль acl), модуль управления файловой конфигурацией (модуль template), модуль поиска файлов (модуль find) и модуль для замены текста внутри содержимого файла (модули replace, lineinfile и blockinfile). Тех, кто хочет научиться управлять серверами и автоматизировать задачи с помощью Ansible, мы приглашаем на наш курс  «Ansible: Infrastructure as Code», который пройдет с 23 января по 19 февраля. Знания из курса особенно пригодятся администраторам, инженерам и желающим подняться вверх по карьерной лестнице в качестве девопса. На курсе вы: Узнаете как работать с переменными, как писать плейбуки и роли; Развернете LEMP стек, PostgreSQL и Mongo кластеры, Задеплоите Flask приложение; Напишите свой модуль для Ansible; Настроите IaC в Gitlab; Разберетесь с работой с облаками и enterprise решениями. После обучения вы сможете конфигурировать рутинные задачи с помощью удобного инструмента без страха правок конфигураций. Вы будете понимать, когда и как писать свои модули, а также смело залазить под капот Ansible. Купите курс до 28 декабря и участвуйте в розыгрыше сертификата на 500 000Р на курсы Слёрма.  Посмотреть программу курса и записаться.