No mundo em constante mudança do desenvolvimento de software, a gestão eficiente de servidores remotos é crucial. Quer você seja um administrador de sistema, um engenheiro de software ou um desenvolvedor de software, ser capaz de executar comandos Linux em servidores remotos é uma tarefa comum.
É aqui que o Fabric, uma biblioteca de alto nível em Python projetada para executar comandos Linux remotamente por SSH, se torna uma ferramenta indispensável para quem precisa gerenciar sistemas remotos enquanto aproveita o poder do Python.
O que é o Fabric?
O Fabric é uma versátil biblioteca Python que simplifica o processo de executar comandos de shell em servidores remotos por meio de conexões SSH. Foi desenvolvido inicialmente por Jeff Forcier e mais tarde tornou-se um projeto de código aberto.
Ele fornece uma interface Pythonica de alto nível para trabalhar com sistemas remotos, permitindo automatizar tarefas, implantar código e gerenciar configurações em vários servidores sem esforço.
Por que usar o Fabric?
Há várias razões convincentes para escolher o Fabric para suas necessidades de execução de comando remoto:
- Abordagem Pythonica – O Fabric adere à filosofia do Python, facilitando para desenvolvedores e administradores de sistema escreverem scripts em uma linguagem com a qual já estão familiarizados.
- SSH e Paramiko – O Fabric depende da biblioteca Paramiko para lidar com conexões SSH, que fornece uma maneira segura e confiável de executar comandos remotamente.
- Fluxo de Trabalho Baseado em Tarefas – O Fabric incentiva uma abordagem orientada a tarefas para a execução de comandos remotos. Você define tarefas, que são essencialmente funções Python, e o Fabric se encarrega de executá-las em servidores remotos.
- Casos de Uso – O Fabric é uma ferramenta versátil adequada para uma ampla gama de casos de uso, incluindo implantação de aplicativos, gerenciamento de configurações de servidor e execução de tarefas de manutenção do sistema.
Neste guia, abordaremos os passos para introduzir e começar a usar o Fabric para aprimorar a administração de servidores para grupos de servidores.
Como Instalar a Ferramenta de Automação Fabric no Linux
Uma característica importante do fabric é que as máquinas remotas que você precisa administrar só precisam ter o servidor OpenSSH padrão instalado.
Você só precisa ter determinadas exigências instaladas no servidor a partir do qual você está administrando os servidores remotos antes de começar.
Requisitos:
- Python 2.5+ com os cabeçalhos de desenvolvimento
- Python-setuptools e pip (opcional, mas preferido) gcc
Fabric é facilmente instalado usando o gerenciador de pacotes pip, mas você também pode preferir escolher o seu gerenciador de pacotes padrão yum, dnf, ou apt/apt-get para instalar o pacote fabric, geralmente chamado fabric ou python-fabric.
Instale o Fabric em Sistemas RHEL
Em distribuições baseadas em RHEL como CentOS Stream, Rocky Linux e AlmaLinux, você deve ter o repositório EPEL instalado e habilitado no sistema para instalar o pacote fabric.
sudo dnf install epel-release sudo dnf install fabric
Instalar o Fabric em Sistemas Debian
Em distribuições baseadas em Debian como Ubuntu e Linux Mint, os usuários podem simplesmente usar apt para instalar o pacote fabric como mostrado:
sudo apt install fabric
Instalar o Fabric Usando PiP
Se o fabric não estiver disponível nas repositórias do seu sistema, você pode usar o pip para instalá-lo como mostrado.
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]
Depois que o pip for instalado com sucesso, você pode usar o pip para obter a versão mais recente do fabric como mostrado:
pip3 install fabric
Como usar o Fabric para automatizar tarefas de administração do Linux
Vamos começar a aprender a usar o Fabric. Como parte do processo de instalação, um script Python chamado 'fab'
foi adicionado a um diretório no PATH do seu sistema. O script 'fab'
lida com todas as tarefas ao usar o Fabric.
Executar Comandos do Linux Localmente
Por convenção, você precisa começar criando um arquivo Python chamado fabfile.py
usando seu editor de texto favorito. Lembre-se de que você pode dar a este arquivo um nome diferente, se desejar, mas precisará especificar o caminho do arquivo da seguinte forma:
fab --fabfile /path/to/the/file.py
Fabric usa 'fabfile.py'
para executar tarefas, o 'fabfile'
deve estar localizado na mesma pasta onde você executa a Ferramenta Fabric.
Exemplo 1: Vamos criar um Hello World
básico primeiro.
# vi fabfile.py
Adicione essas linhas de código ao arquivo.
def hello(): print('Hello world, Tecmint community')
Salve o arquivo e execute o comando abaixo.
# fab hello

Vamos agora ver um exemplo de um fabfile.py para executar o comando uptime no computador local.
Exemplo 2: Abra um novo fabfile.py da seguinte forma:
# vi fabfile.py
E cole as seguintes linhas de código no arquivo.
#! /usr/bin/env python from fabric.api import local def uptime(): local('uptime')
Em seguida, salve o arquivo e execute o seguinte comando:
# fab uptime

Executar Comandos do Linux Remotamente via SSH
A API Fabric usa um dicionário de configuração que é o equivalente em Python de uma matriz associativa conhecida como env
, que armazena valores que controlam o que o Fabric faz.
O env.hosts
é uma lista de servidores em que você deseja executar tarefas com o Fabric. Se sua rede for 192.168.0.0 e você desejar gerenciar os hosts 192.168.0.2 e 192.168.0.6 com seu fabfile, você pode configurar o env.hosts da seguinte maneira:
#!/usr/bin/env python from fabric.api import env env.hosts = [ '192.168.0.2', '192.168.0.6' ]
A linha de código acima especifica apenas os hosts em que você executará tarefas com o Fabric, mas não faz nada além disso. Portanto, você pode definir algumas tarefas, o Fabric fornece um conjunto de funções que você pode usar para interagir com seus computadores remotos.
Embora existam muitas funções, as mais comumente usadas são:
- run – que executa um comando de shell em um computador remoto.
- local – que executa o comando no computador local.
- sudo – que executa um comando de shell em um computador remoto, com privilégios de root.
- Get – que baixa um ou mais arquivos de um computador remoto.
- Put – que envia um ou mais arquivos para um computador remoto.
Exemplo 3: Para exibir uma mensagem em vários computadores, crie um fabfile.py
como o abaixo.
#!/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 ' ")
Para executar as tarefas, execute o seguinte comando:
# fab echo

Exemplo 4: Você pode melhorar o fabfile.py
que você criou anteriormente para executar o comando de uptime no computador local de modo que ele execute o comando de uptime e também verifique o uso do disco usando o comando df em vários computadores da seguinte maneira:
#!/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')
Salve o arquivo e execute o seguinte comando:
# fab uptime # fab disk_space

Instale automaticamente a pilha LAMP em um servidor Linux remoto
Exemplo 4: Vamos ver um exemplo de implantação de um LAMP (Linux, Apache, MySQL/MariaDB e PHP) em um servidor Linux remoto.
Vamos escrever uma função que permitirá a instalação remota do LAMP usando privilégios de root.
Para RHEL/CentOS e 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")
Para Debian/Ubuntu e 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")
Salve o arquivo e execute o seguinte comando:
# fab deploy_lamp
Nota: Devido à grande saída, não podemos criar um vídeo (gif animado) para este exemplo.
Agora você pode automatizar tarefas de gerenciamento de servidores Linux usando o Fabric e seus recursos e exemplos acima…
Opções Úteis do Fabric
- Você pode executar
fab --help
para visualizar informações úteis e uma longa lista de opções de linha de comando disponíveis. - Uma opção importante
--fabfile=PATH
que ajuda você a especificar um arquivo de módulo Python diferente para importar, além defabfile.py
. - Para especificar um nome de usuário a ser usado ao conectar-se a hosts remotos, use a opção
--user=USER
. - Para usar uma senha para autenticação e/ou sudo, use a opção
--password=PASSWORD
. - Para imprimir informações detalhadas sobre o comando NAME, use a opção
--display=NAME
. - Para visualizar formatos, use a opção
--list
, escolhas: short, normal, nested, use a opção--list-format=FORMAT
. - Para imprimir uma lista de comandos possíveis e sair, inclua a opção
--list
. - Você pode especificar o local do arquivo de configuração a ser usado usando a opção
--config=PATH
. - Para exibir uma saída de erro colorida, use
--colorize-errors
. - Para visualizar o número de versão do programa e sair, use a opção
--version
.
Resumo
Fabric é uma poderosa biblioteca Python que simplifica a execução de comandos remotos via SSH, fornecendo uma abordagem amigável e Pythonica. Sua capacidade de simplificar tarefas complexas e automatizar a administração de sistemas a torna uma ferramenta valiosa para administradores de sistemas, desenvolvedores e profissionais DevOps.
Quer esteja a gerir um único servidor ou a orquestrar uma implementação em grande escala, o Fabric pode ajudá-lo a concluir o trabalho de forma eficiente e eficaz.
Source:
https://www.tecmint.com/automating-linux-system-administration-tasks/