Если вы являетесь системным администратором, важно иметь согласованный способ управления всеми используемыми серверами и компьютерами. Системы управления конфигурациями могут в значительной степени упростить этот процесс. Они эффективно управляют всеми системами из центрального расположения.
В Linux доступно несколько систем управления конфигурациями. Например, Puppet, Chef, Ansible, Bcfg2, Juju, CFEngine и т. д. В то время как такие инструменты, как Puppet и Chef, имеют тенденцию быть более сложными и продвинутыми, Ansible предлагает простоту и удобство использования. Вам не нужно устанавливать какое-либо дополнительное клиентское ПО на узлы, чтобы Ansible работал. Вместо этого Ansible использует SSH для управления и автоматизации систем. Ansible — это программное обеспечение с открытым исходным кодом. Оно также обладает высокой масштабируемостью, согласованностью и надежностью.
В этом руководстве показано, как установить и настроить Ansible на Ubuntu 20.04.
Ansible на Ubuntu
Ansible может выполнять три типа автоматизации:
-
Предоставление ресурсов: Позволяет развертывать различные серверы в соответствии с потребностями инфраструктуры.
-
Управление конфигурацией: Позволяет выполнять различные изменения конфигурации серверов. Например, запуск и остановку служб, установку приложений и обновлений, внедрение политик безопасности и т. д.
-
Развертывание приложений: Упрощает DevOps благодаря автоматическому развертыванию приложений собственной разработки в продуктивной среде.
Ansible может отлично работать практически в любой IT-среде – будь то хостинговые или традиционные серверы, платформы виртуализации или облако. Он также поддерживает управление различными системами, такими как базы данных, сети, брандмауэры, устройства хранения данных и многие другие. CloudSigma также поддерживает Ansible для нашей облачной инфраструктуры.
Предварительные требования
Для этого руководства нам понадобится пара машин:
-
Управляющий узел: Управляющий узел — это центральный узел, который подключается ко всем хост-узлам, выдает задачи и управляет различными аспектами системы. Управляющим узлом может быть что угодно – локальный компьютер или удаленный сервер.
-
Хост-узел: Хосты Ansible — это машины, которые может автоматизировать управляющий узел Ansible.
Как следует из названия руководства, все эти машины должны быть настроены с Ubuntu 20.04 и последними версиями пакетов. Вот краткое руководство по настройке сервера Ubuntu. Поскольку Ansible использует SSH для подключения к машинам, на всех хост-узлах должны быть правильно настроены SSH-ключи для связи с управляющим узлом. Убедитесь, что на всех хост-узлах публичный SSH-ключ управляющего узла добавлен в файл authentication_keys . Следуйте нашему руководству, чтобы узнать, как создать и добавить SSH-ключи на серверы Linux.
Шаг 1. Установка Ansible
В случае с Ubuntu нет необходимости в какой-либо дополнительной настройке пакетов или репозиториев. Ansible доступен напрямую из официальных репозиториев пакетов Ubuntu. Выполнение любых изменений на уровне системы требует прав администратора — пользователя root или пользователя без прав root, но с привилегиями sudo. Файл sudoers управляет правами sudo для пользователей и групп.
Сначала мы установим Ansible на компьютер, который будет выполнять роль управляющего узла. Чтобы установить Ansible на управляющий узел, выполните следующие команды:
|
1 |
sudo apt update |

|
1 |
sudo apt install ansible -y |

Если вы собираетесь использовать пароль в качестве механизма аутентификации SSH, вам необходимо, чтобы пакет sshpass был установлен:
|
1 |
sudo apt install sshpass |

Шаг 2. Настройка файла инвентаря
В Ansible файл инвентаря содержит информацию обо всех хостах, которыми будет управлять ansible. Это могут быть десятки или сотни серверов, зарегистрированных в файле инвентаря. Серверы также могут быть разделены на группы и подгруппы. Как правило, файл инвентаря используется для определения переменных, которые будут действительны только для конкретных хостов или групп. Это полезный прием при написании плейбуков и шаблонов. Определенные переменные также могут влиять на то, как запускается плейбук.
Ansible поставляется с файлом инвентаря по умолчанию. Сначала откройте этот файл в текстовом редакторе:
|
1 |
sudo vim /etc/ansible/hosts |

По умолчанию файл инвентаря содержит различные примеры для справки. Вот пример с группой под названием servers, содержащей три разных сервера. Переменная ansible_python_interpreter определяет интерпретатор Python для всех hosts, включенных в инвентарь. С помощью директивы ansible_user, мы можем объявить учетную запись пользователя, под которой Ansible будет подключаться:
|
1 2 3 4 5 6 7 |
[servers] server_1 ansible_host=<server_1_ip> ansible_user=<server_1_username> server_2 ansible_host=<server_2_ip> ansible_user=<server_2_username> server_3 ansible_host=<server_3_ip> ansible_user=<server_3_username> [all:vars] ansible_python_interpreter=/usr/bin/python3 |

Затем сохраните файл и закройте редактор. Чтобы проверить инвентарь, выполните следующую команду:
|
1 |
ansible-inventory --list -y |
Вывод должен выглядеть примерно так:

Шаг 3. Тестирование соединения
После настройки файла инвентаря нам нужно проверить, может ли Ansible подключиться к этим серверам по SSH. Мы можем сделать это, просто отправив ping-запрос на все хост-узлы. С управляющего узла, выполните ping всех хост- узлов:
|
1 |
ansible all -m ping |
Модуль ping проверяет следующее:
-
Доступность хоста
-
Действительность учетных данных SSH
-
Способность хостов запускать модули Ansible с помощью Python
Вывод должен выглядеть примерно так:

Если ответ от конкретного узла — pong, это означает, что узел готов к запуску команд и плейбуков Ansible на сервере.
Шаг 4. Запуск ad-hoc команд
Это необязательный шаг. Однако он может быть полезен для проверки полной функциональности Ansible на удаленных серверах. Этот раздел также может служить базовым введением в дополнительное использование и настройку Ansible. Как только мы подтвердим подключение к узлам, мы сможем начать запуск ad-hoc команд и плейбуков. Любую команду, которую вы обычно запускаете на удаленных серверах, можно запустить с помощью Ansible на всех серверах.
Выполните следующую команду. Она проверит использование диска на всех узлах одновременно:
|
1 |
ansible all -a "df -h" |

Мы также можем выполнять различные модули Ansible с помощью функции ad-hoc команд, точно так же, как мы выполняли модуль ping для тестирования. Например, модуль apt работает с пакетным менеджером APT в Ubuntu. Он может управлять пакетами на удаленном узле Ubuntu. Обратите внимание, что для внесения изменений на системном уровне требуются права root. Удаленный узел должен разрешать вход под root, либо пользователь должен иметь права на выполнение административных задач.
В следующем примере Ansible устанавливает Nginx на все хост-узлы:
|
1 |
ansible all -m apt -a "name=nginx state=latest" -u root |
Как насчет запуска команд только на одном сервере? Мы будем использовать имя сервера (назначенное в файле инвентаря) для указания сервера:
|
1 |
ansible server_1 -a "df -h" -u cloudsigma |

Мы также можем указать несколько серверов. Объявите имя каждого целевого сервера через двоеточие в качестве разделителя:
|
1 |
ansible server_1:server_2:server_3 -a "df -h" -u cloudsigma |

Заключение
В этом руководстве мы показали вам пошаговый метод установки Ansible и настройки файла инвентаря для запуска ad-hoc команд с управляющего узла Ansible. После настройки управляющий узел сможет выполнять любые команды или плейбуки, которые вы захотите запустить на хостах.
Приятной работы!
Комментарии
Комментариев пока нет. Будьте первым.