Как запустить несколько команд на нескольких серверах Linux
В этой статье мы узнаем, как запускать несколько команд на нескольких серверах 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"
Здесь мы получаем состояние памяти, которое показывает, сколько у серверов общей памяти, используемой памяти, свободной памяти и т. д.