Rundeck, bom para projetos DevOps

Rundeck, bom para projetos 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”.

rundeck 09

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”.

rundeck 08

rundeck 07

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.

 

rundeck 06

 

No campo superior, vamos entrar em “Jobs”, e a partir daí podemos criar a nossa Job.

rundeck 05

Vamos clicar em “Create a new Job”

rundeck 04

 

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.

rundeck 03

Nesse comando, vamos criar um arquivo em /tmp, passando algumas variáveis.

rundeck 01

– ${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.

 

rundeck 01

 

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.

Anterior Conheça um pouco do Ansible Galaxy
Próxima Cluster Hadoop: aprenda a configurar

About author

Edgar Filho
Edgar Filho 3 posts

Edgar da Silva Costa Filho é um sysadmin apaixonado por Linux, com foco na cultura DevOps, Formado em Redes de Computadores pela FIAP. Com 4 anos de experiência profissional em Tecnologia da Informação, atualmente atuando com desenvolvimento em python, infra ágil(Docker, Puppet, Ansible, Git, Jenkins e Rundeck), NoSQL (MongoDB) e também atuando como instrutor, ministrando cursos de Linux e suas mais diversas tecnologias, capacitando equipes de TI em sistemas Linux e soluções Open Source.

View all posts by this author →

Você pode gostar também

O que é DevOps?

DevOps é um termo criado para descrever um conjunto de práticas para integração entre as equipes de desenvolvimento de softwares, operações (infraestrutura ou sysadmin) e de apoio envolvidas (como controle

Prometheus: uma nova proposta de monitoramento

Conheça o Prometheus, ferramenta open source de monitoramento adaptada ao atual modelo de TI focada em serviços e opção aos tradicionais Zabbix/Nagios.

Desenvolvimento 0 Comentários

Codeception: crie testes automatizados para suas APIs

O uso de APIs para uma comunicação padronizada entre aplicações é cada vez mais comum. Ao utilizar APIs testes precisam ser criados para validar seu funcionamento e garantir a comunicação.

4 Comentários

  1. Paulo Fernando da Silva
    junho 08, 00:42 Reply

    Boa noite, Edgar Filho. Estava procurando material sobre Rundeck, e vi: http://blog.4linux.com.br/2017/05/rundeck-automacao/#more-287, gostei da explicação que vc. Apresentou, porém tenho um trabalho para apresentar na faculdade, ; É justamente sobre Rundeck, vc teria algo mais detalhado de como posso elaborar uma rotina de automação , por script, comando… etc… é que eu não consigo fazer ,EX: o laço entre os nodś ….. se vc tiver algun explo pratico eu agradeço…. muito obrigado pela atenção.
    e parabéns…

    • Edgar Filho
      junho 08, 18:16 Reply

      Boa tarde Paulo,

      Obrigado pelo feedback! 😀
      Como você busca exemplos práticos, no nosso curso de Infra Ágil nós abordamos uma automação de deploy, segue o link https://www.4linux.com.br/curso/devops. Recomendo também que você assista os vídeos desse canal no youtube https://youtu.be/RxNSqprG_BU , nos videos ele mostra como interagir com nodes, criar rotinas e utilizar muitos recursos do Rundeck, Abs!

  2. Bruno Dias
    setembro 06, 13:38 Reply

    Edgar, bom dia!

    Qual a limitação para utilizar o RunDeck comercialmente?
    Eu gostaria de utilizar em um projeto que estou criando para um cliente.

    • Edgar Silva
      setembro 25, 22:29 Reply

      Olá Bruno! Desculpe a demora rs

      O rundeck está sob licença “Apache 2.0”, Uma licença permissiva cujas principais condições exigem a preservação dos direitos autorais. Os contribuintes fornecem uma concessão expressa de direitos de patente. Trabalhos licenciados, modificações e trabalhos maiores podem ser distribuídos sob diferentes termos e sem código fonte.

      Permissões:

      – Uso comercial
      – Modificação
      – Distribuição
      – Uso de patente
      – Uso privado

      Para maiores informações, fique a vontade para ler o arquivo mantido no GitHub do Rundeck (https://github.com/rundeck/rundeck/blob/master/LICENSE).

Deixe uma resposta