В современном мире автоматизация — важная часть стратегии любой организации. С распространением облачных вычислений, DevOps, непрерывной интеграции и доставки спрос на инструменты автоматизации вырос в геометрической прогрессии. Ansible — инструмент автоматизации с открытым исходным кодом, который стал одним из самых популярных решений для автоматизации управления инфраструктурой, развертывания приложений и управления конфигурацией. В этом посте мы рассмотрим, как Ansible может помочь вам автоматизировать всё в вашей инфраструктуре. Аnsible — это инструмент автоматизации с открытым исходным кодом, который предоставляет простой и мощный способ автоматизации IT-задач. Ansible был разработан Red Hat и теперь является частью IBM. Он позволяет пользователям автоматизировать такие задачи, как управление конфигурацией, развертывание приложений и оркестрацию на нескольких серверах и устройствах. Это делает его незаменимым инструментом для команд DevOps. Ansible использует декларативный язык YAML для определения задач, что упрощает чтение и понимание. Он безагентный, то есть не требует установки какого-либо программного обеспечения на целевых серверах или устройствах. Вместо этого он использует SSH (Secure Shell) или WinRM (удаленное управление Windows) для подключения к целевым устройствам и выполнения задач. Ansible позволяет пользователям автоматизировать практически любой процесс: от простых действий, таких как создание учетных записей пользователей, до крупных многоуровневых развертываний приложений. Ansible предоставляет удобный интерфейс для разработки, обслуживания и выполнения процессов автоматизации благодаря простому и понятному синтаксису. Это делает его идеальным инструментом для IT-специалистов, команд DevOps и системных администраторов, которые хотят оптимизировать свои рабочие процессы и сэкономить время и силы на управлении своей инфраструктурой. Из рисунка видно, что архитектура Ansible включает: control node (узел управления), playbook (плейбук), inventory (файл инвентаризации), SSH для подключения к управляемым/целевым узлам. Узел управления — это место, где установлен Ansible и откуда выполняются задачи автоматизации. Управляемые/целевые узлы — это серверы, которыми управляет  Ansible. Чтобы начать использовать Ansible, необходимо сначала установить Ansible на управляющем узле. После того как вы установили Ansible, вам нужно будет зарегистрировать целевые/управляемые хосты в файле инвентаризации Ansible. Файл инвентаризации — это файл, содержащий список всех хостов, которыми вы хотите управлять с помощью Ansible, а также их IP-адреса или имена хостов. После этого вы можете создавать плейбуки. Они представляют собой YAML-файлы, содержащие ряд задач, которые должны выполняться на управляемых узлах. Эти задачи могут включать в себя широкий спектр операций, таких как установка программного обеспечения, настройка служб и управление сетевыми параметрами. Когда playbook запускается с управляющего узла, Ansible устанавливает безопасный канал связи с управляемыми узлами с помощью SSH. Затем Ansible выполняет задачи, определенные в плейбуке на управляемых узлах. Name. Имя используется для идентификации плейбука. Hosts. Хосты из файла инвентаризации. Это может быть список хостов и их атрибутов. Файл инвентаризации обычно располагается по адресу /etc/ansible/hosts, но может располагаться в любом месте узла управления и называться как угодно. Become. Здесь указывается пользователь или метод повышения привилегий для выполнения задачи. Variables. Переменные используются для определения значений, которые можно повторно использовать в плейбуке. Вот несколько примеров определения переменных: Tasks. Единица работы, выполняемая на целевом хосте. Задачи определяются в плейбуке и могут включать в себя различные действия, такие как установка пакетов, изменение файлов конфигурации или запуск и остановка служб. Handlers. Обработчики — это задачи, которые выполняются только при соблюдении определенных условий, например, после внесения изменений. Они часто используются для перезапуска служб или перезагрузки файлов конфигурации после внесения изменений. Обработчики определены в плейбуке и запускаются директивой «уведомить» в задаче. Обработчики определяются так же, как и задачи, но с другим именем. Вот пример: Roles. Роли — это наборы задач и переменных, которые можно повторно использовать в нескольких плейбуках. Templates. Шаблоны — это файлы, которые можно настроить для каждого хоста во время выполнения плейбука. Files. Файлы копируются с управляющего узла на целевые хосты во время выполнения плейбука. Conditional statements. Условные операторы позволяют плейбуку выполнять задачи только при соблюдении определенных условий. Ansible можно установить в любой операционной системе, но в этом руководстве я покажу, как установить Ansible на CentOS 7. Убедитесь, что ваша система CentOS 7 обновлена, выполнив команду: Затем добавьте репозиторий EPEL (Extra Packages for Enterprise Linux), выполнив команду: Затем установите Ansible, запустив команду:   После установки Ansible убедитесь, что установка прошла успешно, выполнив команду: Настройте хосты Ansbile Отредактируйте конфигурацию хостов с помощью этой команды vi/etc/ansible/hosts, затем добавьте управляемые IP-серверы в этот файл конфигурации: Настройте аутентификацию на основе ключей SSH Это создаст файл открытого ключа (~/.ssh/id_rsa.pub) и файл закрытого ключа (~/.ssh/id_rsa) в вашем домашнем каталоге. Скопируйте открытый ключ на управляемые узлы. root — это имя пользователя на управляемом узле, а 192.1.10.123 и 191.1.10.124 — IP-адрес управляемого узла. Проверьте SSH-соединение Вы сможете войти в управляемый узел без запроса пароля. Проверьте, может ли Ansible подключаться к управляемым хостам. Если все настроено правильно, вы должны увидеть вывод, подобный следующему: В целях демонстрации примера использования я покажу вам, как автоматизировать процесс открытия портов брандмауэра 9200 и 5601 для нескольких серверов. В этом сценарии рассматриваемые серверы имеют IP-адреса 192.1.10.123 и 192.1.10.124. Перейдите в /etc/ansible/ и создайте playbook с помощью этой команды vi open-port-playbook.yml и напишите playbook со следующим содержимым: - name: Configure Firewall Эта строка определяет имя плейбука Ansible. hosts: server Эта строка указывает имя группы инвентаризации Ansible, которая содержит серверы, куда будет выполняться плейбук. Это 192.1.10.123 и 192.1.10.124,  мы настроили их в /etc/ansible/hosts. become: true Эта строка указывает, что Ansible должен повысить привилегии, чтобы стать root-пользователем на целевом сервере, чтобы изменить настройки брандмауэра. tasks: Этот раздел определяет задачи, которые будет выполнять плейбук. - name: Allow Elasticsearch port 9200/tcp Эта строка определяет имя первой задачи, которая должна разрешить доступ к порту 9200/tcp. firewalld: Эта строка указывает модуль Ansible, который будет использоваться для изменения настроек брандмауэра. port: 9200/tcp Эта строка указывает порт и протокол, которые необходимо открыть. permanent: yes Эта строка указывает, что правило брандмауэра будет сохраняться после перезагрузки. state: enabled Эта строка указывает, что правило брандмауэра должно быть включено. zone: public Эта строка указывает зону брандмауэра, в которой будет добавлено правило. name: Allow Kibana port 5601/tcp Эта строка определяет имя второй задачи, которая должна разрешить доступ к порту 5601/tcp. firewalld: Эта строка указывает модуль Ansible, который будет использоваться для изменения настроек брандмауэра. port: 5601/tcp строка указывает порт и протокол, которые должны быть открыты для Kibana. permanent: yes Эта строка указывает, что правило брандмауэра для Kibana будет сохраняться при перезагрузке. Если вы хотите временно открыть порты, установите permanent: no. state: enabled Эта строка указывает, что правило брандмауэра для Kibana должно быть включено. zone: public Эта строка указывает зону брандмауэра, в которой будет добавлено правило для Kibana. Сохраните файл и в том же каталоге выполните следующую команду: Где: ansible-playbook Это команда Ansible для запуска плейбука. -i hosts Указывает файл инвентаризации, содержащий целевой сервер (серверы), на котором будет работать этот плейбук 192.1.10.123 и 192.1.10.124. open-port-playbook.yml Это имя файла плейбука для запуска. Ansible — это мощный инструмент автоматизации с открытым исходным кодом, который позволяет вам управлять несколькими серверами и настраивать их с одной управляющей машины. Он использует простой синтаксис на основе YAML для определения плейбуков, которые автоматизируют широкий спектр задач, включая установку программного обеспечения, настройку служб и управление параметрами сети. С помощью Ansible вы можете сократить число ошибок, совершаемых вручную, повысить эффективность и стандартизировать конфигурацию инфраструктуры во всей организации. Независимо от того, управляете ли вы небольшой или крупной IT-средой, Ansible может помочь вам оптимизировать процессы и повысить производительность. Итак, если вы ищете надежный инструмент автоматизации, который может упростить ваши повседневные операции, определенно стоит рассмотреть Ansible. Узнать больше про плейбуки и деплой с помощью Ansible можно в Слёрме на курсе «Ansible: Infrastructure as Code». Старт потока — 5 июня. Записаться на курс 👉 на нашем сайте.