SlideShare uma empresa Scribd logo
Fabric
Automatizando a manutenção de
servidores e o deploy de aplicações
de forma simples

Ítalo Rossi
@italorossi
italorossib@gmail.com

sábado, 12 de outubro de 13

1
Ítalo Rossi
Desenvolvedor, SysAdmin
Co-Founder Evolux

http://www.linkedin.com/in/italorossi
http://twitter.com/italorossi

sábado, 12 de outubro de 13

2
BM&F
Varejo
Call Center
ACD & Analytics

Terceirizadores
TV/Internet
Tecnologia
Saúde
Combustíveis

sábado, 12 de outubro de 13

3
sábado, 12 de outubro de 13

4
Tarefas comuns
Verificação de Load
Monitoração de Processo
Captura de Logs
Instalação de Pacotes
Compilação
Auditorias
Trace sinalização

sábado, 12 de outubro de 13

5
Desenvolvimento
Atualização do Webserver
Update de código
Migração do Banco
Restart nos serviços necessários
Execução de Testes
Criação de ambientes de teste

sábado, 12 de outubro de 13

6
SSH + SHELL

Go away or I will replace you with a very small shell script!

sábado, 12 de outubro de 13

7
Substitua o shell script que subtituiu alguém
por um script Python!

sábado, 12 de outubro de 13

8
sábado, 12 de outubro de 13

9
Fabric

sábado, 12 de outubro de 13

10
O que é?
Automatização de tarefas em modo Pythônico!

sábado, 12 de outubro de 13

11
Como funciona
Fabric

Servidor

Push

SSH Client

sábado, 12 de outubro de 13

SSH Server

12
Push and Pull

Simples
Interativo

sábado, 12 de outubro de 13

13
Push and Pull
Pull:
Automação
Escalabilidade

sábado, 12 de outubro de 13

14
# ssh server 'ifconfig'

Shell+SSH

sábado, 12 de outubro de 13

15
Task
#!/usr/bin/env python
from fabric.api import *
def show_interfaces():
run("ifconfig")

sábado, 12 de outubro de 13

16
# ssh server 'cd /opt; hg clone ...; cd my_project; ./start_my_project'

Shell+SSH

sábado, 12 de outubro de 13

17
Traduzindo...

#!/usr/bin/env python
from fabric.api import run, cd

def deploy():
"""Deploy my_project."""
repo_url = "ssh://hg@bitbucket.org/me/my_project"
run("hg clone %s /opt/my_project" % repo_url)
with cd("/opt/my_project"):
run("./start_my_project")

sábado, 12 de outubro de 13

18
Operações Básicas
local
run
sudo
prompt
put
get

sábado, 12 de outubro de 13

19
run, local, sudo
#!/usr/bin/env python
from fabric.api import *

Connect!

sábado, 12 de outubro de 13

def whoami():
local("whoami")
run("whoami")
sudo("whoami")

20
get, prompt, put
#!/usr/bin/env python
from fabric.api import *
def get_and_put_file():
file_path = prompt("GET: Which file?")
if file_path:
get(file_path)
file_path = prompt("PUT: Which file?")
if file_path:
put(file_path)

sábado, 12 de outubro de 13

21
Argumentos
#!/usr/bin/env python
from fabric.api import *
def show_interface(interface='all'):
if interface == 'all':
run("ifconfig")
else:
run("ifconfig %s" % interface)

fab show_interface:eth0 -H host

sábado, 12 de outubro de 13

22
Context Managers
settings, hide
#!/usr/bin/env python
from fabric.api import *
def ls_etc():
with settings(
hide('running', 'stdout'),
warn_only=True):
run("ls /etc")

As configurações são revertidas após a saída do with.
sábado, 12 de outubro de 13

23
Context Managers
cd, prefix
#!/usr/bin/env python
from fabric.api import *
def show_pip_freeze():
source_env = "/usr/local/pythonenv/pybr9"
with prefix("source %s/bin/activate" % source_env):
run("pip freeze")
with cd(source_env):
run("pwd")
run("ls")
print "-- After with block --"
run("pwd")

sábado, 12 de outubro de 13

24
Decorators
#!/usr/bin/env python
from fabric.api import *
env.roledefs = {
'development': ['172.31.31.31'],
'production': ['my.prod.server'],
'databases': ['10.10.10.10']
}

@roles('development')
def apt_update():
run("apt-get update")

@hosts('root@172.31.31.31:2222')
def apt_clean():
run("apt-get clean")

sábado, 12 de outubro de 13

25
File and Directory
Management
exists
append
comment
contains
from fabric.contrib.files import ...

is_link
sed
uncomment
...

sábado, 12 de outubro de 13

26
Deploy

sábado, 12 de outubro de 13

27
Parallel
Vídeo mostrando como rodar funções em vários Evolux!

sábado, 12 de outubro de 13

28
Life is good with
Automation!

sábado, 12 de outubro de 13

29
Perguntas?

sábado, 12 de outubro de 13

30
sábado, 12 de outubro de 13

31

Mais conteúdo relacionado

PDF
Turbolinks 5 + PWA (Progressive Web Apps)
PDF
A explosão do Node.js: JavaScript é o novo preto
PDF
Presentta: usando Node.js na prática
PDF
Poco Bibliotecas C++
PDF
Seja um Perl Core Hacker - é (muito) mais fácil do que você pensa
PDF
Um site em 5 minutos com bottle.py
PPT
Como migrar seu ambiente de desenvolvimento para Linux
ODP
Conectando o Android a outros sistemas
Turbolinks 5 + PWA (Progressive Web Apps)
A explosão do Node.js: JavaScript é o novo preto
Presentta: usando Node.js na prática
Poco Bibliotecas C++
Seja um Perl Core Hacker - é (muito) mais fácil do que você pensa
Um site em 5 minutos com bottle.py
Como migrar seu ambiente de desenvolvimento para Linux
Conectando o Android a outros sistemas

Mais procurados (12)

ODP
OpenSolaris a Céu Aberto
PDF
Vagrant + Puppet
PDF
Desenvolvimento Web com Django
PDF
Seja burro e preguiçoso! v2
PDF
Os camaradas Grunt e Bower
PDF
Dicas de sobrevivência de um DBA sem mouse
PPT
MigraçãO
PDF
Php além do LAMP
ODP
Gerenciamento de dependências em python
PDF
Drupal + Rex
PDF
Nossa experiência com TDD
PDF
TDD - Test Driven Development (em PHP)
OpenSolaris a Céu Aberto
Vagrant + Puppet
Desenvolvimento Web com Django
Seja burro e preguiçoso! v2
Os camaradas Grunt e Bower
Dicas de sobrevivência de um DBA sem mouse
MigraçãO
Php além do LAMP
Gerenciamento de dependências em python
Drupal + Rex
Nossa experiência com TDD
TDD - Test Driven Development (em PHP)
Anúncio

Semelhante a Fabric (20)

PDF
Infraestrutura como código com Puppet e Mcollective
PDF
Oficina de infraestrutura como código (apresentando o Puppet)
PDF
Ferramentas para infraestrutura ágil
PDF
Deploy completo de uma aplicação Django
PDF
Construindo um data warehouse com Pentaho e Docker
PDF
Oficina PostgreSQL Básico Latinoware 2012
ODP
Oficina postgresql avançado_consegi2010
PPTX
Debug de cabo a rabo
PPTX
Containers com docker #CPRecife4
PDF
Implementação de Aplicações Móveis e Jogos com Python - Aula 5
PPTX
Deploy automático em projeto PHP - PHPSPIMA 2016
PPTX
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
PDF
Docker - Tutorial for beginners
PDF
Python Brasil[9] - Entrega Contínua
ODP
Funtoo Gnu/Linux: Customização ao extremo
PDF
Docker na vida real
KEY
Python 08
PDF
EIIFRO2014 - Desenvolvimento Colaborativo de Software
PDF
TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...
ODP
Funtoo escla
Infraestrutura como código com Puppet e Mcollective
Oficina de infraestrutura como código (apresentando o Puppet)
Ferramentas para infraestrutura ágil
Deploy completo de uma aplicação Django
Construindo um data warehouse com Pentaho e Docker
Oficina PostgreSQL Básico Latinoware 2012
Oficina postgresql avançado_consegi2010
Debug de cabo a rabo
Containers com docker #CPRecife4
Implementação de Aplicações Móveis e Jogos com Python - Aula 5
Deploy automático em projeto PHP - PHPSPIMA 2016
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Docker - Tutorial for beginners
Python Brasil[9] - Entrega Contínua
Funtoo Gnu/Linux: Customização ao extremo
Docker na vida real
Python 08
EIIFRO2014 - Desenvolvimento Colaborativo de Software
TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...
Funtoo escla
Anúncio

Último (19)

PPTX
Aula 18 - Manipulacao De Arquivos python
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PDF
Aula04-Academia Heri- Tecnologia Geral 2025
PPTX
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PDF
Processos na gestão de transportes, TM100 Col18
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PDF
Apple Pippin Uma breve introdução. - David Glotz
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Aula 18 - Manipulacao De Arquivos python
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
COBITxITIL-Entenda as diferença em uso governança TI
Aula04-Academia Heri- Tecnologia Geral 2025
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
Processos na gestão de transportes, TM100 Col18
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Apple Pippin Uma breve introdução. - David Glotz
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Custos e liquidação no SAP Transportation Management, TM130 Col18
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26

Fabric