Job Scheduler Rundeck no Docker

O Rundeck é uma ferramenta open-source destinada a executar tarefas em lote para diversas máquinas, o Rundeck é muito útil para fazer deploy em um infra com muitas máquinas. Com o Rundeck é possível executar todos os tipos de tarefas remotamente tendo como única necessidade configurar um node no seu dashboard.

Para este container vou utilizar uma imagem de Debian:

[root@notebook ~]# docker run -it --name=tadeu_rundeck -p 4441:4441 debian /bin/bash

No container:

[root@notebook ~]# docker attach tadeu_rundeck

Vamos adicionar o seguinte repositório para instalar o openjdk:

root@07735775385b:~# echo "deb http://ftp.us.debian.org/debian sid main" >> /etc/apt/sources.list
root@07735775385b:~# apt-get install -y openjdk-8-jre

Baixamos o Rundeck:

root@07735775385b:~# wget http://download.rundeck.org/deb/rundeck-2.8.0-1-GA.deb

E instalamos-o:

root@07735775385b:~# dpkg -i rundeck-2.8.0-1-GA.deb

Obs: Caso a instalação “reclame” de alguma dependência é necessário instalar o openssh-client:

root@07735775385b:~# apt-get install openssh-client -y

root@07735775385b:~# apt-get -f install

Para colocar o Rundeck em funcionamento basicamente precisamos alterar dois arquivos:

root@07735775385b:~# cd /etc/rundeck/

root@07735775385b:/etc/rundeck# ls -l
total 44
-rw-r-----. 1 rundeck rundeck  738 Apr 11 00:37 admin.aclpolicy
-rw-r-----. 1 rundeck rundeck 1104 Apr 11 00:37 apitoken.aclpolicy
-rw-r-----. 1 rundeck rundeck  511 Apr 11 00:37 cli-log4j.properties
-rw-r-----. 1 rundeck rundeck 1450 Apr 18 01:58 framework.properties
-rw-r-----. 1 rundeck rundeck  136 Apr 11 00:37 jaas-loginmodule.conf
-rw-r-----. 1 rundeck rundeck 7529 Apr 11 00:37 log4j.properties
-rw-r-----. 1 rundeck rundeck 2863 Apr 18 02:02 profile
-rw-r-----. 1 rundeck rundeck  549 Apr 11 00:37 project.properties
-rw-r-----. 1 rundeck rundeck  986 Apr 11 00:37 realm.properties
-rw-r-----. 1 rundeck rundeck  401 Apr 18 01:58 rundeck-config.properties
drwxr-x---. 2 rundeck rundeck   28 Apr 18 01:41 ssl

O framework.properties:

framework.server.name = tadeu_rundeck
framework.server.hostname = tadeu_rundeck
framework.server.port = 4441
framework.server.url = http://192.168.0.104:4441

E o rundeck-config.properties:

grails.serverURL=http://192.168.0.104:4441

Como subimos o container na porta 4441 precisamos alterar o arquivo profile:

RDECK_HTTP_PORT=${RDECK_HTTP_PORT:-4441}

E startamos o rundeck:

root@07735775385b:~# /etc/init.d/rundeckd start

Em um outro terminal podemos verificar no log se tudo ocorreu bem:

[root@notebook ~]# docker exec tadeu_rundeck tail -f /var/log/rundeck/service.log

WARNING: HTTPS is not enabled, specify -Drundeck.ssl.config=/var/lib/rundeck/server/config/ssl.properties to enable.
2017-04-18 02:02:40.967:INFO:oejs.Server:main: jetty-9.0.7.v20131107
2017-04-18 02:02:42.700:INFO:oejw.StandardDescriptorProcessor:main: NO JSP Support for /, did not find org.apache.jasper.servlet.JspServlet
2017-04-18 02:02:43.504:INFO:/:main: Initializing Spring root WebApplicationContext
INFO  BootStrap: Starting Rundeck 2.8.0-1 (2017-04-11) ...
INFO  BootStrap: using rdeck.base config property: /var/lib/rundeck
INFO  BootStrap: loaded configuration: /etc/rundeck/framework.properties
INFO  BootStrap: RSS feeds disabled
INFO  BootStrap: Preauthentication is disabled
INFO  BootStrap: Rundeck is ACTIVE: executions can be run.
WARN  BootStrap: The JVM default encoding is not UTF-8: US-ASCII, you may not see output as expected for multibyte locales. Specify -Dfile.encoding=UTF-8 in the JVM options.
INFO  BootStrap: Rundeck startup finished in 563ms
2017-04-18 02:03:00.644:INFO:/:main: Initializing Spring FrameworkServlet 'grails'
2017-04-18 02:03:00.666:INFO:oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@2f7efd0b{/,file:/var/lib/rundeck/exp/webapp/,AVAILABLE}{/var/lib/rundeck/exp/webapp}
2017-04-18 02:03:00.681:INFO:oejs.ServerConnector:main: Started ServerConnector@4eb6d744{HTTP/1.1}{0.0.0.0:4441}

Em um aba do Browser é só digitar o endereço IP e a porta 4441 e estamos pronto.

Funcionou belezinha, agora vamos dar o commit nessa imagem e enviá-la para nosso repositório do DockerHub:

[root@notebook ~]# docker commit tadeu_rundeck debian/rundeck:2.0 
sha256:23eb3ee1dede9b70df8ed404293569f1b13c8e0d1ea0b7eba5ec5d07c154a416

Logamos:

[root@notebook ~]# docker login 
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: tadeuuuuu
Password: 
Login Succeeded

Vamos passar a tag pra antes do push:

[root@notebook ~]# docker tag 23eb3ee1dede tadeuuuuu/debian_rundeck:2.0

E enviamos para o DockerHub:

[root@notebook ~]# docker push tadeuuuuu/debian_rundeck:2.0 
The push refers to a repository [docker.io/tadeuuuuu/debian_rundeck]
0507c112af31: Pushed 
912656b1a32a: Pushed 
5d6cbe0dbcf9: Pushed 
2.0: digest: sha256:15de10d032ef1a1a7f8f093d261a4598069615de99c3524171dadc11864a162b size: 954

DOCKERFILE

Também podemos executar o Rundeck utilizando o Dockerfile, exemplo:

[root@notebook docker]# mkdir rundeck 

[root@notebook docker]# cd rundeck/

[root@notebook docker]# touch Dockerfile

Inserimos o seguinte conteúdo:

E executamos o build:

[root@notebook rundeck]# docker build -t tadeu_rundeck:1.0 .

Com esses passos criamos uma imagem pronta com todos os passos anteriores para a execução do Rundeck, agora vamos rodar um container utilizando nossa imagem:

[root@notebook rundeck]# docker run -it -p 4440:4440 -e SERVER_URL=http://192.168.10.103:4440 --name rundeck -t tadeu_rundeck:1.0 bash

Se tudo ocorreu bem acessamos nossa aplicação no endereço “192.168.10.103:4440” e voilá.

Referência:
http://rundeck.org/index.html
http://rundeck.org/downloads.html
http://rundeck.org/docs/administration/installation.html#installing-with-launcher
http://rundeck.org/docs/manual/getting-started.html
https://docs.docker.com/engine/reference/builder/
https://www.youtube.com/watch?v=kE3wxQSMaio&t=623s

Job Scheduler Rundeck no Docker
  • Sidnei

    Está faltando a parte referente ao Dockerfile:
    “Inserimos o seguinte conteúdo:”