Deploy de aplicação simples, rápido e fácil.

Você recebe a seguinte missão:

Fazer o deploy de uma aplicação XPTO em 10 servidores.

Devops Reactions

J47GJ

Quais são os passos para o deploy?

  1. Acessar cada servidor via ssh, os servidores possuem um usuário de deploy com uma chave pem.
  2. Depois de acessar o servidor, no diretório /srv/XPTO executar o comando “git pull”, já tem o repositório configurado.
  3. Por ultimo, no nosso caso nossa aplicação é feita em PHP então execute o comando service php-fpm restart.

Fazer isso em um servidor é tranquilo você gasta no máximo 5 minutos, agora faz esse processo acima em 10 servidores!

Uma maneira de resolver isso é usando o Fabric, uma ferramenta bem simples que você escreve funções Python com os comandos shell que você precisa executar, o Fabric vai ler a lista de servidores e vai executar a função de deploy em cada um.

Vamos escrever um arquivo fabfile.py que o arquivo padrão que o Fabric vai ler.

from fabric.api import run, env

env.hosts = ['10.0.0.1',
             '10.0.0.2',
             '10.0.0.3',
             '10.0.0.4',
             '10.0.0.5',
             '10.0.0.6',
             '10.0.0.7',
             '10.0.0.8',
             '10.0.0.9',
             '10.0.0.10']
env.user = 'deploy'
env.key_filename = '~/devops/XPTO/deploy.pem'

def deploy_XPTO():
    '''Nao e so vc que vai usar isso! Entao documente. Essa funcao faz deploy!'''

    run('cd /srv/XPTO')
    run('git pull')
    run('service php-fpm restart')

OK, nossa “receita de bolo” de deploy está pronta, vamos executar mas antes vamos ver a descrição do que a receita faz digite fab -l.

# fab -l
Available commands:

deploy_XPTO Nao e so vc que vai usar isso! Entao documente. Essa funcao faz deploy!

Agora vamos executar o deploy.

# fab deploy_XPTO
[10.0.0.1] Executing task 'deploy_XPTO'
[10.0.0.1] run: cd /srv/XPTO
....

E Abracadabra! Eu não preciso dizer que você só vai executar o deploy depois que o código foi muito bem testado!
Mas a idéia aqui é mostrar um jeito de automatizar um deploy em um exemplo bem simples, Fabric faz muito mais que isso, o Instagram usava ele para fazer o deploy antes de ser comprado pelo Facebook veja aqui. E a ultima dica não se intimide com as funções python do Fabric, Python é mais fácil do que você imagina!

Gostou do conteúdo? Tem alguma dúvida? Entre em contato com nossos Especialistas Mandic Cloud, ficamos felizes em ajudá-lo.



Serviços e Plataformas Cloud