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.

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

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 último, 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!

Como fazer?

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():
    '''Não é só você que vai usar isso! Então documente. Essa função 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 Não é só vc que vai usar isso! Entao documente. Essa função 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 ideia 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 última 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.