+ All Categories

Fabric

Date post: 26-Jun-2015
Category:
Upload: italo-rossi
View: 317 times
Download: 3 times
Share this document with a friend
Description:
Palestra sobre Fabric na PythonBrasil[9]
Popular Tags:
31
Fabric Automatizando a manutenção de servidores e o deploy de aplicações de forma simples Ítalo Rossi @italorossi [email protected] 1 sábado, 12 de outubro de 13
Transcript
Page 1: Fabric

Fabric

Automatizando a manutenção de servidores e o deploy de aplicações

de forma simples

Ítalo Rossi@italorossi

[email protected]

1sábado, 12 de outubro de 13

Page 2: Fabric

Ítalo RossiDesenvolvedor, SysAdmin

Co-Founder Evolux

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

2sábado, 12 de outubro de 13

Page 3: Fabric

BM&F

Varejo

Terceirizadores

TV/Internet

Tecnologia

Saúde

Combustíveis

Call CenterACD & Analytics

3sábado, 12 de outubro de 13

Page 4: Fabric

4sábado, 12 de outubro de 13

Page 5: Fabric

Tarefas comuns

Verificação de LoadMonitoração de ProcessoCaptura de LogsInstalação de PacotesCompilaçãoAuditoriasTrace sinalização

5sábado, 12 de outubro de 13

Page 6: Fabric

DesenvolvimentoAtualização do WebserverUpdate de códigoMigração do BancoRestart nos serviços necessáriosExecução de TestesCriação de ambientes de teste

6sábado, 12 de outubro de 13

Page 7: Fabric

SSH + SHELLGo away or I will replace you with a very small shell script!

7sábado, 12 de outubro de 13

Page 8: Fabric

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

8sábado, 12 de outubro de 13

Page 9: Fabric

9sábado, 12 de outubro de 13

Page 10: Fabric

Fabric

10sábado, 12 de outubro de 13

Page 11: Fabric

O que é?

Automatização de tarefas em modo Pythônico!

11sábado, 12 de outubro de 13

Page 12: Fabric

Como funciona

Fabric

SSH Client SSH Server

Servidor

Push

12sábado, 12 de outubro de 13

Page 13: Fabric

Push and Pull

Simples

Interativo

13sábado, 12 de outubro de 13

Page 14: Fabric

Push and Pull

Pull:

Automação

Escalabilidade

14sábado, 12 de outubro de 13

Page 15: Fabric

Shell+SSH

# ssh server 'ifconfig'

15sábado, 12 de outubro de 13

Page 16: Fabric

Task

#!/usr/bin/env pythonfrom fabric.api import *

def show_interfaces(): run("ifconfig")

16sábado, 12 de outubro de 13

Page 17: Fabric

Shell+SSH

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

17sábado, 12 de outubro de 13

Page 18: Fabric

Traduzindo...

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

def deploy(): """Deploy my_project.""" repo_url = "ssh://[email protected]/me/my_project" run("hg clone %s /opt/my_project" % repo_url) with cd("/opt/my_project"): run("./start_my_project")

18sábado, 12 de outubro de 13

Page 19: Fabric

Operações Básicas

local

run

sudo

prompt

put

get

19sábado, 12 de outubro de 13

Page 20: Fabric

run, local, sudo

#!/usr/bin/env pythonfrom fabric.api import *

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

20sábado, 12 de outubro de 13

Page 21: Fabric

get, prompt, put#!/usr/bin/env pythonfrom 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)

21sábado, 12 de outubro de 13

Page 22: Fabric

Argumentos#!/usr/bin/env pythonfrom fabric.api import *

def show_interface(interface='all'): if interface == 'all': run("ifconfig") else: run("ifconfig %s" % interface)

fab show_interface:eth0 -H host

22sábado, 12 de outubro de 13

Page 23: Fabric

Context Managerssettings, hide

#!/usr/bin/env pythonfrom 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.

23sábado, 12 de outubro de 13

Page 24: Fabric

Context Managerscd, prefix

#!/usr/bin/env pythonfrom 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")

24sábado, 12 de outubro de 13

Page 25: Fabric

Decorators#!/usr/bin/env pythonfrom 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('[email protected]:2222')def apt_clean(): run("apt-get clean")

25sábado, 12 de outubro de 13

Page 26: Fabric

File and Directory Management

exists

append

comment

contains

is_link

sed

uncomment

...

from fabric.contrib.files import ...

26sábado, 12 de outubro de 13

Page 27: Fabric

Deploy

27sábado, 12 de outubro de 13

Page 28: Fabric

Parallel

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

28sábado, 12 de outubro de 13

Page 29: Fabric

Life is good with Automation!

29sábado, 12 de outubro de 13

Page 30: Fabric

Perguntas?

30sábado, 12 de outubro de 13

Page 31: Fabric

31sábado, 12 de outubro de 13


Recommended