Fabric

546 views
452 views

Published on

Palestra sobre Fabric na PythonBrasil[9]

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
546
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
11
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Fabric

  1. 1. 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
  2. 2. Í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
  3. 3. BM&F Varejo Call Center ACD & Analytics Terceirizadores TV/Internet Tecnologia Saúde Combustíveis sábado, 12 de outubro de 13 3
  4. 4. sábado, 12 de outubro de 13 4
  5. 5. 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
  6. 6. 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
  7. 7. SSH + SHELL Go away or I will replace you with a very small shell script! sábado, 12 de outubro de 13 7
  8. 8. Substitua o shell script que subtituiu alguém por um script Python! sábado, 12 de outubro de 13 8
  9. 9. sábado, 12 de outubro de 13 9
  10. 10. Fabric sábado, 12 de outubro de 13 10
  11. 11. O que é? Automatização de tarefas em modo Pythônico! sábado, 12 de outubro de 13 11
  12. 12. Como funciona Fabric Servidor Push SSH Client sábado, 12 de outubro de 13 SSH Server 12
  13. 13. Push and Pull Simples Interativo sábado, 12 de outubro de 13 13
  14. 14. Push and Pull Pull: Automação Escalabilidade sábado, 12 de outubro de 13 14
  15. 15. # ssh server 'ifconfig' Shell+SSH sábado, 12 de outubro de 13 15
  16. 16. Task #!/usr/bin/env python from fabric.api import * def show_interfaces(): run("ifconfig") sábado, 12 de outubro de 13 16
  17. 17. # ssh server 'cd /opt; hg clone ...; cd my_project; ./start_my_project' Shell+SSH sábado, 12 de outubro de 13 17
  18. 18. 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
  19. 19. Operações Básicas local run sudo prompt put get sábado, 12 de outubro de 13 19
  20. 20. 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
  21. 21. 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
  22. 22. 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
  23. 23. 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
  24. 24. 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
  25. 25. 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
  26. 26. 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
  27. 27. Deploy sábado, 12 de outubro de 13 27
  28. 28. Parallel Vídeo mostrando como rodar funções em vários Evolux! sábado, 12 de outubro de 13 28
  29. 29. Life is good with Automation! sábado, 12 de outubro de 13 29
  30. 30. Perguntas? sábado, 12 de outubro de 13 30
  31. 31. sábado, 12 de outubro de 13 31

×