Как запустить несколько команд на нескольких серверах Linux

Опубликовано: 14 Февраля, 2023

В этой статье мы узнаем, как запускать несколько команд на нескольких серверах Linux. Это была ручная задача, выполненная системными администраторами. Допустим, они внесли некоторые изменения в сервер, и если им нужно внести те же изменения на многих серверах, им нужно будет войти на каждый сервер и неоднократно вносить изменения в каждый из них. Но мы можем запускать несколько команд на нескольких серверах одновременно и автоматизировать их.

Есть много способов сделать это, но мы будем использовать Ansible — бесплатный инструмент с открытым исходным кодом, широко используемый для автоматизации ИТ-процессов.

Установить Ansible

Выполните следующие шаги, чтобы установить Ansible:

Шаг 1: Используйте pip в выбранной вами среде Python, чтобы установить пакет Ansible для текущего пользователя:

python3 -m pip install --user ansible

Шаг 2: Убедитесь, что вы установили Ansible.

ansible --version

Запуск команд на серверах

Шаг 1 : Создайте пару открытого и закрытого ключей для ваших серверов, чтобы вы или ansible могли подключаться к вашим серверам. Нам нужно сгенерировать их, потому что ansible использует ssh-соединение для входа на сервер (ы).

ssh-keygen -t rsa

Шаг 2 : Скопируйте свой открытый ключ на все ваши серверы, чтобы они могли подтвердить, что вы являетесь авторизованным пользователем.

ssh-copy-id -f -i ~/.ssh/id_rsa.pub anurag@192.168.64.5

Шаг 3 : Создайте файл хоста /etc/ansible, который будет содержать IP-адреса ваших серверов или имя хоста. Ansible нужен этот файл, чтобы знать, где он должен выполнять действия.

sudo touch /etc/ansible

Шаг 4 : Добавьте имена хостов или IP-адреса вашего сервера, на которых вы хотите запустить мультипин файла /etc/ansible.

например: Для демонстрационных целей у нас есть 2 сервера приложений и 1 сервер базы данных.

куда

  • Блок [app] — это группа серверов, на которых работает наше приложение.
  • Блок [db] — это группа серверов, на которых работает наша база данных.
  • [серверы: дочерние] — это группа наших серверов приложений и баз данных.
  • [серверы: vars] добавляют переменные в группу серверов, которые будут применяться ко всем серверам внутри серверов и ко всем его дочерним элементам.

Шаг 5 : Запустите команды на серверах

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

ansible servers -i /etc/ansible -m ping

где флаг -i используется для указания файла хоста, который содержит IP-адреса или имя хоста ваших серверов, а -m для модуля.

Как видите, в ответ мы получаем « pong » , что означает, что мы можем подключиться к нашим серверам.

Пример 2: Проверьте имя хоста каждого сервера.

ansible servers -i /etc/ansible -a "hostname"

где флаг -i используется для указания файла хоста, который содержит IP-адреса или имя хоста ваших серверов, и -a для указания аргументов, которые мы хотим запустить на нашем сервере (серверах).

Посмотрите, мы получаем имя хоста всех наших серверов, выполнив одну команду.

Пример 3: Проверка свободной памяти на серверах

ansible servers -i /etc/ansible -a "free -m"

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