В постоянно меняющемся мире разработки программного обеспечения эффективное удаленное управление сервером критично. Будь вы системным администратором, программным инженером или разработчиком программного обеспечения, выполнение команд Linux на удаленных серверах – это обычная задача.
Здесь на помощь приходит Fabric, высокоуровневая библиотека Python, разработанная для выполнения команд Linux удаленно по протоколу SSH, делая его необходимым инструментом для тех, кто нуждается в управлении удаленными системами, используя мощь Python.
Что такое Fabric?
Fabric – это многофункциональная библиотека Python, упрощающая процесс выполнения команд оболочки на удаленных серверах по SSH-соединениям. Изначально она была разработана Джеффом Форсье, а затем стала проектом с открытым исходным кодом.
Она предоставляет высокоуровневый, питоновский интерфейс для работы с удаленными системами, позволяя автоматизировать задачи, развертывать код и управлять конфигурациями на нескольких серверах без усилий.
Почему использовать Fabric?
Есть несколько убедительных причин выбрать Fabric для выполнения ваших потребностей в выполнении удаленных команд:
- Питонический подход – Fabric придерживается философии Python, что облегчает написание скриптов разработчиками и системными администраторами на уже знакомом им языке.
- SSH и Paramiko – Fabric полагается на библиотеку Paramiko для управления SSH-соединениями, что обеспечивает безопасный и надежный способ удаленного выполнения команд.
- Рабочий процесс на основе задач – Fabric поощряет задачно-ориентированный подход к выполнению удаленных команд. Вы определяете задачи, которые по сути являются функциями Python, а Fabric берет на себя их выполнение на удаленных серверах.
- Сценарии использования – Fabric – это универсальный инструмент, подходящий для широкого круга сценариев использования, включая развертывание приложений, управление конфигурациями серверов и выполнение задач по обслуживанию системы.
В этом руководстве мы рассмотрим шаги по внедрению и началу использования Fabric для улучшения администрирования серверов для групп серверов.
Как установить средство автоматизации Fabric в Linux
Важной характеристикой fabric является то, что удаленные машины, которые вам необходимо управлять, должны иметь установленный стандартный сервер OpenSSH.
Вам нужно установить определенные требования на сервере, с которого вы администрируете удаленные серверы, прежде чем вы сможете начать.
Требования:
- Python 2.5+ с заголовками разработки
- Python-setuptools и pip (необязательно, но предпочтительно) gcc
Fabric легко устанавливается с использованием управляющего пакета pip, но вы также можете предпочесть выбрать свой основной менеджер пакетов yum, dnf или apt/apt-get для установки пакета fabric, обычно называемого fabric или python-fabric.
Установите Fabric в системах RHEL
На распределениях на основе RHEL, таких как CentOS Stream, Rocky Linux и AlmaLinux, вам необходимо установить и включить репозиторий EPEL на системе для установки пакета fabric.
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. В процессе установки был добавлен Python-скрипт под названием 'fab'
в каталог вашей системы PATH. Скрипт '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')
Сохраните файл и запустите следующую команду.
# fab hello

Теперь давайте рассмотрим пример 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
API Fabric использует словарь конфигурации, который является эквивалентом ассоциативного массива 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 – который выполняет команду оболочки на удаленной машине.
- local – который выполняет команду на локальной машине.
- sudo – который выполняет команду оболочки на удаленной машине с привилегиями 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
, варианты: short, normal, nested, используйте опцию--list-format=FORMAT
. - Чтобы распечатать список возможных команд и выйти, включите опцию
--list
. - Вы можете указать расположение файла конфигурации для использования, используя опцию
--config=PATH
. - Чтобы отобразить цветной вывод ошибок, используйте
--colorize-errors
. - Чтобы просмотреть номер версии программы и выйти, используйте опцию
--version
.
Краткое содержание
Fabric – это мощная библиотека Python, которая упрощает выполнение удаленных команд через SSH, предоставляя удобный подход на Python. Ее способность упрощать сложные задачи и автоматизировать системное администрирование делает ее ценным инструментом для системных администраторов, разработчиков и специалистов по DevOps.
Независимо от того, управляете ли вы одним сервером или организуете масштабное развертывание, Fabric поможет вам выполнять работу эффективно и эффективно.
Source:
https://www.tecmint.com/automating-linux-system-administration-tasks/