Поиск по сайту:

Fabric — удаленный запуск команд оболочки через SSH в Linux


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

Именно здесь Fabric, библиотека Python высокого уровня, предназначенная для удаленного выполнения команд Linux через SSH, делает ее незаменимым инструментом для всех, кому необходимо управлять удаленными системами во время работы. используя возможности Python.

Что такое Ткань?

Fabric — это универсальная библиотека Python, которая упрощает процесс выполнения команд оболочки на удаленных серверах через SSH-соединения. Первоначально он был разработан Джеффом Форсье, а позже стал проектом с открытым исходным кодом.

Он предоставляет высокоуровневый Pythonic-интерфейс для работы с удаленными системами, позволяющий легко автоматизировать задачи, развертывать код и управлять конфигурациями на нескольких серверах.

Зачем использовать ткань?

Есть несколько веских причин выбрать Fabric для удаленного выполнения команд:

  • Подход Python. 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

Установите ткань с помощью 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' должен находиться в том же каталоге, где вы выполняете Инструмент для ткани.

Пример 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

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 – запускает команду оболочки на удаленном компьютере.
  • 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, ее функции и примеры, приведенные выше…

Полезные опции ткани

  • Вы можете запустить fab --help, чтобы просмотреть полезную информацию и длинный список доступных параметров командной строки.
  • Важная опция --fabfile=PATH, которая помогает вам указать для импорта другой файл модуля Python, отличный от fabfile.py.
  • Чтобы указать имя пользователя, которое будет использоваться при подключении к удаленным хостам, используйте опцию --user=USER.
  • Чтобы использовать пароль для аутентификации и/или sudo, используйте параметр --password=PASSWORD.
  • Чтобы распечатать подробную информацию о команде NAME, используйте опцию --display=NAME.
  • Для просмотра форматов используйте опцию --list, варианты выбора: короткий, обычный, вложенный, используйте опцию --list-format=FORMAT.
  • Чтобы распечатать список возможных команд и выйти, включите опцию --list.
  • Вы можете указать расположение используемого файла конфигурации, используя параметр --config=PATH.
  • Чтобы отобразить цветной вывод ошибки, используйте --colorize-errors.
  • Чтобы просмотреть номер версии программы и выйти, используйте опцию --version.
Краткое содержание

Fabric – это мощная библиотека Python, которая упрощает удаленное выполнение команд через SSH, обеспечивая удобный подход Pythonic. Его способность упрощать сложные задачи и автоматизировать управление системой делает его ценным инструментом для системных администраторов, разработчиков и специалистов DevOps.

Независимо от того, управляете ли вы одним сервером или организуете крупномасштабное развертывание, Fabric поможет вам выполнить работу эффективно и результативно.