Você está aqui: Página Inicial > Tema > TemaTec > Capistrano: ferramenta livre para automação de tarefas em servidores remotos

Notícias

Capistrano: ferramenta livre para automação de tarefas em servidores remotos

TemaTec 232

Francisco Marcelo de Araújo Lima Jr.
Exibir carrossel de imagens É bacharel em Ciência da Computação com ênfase em Análise de Sistemas pela Universidade Salvador (Unifacs). Atualmente está lotado na área de Desenvolvimento da Regional Salvador, que realiza o atendimento de sistemas web da Presidência da República.

É bacharel em Ciência da Computação com ênfase em Análise de Sistemas pela Universidade Salvador (Unifacs). Atualmente está lotado na área de Desenvolvimento da Regional Salvador, que realiza o atendimento de sistemas web da Presidência da República.

Manter serviços ou aplicações no ambiente produtivo, como a execução rotineira de algum procedimento de manutenção em um servidor, ou mesmo a implantação de uma nova versão de aplicação web em múltiplos servidores, pode tornar-se uma atividade custosa se o time responsável pela sustenção da aplicação ou serviço não dispuser de uma ferramenta que os auxilie na execução dessas tarefas de forma ágil, consistente e automatizada. Neste artigo é apresentado Capistrano, uma ferramenta livre para automação de tarefas em servidores remotos e ferramenta de publicação escrita em Ruby. Será demonstrado um exemplo básico de uso, como uma publicação de artefato simples em um servidor web.

A ferramenta 

Capistrano é uma ferramenta escrita em Ruby para automação de tarefas em servidores remotos, além de uma ferramenta de publicação. A ferramenta permite que o código-fonte seja copiado de repositório/controle de versão diretamente no(s) servidor(es) da aplicação, além de executar rotinas pré e pós implantação, como reiniciar o serviço web, limpar arquivos temporários ou executar migrações de banco de dados. Com Capistrano também é possível executar tarefas em múltiplos servidores simultaneamente. A ferramenta também possui suporte para tunelamento de conexões, permitindo o seu uso por trás de VPNs e firewalls. 

Instalação

Por ser escrita em Ruby, é necessário que seu sistema possua um interpretador Ruby. A versão 3.4.0, a mais recente da ferramenta, requer Ruby versão 2.0 ou superior. A ferramenta pode ser instalada como uma biblioteca (gem). No terminal (Shell), com seu ambiente Ruby carregado, execute “gem install capistrano”. Além da ferramenta, este comando também instalará algumas dependências. Ao final da instalação, os seguintes comandos estarão disponíveis no seu sistema: cap, capify e captoinfo.
 Fig 1 - Comandos instalados pela ferramenta

Figura 1 - Comandos instalados pela ferramenta

Receitas

Uma receita é o conjunto de artefatos que diz à ferramenta o que fazer, quais servidores usar e como acessá-los. Além disso, podem incluir qualquer parâmetro específico que seja necessário para a realização de alguma tarefa/ação nesses servidores. Ao executar “cap install”, a ferramenta criará uma estrutura base de arquivos e pastas para que possamos evoluí-la, alterando conforme a necessidade. 

Exemplo de uso da ferramenta

Via Capistrano, uma página HTML (tematec.html), que se encontra versionada em um repositório git (tema/tematec.git), deverá ser publicada em um servidor web (srvwb1) e ao final da publicação, o serviço web será reiniciado. Ao executar “cap install”, são criados os arquivos e as pastas base. Esses artefatos serão utilizados como ponto de partida para criação da “receita” para este exemplo. 

Na pasta “deploy” estão localizados arquivos referentes a cada tipo de ambiente para os quais se deseja que a receita atue. Por padrão, a ferramenta cria para os ambientes “production” (produção) e “staging” (homologação). Esses arquivos devem conter configurações específicas de cada ambiente, como “hostnames”, IPs, usuários, senhas ou configurações especiais para tunelamento etc. No exemplo, será utilizado apenas o “production.rb”. O artefato “staging.rb” foi removido.

 Fig 2 - Estrutura de arquivos e pastas de uma “receita”

Figura 2 - Estrutura de arquivos e pastas de uma “receita” 

No artefato “deploy.rb” são colocadas configurações gerais utilizadas pela ferramenta, como o nome da aplicação/projeto, o repositório aonde a ferramenta buscará o código-fonte, o nível de log desejado, dentre outras. É neste arquivo que também são escritas as “tarefas”, que nada mais são do que blocos nomeados, os quais são preenchidos com sentenças/comandos, que serão executados no(s) servidor(es) quando a tarefa em questão for invocada, seja por linha de comando ou internamente por outra tarefa. A execução de uma tarefa pode ser condicionada à execução prévia de uma ou mais tarefas, formando assim ações encadeadas, resultando no fluxo do que deveria ser realizado no(s) servidore(s). No exemplo, o fluxo é simples, após copiar o arquivo “tematec.html” do repositório, deve-se reiniciar o serviço web (Apache). 

 Fig 3 - Artefato “deploy.rb”

Figura 3 - Artefato “deploy.rb” 

Ao executar “cap production deploy”, a receita é processada, a página HTML é baixada do repositório git e copiada para o servidor no diretório especificado na receita, o valor em “deploy_to”. Ao final do processo, o servidor web é reiniciado.

Fig 4 - Capistrano em execução, publicando e reiniciando o serviço web

Figura 4 - Capistrano em execução, publicando e reiniciando o serviço web

 Na figura abaixo, a página “tematec.html” é visualizada no browser de modo texto “lynx”. 
 Fig 5 - Página HTML, tematec.html, visualizada no lynx

Figura 5 - Página HTML, tematec.html, visualizada no lynx 

 Referências

É bacharel em Ciência da Computação com ênfase em Análise de Sistemas pela Universidade Salvador (Unifacs). Atualmente está lotado na área de Desenvolvimento da Regional Salvador, que realiza o atendimento de sistemas web da Presidência da República.Autor:

Francisco Marcelo de Araújo Lima Júnior é bacharel em Ciência da Computação com ênfase em Análise de Sistemas pela Universidade Salvador (Unifacs). Atualmente está lotado na área de Desenvolvimento da Regional Salvador, que realiza o atendimento de sistemas web da Presidência da República.