В постоянно меняющемся мире разработки программного обеспечения эффективное управление удаленными серверами имеет решающее значение. Будь то системный администратор, инженер-программист или разработчик программного обеспечения, возможность запуска команд Linux на удаленных серверах – это обычная задача.
Тогда Fabric, высокоуровневая Python библиотека, предназначенная для удаленного выполнения команд Linux по SSH становится незаменимым инструментом для всех, кому необходимо управлять удаленными системами, используя возможности Python.
Что такое Fabric?
Fabric – это универсальная библиотека Python, которая упрощает процесс выполнения команд shell на удаленных серверах через SSH-соединения. Изначально она была разработана Джеффом Форсье (Jeff Forcier), а затем стала проектом с открытым исходным кодом.
Она предоставляет высокоуровневый Python-интерфейс для работы с удаленными системами, позволяя автоматизировать задачи, развертывать код и управлять конфигурациями на нескольких серверах без особых усилий.
Почему стоит использовать Fabric?
Есть несколько веских причин выбрать Fabric для выполнения удаленных команд:
- Python подход – Fabric придерживается философии Python что позволяет разработчикам и системным администраторам легко писать сценарии на уже знакомом им языке.
- SSH и Paramiko – Fabric использует библиотеку Paramiko для работы с SSH-соединениями, что обеспечивает безопасный и надежный способ удаленного выполнения команд.
- Task-Based Workflow – Fabric поощряет подход к удаленному выполнению команд, ориентированный на задачи. Вы определяете задачи, которые по сути являются функциями Python, а Fabric заботится об их выполнении на удаленных серверах.
- Случаи использования – Fabric является универсальным инструментом, подходящим для широкого спектра задач, включая развертывание приложений, управление конфигурацией сервера и выполнение задач по обслуживанию системы.
Как установить средство автоматизации Fabric в Linux
Важной особенностью fabric является то, что на удаленных машинах, которые необходимо администрировать, должен быть установлен только стандартный сервер OpenSSH.
Для начала работы необходимо установить определенные требования на сервере, с которого вы администрируете удаленные серверы.
- Fabric* легко устанавливается с помощью менеджера пакетов pip, но вы также можете выбрать стандартный менеджер пакетов yum, dnf или apt/apt-get для установки пакета fabric, который обычно называется fabric или python-fabric.
Установка Fabric в системах RHEL
В дистрибутивах на базе RHEL, таких как CentOS Stream, Rocky Linux и AlmaLinux для установки пакета fabric необходимо установить и включить в системе репозиторий EPEL.
sudo dnf install epel-release sudo dnf install fabric
Установка Fabric в системах Debian
В дистрибутивах на базе Debian, таких как Ubuntu и Linux Mint пользователи могут просто выполнить команду apt для установки пакета fabric, как показано на рисунке:
sudo apt install fabric
Установка Fabric с помощью PiP
Если пакет Fabric недоступен в репозиториях вашей системы, для его установки можно воспользоваться программой pip, как показано на рисунке.
sudo yum install python3-pip [On RedHat based systems] sudo dnf install python3-pip [On Fedora 22+ versions] sudo apt install python3-pip [On Debian based systems]
После успешной установки pip можно воспользоваться программой pip для получения последней версии пакета fabric, как показано на рисунке:
pip3 install fabric
Как использовать Fabric для автоматизации задач администрирования Linux
Начнем с того, как использовать Fabric. В процессе установки в каталог PATH вашей системы был добавлен скрипт Python под названием fab
. Сценарий fab
выполняет все задачи при использовании Fabric.
Запуск команд Linux локально
По традиции, для начала необходимо создать Python-файл под названием fabfile.py
с помощью вашего любимого текстового редактора. Помните, что вы можете дать этому файлу другое имя по своему усмотрению, но путь к файлу должен быть указан следующим образом:
fab --fabfile /path/to/the/file.py
Fabric использует fabfile.py
для запуска задач, fabfile
должен находиться в том же каталоге, где выполняется инструмент Fabric.
Пример 1: Сначала создадим базовый Hello World
.
vi fabfile.py
Добавим в файл следующие строки кода.
def hello(): print('Hello world, Tecmint community')
Сохраним файл и выполним команду ниже.
Теперь рассмотрим пример файла fabfile.py для выполнения команды uptime на локальной машине.
Пример 2: Откройте новый файл fabfile.py следующим образом:
vi fabfile.py
Вставьте в него следующие строки кода.
#! /usr/bin/env python from fabric.api import local def uptime(): local('uptime')
Затем сохраните файл и выполните следующую команду:
fab uptime
Удаленный запуск команд Linux по SSH
В Fabric API используется словарь конфигурации, который в Python является эквивалентом ассоциативного массива, известного как env
, в котором хранятся значения, управляющие действиями Fabric.
Список env.hosts
– это список серверов, на которых вы хотите запускать Fabric*задачи. Если ваша сеть имеет адресацию *192.168.0.0 и вы хотите управлять хостами 192.168.0.2 и 192.168.0.6 с помощью вашего fabfile, вы можете настроить env.hosts следующим образом:
#!/usr/bin/env python from fabric.api import env env.hosts = [ '192.168.0.2', '192.168.0.6' ]
Приведенная выше строка кода только указывает хосты, на которых будут выполняться задачи Fabric, но не делает ничего больше. Поэтому вы можете определить некоторые задачи, Fabric предоставляет набор функций, которые вы можете использовать для взаимодействия с удаленными машинами.
Хотя существует множество функций, наиболее часто используемыми являются:
- run – выполнение команды shell на удаленной машине.
- local – выполнение команды на локальной машине.
- sudo – выполнение команды shell на удаленной машине с правами root.
- get – загрузка одного или нескольких файлов с удаленной машины.
- put – загрузка одного или нескольких файлов на удаленную машину.
Пример 3: Для отправки сообщения на несколько машин создайте fabfile.py
, как показано ниже.
#!/usr/bin/env python from fabric.api import env, run env.hosts = ['192.168.0.2','192.168.0.6'] def echo(): run("echo -n 'Hello, you are tuned to Tecmint ' ")
Для выполнения заданий выполните следующую команду:
fab echo
Пример 4: Вы можете усовершенствовать созданную ранее команду fabfile.py
для выполнения команды uptime на локальной машине, чтобы она выполняла команду uptime, а также проверяла использование диска с помощью команды df на нескольких машинах следующим образом:
#!/usr/bin/env python from fabric.api import env, run env.hosts = ['192.168.0.2','192.168.0.6'] def uptime(): run('uptime') def disk_space(): run('df -h')
Сохраните файл и выполните следующую команду:
fab uptime fab disk_space
Автоматическая установка стека LAMP на удаленный Linux-сервер
Пример 4: Рассмотрим пример развертывания сервера *LAMP*(Linux, Apache, MySQL/MariaDB и PHP) на удаленном Linux-сервере.
Мы напишем функцию, которая позволит установить LAMP удаленно с правами root.
Для RHEL/CentOS и Fedora
#!/usr/bin/env python from fabric.api import env, run env.hosts = ['192.168.0.2','192.168.0.6'] def deploy_lamp(): run ("yum install -y httpd mariadb-server php php-mysql")
Для Debian/Ubuntu и Linux Mint
#!/usr/bin/env python from fabric.api import env, run env.hosts = ['192.168.0.2','192.168.0.6'] def deploy_lamp(): sudo("apt-get install -q apache2 mysql-server libapache2-mod-php php-mysql")
Сохраните файл и выполните следующую команду:
fab deploy_lamp
Примечание: Из-за большого объема выходных данных мы не можем создать скринкаст (анимированный gif) для этого примера.
Теперь вы можете автоматизировать задачи управления Linux-сервером с помощью Fabric и его возможностей и примеров, приведенных выше…
Полезные опции Fabric
- Вы можете выполнить команду
fab --help
для просмотра полезной информации и длинного списка доступных опций командной строки. - Важная опция
--fabfile=PATH
, которая поможет вам указать другой файл модуля Python для импорта, отличный отfabfile.py
. - Чтобы указать имя пользователя для подключения к удаленным хостам, используйте опцию
--user=USER
. - Для использования пароля для аутентификации и/или*sudo* используйте опцию
--password=PASSWORD
. - Для вывода подробной информации о команде NAME используйте опцию
--display=NAME
. - Для просмотра форматов используйте опцию
--list
, варианты: короткий, обычный, вложенный, используйте опцию--list-format=FORMAT
. - Для вывода списка возможных команд и выхода включите опцию
--list
. - Для вывода цветного сообщения об ошибке используйте опцию
--colorize-errors
. - Для просмотра номера версии программы и выхода используйте опцию
--version
.
Заключение
Fabric – это мощная библиотека Python, которая оптимизирует удаленное выполнение команд через SSH, обеспечивая удобный Pythonic-подход. Способность упрощать сложные задачи и автоматизировать управление системой делает ее ценным инструментом для системных администраторов, разработчиков и специалистов DevOps.
Управляете ли вы одним сервером или организуете масштабное развертывание, Fabric поможет вам выполнить работу эффективно и результативно.
Комментарии (0)