Automatize processos com Rundeck: Guia completo para DevOps
O Rundeck é uma aplicação java de código aberto que automatiza processos e rotinas nos mais variados ambientes, gerenciado via interface gráfica fica extremamente simples de verificar status de execuções, saídas de erro, etc. Muito utilizado quando se trata de ambientes DevOps, principalmente em uma abordagem de Entrega Contínua, onde em pequenos ciclos novas versões de software são construídas, testadas e liberadas de forma confiável e em curtos períodos de tempo.
A execução de comandos é separada em “Jobs”. Entenda como uma job um comando, um script, uma URL(com um script) ou até mesmo chamada para uma outra job. O fluxo de trabalho dele em relação à execução de comandos pode usar três estratégias:
– Node First, que executa todos os steps em cada node e só depois vai para o próximo.
1. Webserver step 1
2. Webserver step 2
3. Webserver step 3
4. Mailserver step 1
5. Mailserver step 2
6. Mailserver step 3
– Parallel, que executa todos os steps em todos os nodes simultaneamente. – Sequential, executa o primeiro step em todos os nós antes de prosseguir para o próximo step.
1. Webserver step 1
2. Mailserver step 1
3. Webserver step 2
4. Mailserver step 2
5. Webserver step 3
6. Mailserver step 3
Independente da estratégia utilizada, é possível especificar uma ação de tratativa de erros, que se resume em “Parar no step que falhar” ou “Execute os steps faltantes”. Com o Rundeck existe a possibilidade de executarmos a ação localmente, caso haja alguma outra ferramenta responsável pelo deploy (ansible, puppet, chef, etc) ou permite executar em outros nodes (via SSH com o usuário rundeck). Se a execução for em hosts remotos, ele permite que seja criada uma orquestração de acordo com a necessidade, por exemplo: Executar nos nodes por ordem alfabética ascendente e caso algum falhe continue executando em todos os nós restantes. OBS: Para adicionar nodes é necessário alterar o arquivo resources.xml dentro do diretório do seu projeto. (/var/rundeck/projects/${NOMEDOPROJETO}/etc/resources.xml) Outro fator interessante é a possibilidade de enviar notificações por e-mail ou API.
- Em caso de Sucesso;
- Em caso de Falha;
- No momento do Start.
Também é possível agendar aquela job para executar em determinados horários dias da semana e mês (Agendamento pelo próprio Rundeck ou pela Crontab). Além disso ele permite tratar todos os níveis de log. O último campo da página de Jobs é um campo muito importante “UUID”, porque além de ser a identificação única da Job ela é usada para execuções externas.
Instalção do Rundeck
Nesse post farei a instalação no CentOS, pois o mesmo já disponibiliza o pacote pré-compilado via repositório. Primeiramente, vamos instalar o Java.
# yum install java-1.8.0 -Y
Instalar o pacote com o repositório.
# rpm -Uvh http://repo.rundeck.org/latest.rpm
Com o repositório configurado, vamos instalar o pacote do rundeck.
# yum install rundeck -Y
Com o pacote instalado, vamos entrar no diretório de configurações do Rundeck “/etc/rundeck”. Para acessarmos o Rundeck via Web Broswer, vamos tirar to localhost, para isso vamos alterar os arquivos “rundeck-config.properties” e o “framework.properties”. OBS: Apesar de funcionar com IP é sempre recomendado o uso de DNS.
# vim rundeck-config.properties
grails.serverURL=http://192.168.200.10:4440 vim framework.properties framework.server.name = fordevops framework.server.hostname = rundeck.fordevops.com framework.server.port = 4440 framework.server.url = http://rundeck.fordevops.com:4440
Após essas alterações podemos dar restart no serviço.
# systemctl restart rundeckd
Nesse momento já podemos acessar via Web Broswer. http://rundeck.fordevops.com:4440 O usuário padrão é “admin” e a senha “admin”.
Crie seu primeiro projeto
Na tela inicial, o rundeck solicita a criação de um projeto, vamos criar o nosso ! Como exemplo vou criar um projeto “Dexter”.
Abaixo, ele terá as opções de acesso SSH, no nosso caso faremos tudo local, então vou usar as opções padrões, podemos clicar em “Criar”. Depois de criarmos o projeto, caso não haja nenhum outro ele vai entrar nesse projeto pois entende que vamos começar a criar jobs para o mesmo.
No campo superior, vamos entrar em “Jobs”, e a partir daí podemos criar a nossa Job.
Vamos clicar em “Create a new Job”
OBS: O campo grupo é utilizado para separar as jobs e pode ser usado via API. Na parte de Fluxo de Trabalho, vamos usar o padrão pois se trata de uma execução local. Vamos adicionar um step na nossa job, que executará um comando.
Nesse comando, vamos criar um arquivo em /tmp, passando algumas variáveis.
– ${job.execid} – ID da job que será executada.
– ${node.os-name} – Nome da versão do sistema operacional do node.
– ${node.os-version} – Versão do sistema operacional do node.
– ${node.os-arch} – Arquitetura do sistema operacional do node.
Feito isso podemos salvar. Nessa job não vamos alterar nenhum outro parâmetro, então podemos clicar em “Save”.
Em seguida, ele terá criado a job e podemos executá-la.
Ao clicarmos em “Run”, ele retornará o status da execução na tela e podemos validar na máquina se o arquivo realmente foi criado.
step na nossa job, que executará um comando. Nesse comando, vamos criar um arquivo em /tmp, passando algumas variáveis. – ${job.execid} – ID da job que será executada. – ${node.os-name} – Nome da versão do sistema operacional do node. – ${node.os-version} – Versão do sistema operacional do node. – ${node.os-arch} – Arquitetura do sistema operacional do node. Feito isso podemos salvar. Nessa job não vamos alterar nenhum outro parâmetro, então podemos clicar em “Save”. Em seguida, ele terá criado a job e podemos executá-la. Ao clicarmos em “Run”, ele retornará o status da execução na tela e podemos validar na máquina se o arquivo realmente foi criado.
# cat /tmp/output.log
Job 1 executada em um Linux 3.10.0-123.el7.x86_64 amd64 Conclusão O Rundeck é uma ferramenta muito boa e voltada tanto para sysadmins e desenvolvedores, que facilita o processo de deploy e sem dúvidas pode ser peça chave no processo DevOps.
About author
Você pode gostar também
Guia Rápido: Como Fazer Deploy de uma API Python na Cloud Usando Containers
Está aprendendo a programar e gostaria e publicar sua primeira aplicação? Neste post faremos o deploy de uma API python em cloud de maneira simples e rápida utilizando containers!
Conheça o Mundo DevOps: Entrevista com Diego Fernando da Propzmedia
No último dia 3 de setembro aconteceu a prova beta test na sede da 4Linux em SP. Foram mais de 150 inscritos que fizeram a prova de seleção na plataforma
Conheça a experiência de um Arquiteto de Software no mundo DEVOPS
No último dia 3 de setembro aconteceu a prova beta test na sede da 4Linux em SP. Foram mais de 150 inscritos que fizeram a prova de seleção na plataforma