Las tareas repetitivas suelen ser tediosas y acaban consumiendo mucho tiempo y energía. Con el tiempo, se han desarrollado múltiples herramientas de automatización para ayudar a aliviar la molestia de ejecutar trabajos repetitivos. Una de esas herramientas de automatización es Jenkins. Jenkins es un servidor de automatización de código abierto que está diseñado para ayudar a los desarrolladores de software a crear, probar e implementar aplicaciones y, por lo tanto, agilizar el proceso continuo de integración y entrega.
Hemos escrito un artículo anteriormente sobre cómo instalar Jenkins en CentOS 8/RHEL 8. En este artículo, haremos las cosas un poco diferentes y ejecutaremos el contenedor de Jenkins como servicio systemd con docker.
Requisitos previos
Se requieren algunas cosas antes de continuar.
- Docker instalado en su sistema Linux.
- Un usuario normal con privilegios de sudo.
Paso 1) Instalar motor Docker
Para comenzar, debe tener instalado el motor Docker en su sistema. Tenemos un artículo detallado sobre cómo instalar Docker en CentOS 8/RHEL 8. Ejecute el siguiente comando de docker para mostrar la versión de docker
$ sudo docker version
Del fragmento anterior, hemos confirmado que docker está instalado y que estamos ejecutando la versión 19.03.13 de docker.
Paso 2) Crear un usuario de Jenkins
A continuación, crearemos un usuario del sistema 'Jenkins' que administrará el servicio de Jenkins. Pero primero, cree un grupo de sistema para Jenkins:
$ sudo groupadd --system jenkins
Luego cree el usuario del sistema Jenkins
$ sudo useradd -s /sbin/nologin --system -g jenkins jenkins
Y finalmente agregue el usuario de Jenkins al grupo de acopladores como se muestra:
$ sudo usermod -aG docker jenkins
Para confirmar que el usuario de Jenkins se agregó al grupo docker, ejecute el comando id como se muestra
$ id jenkins
La salida será,
[[email protected] ~]$ id jenkins uid=991(jenkins) gid=986(jenkins) groups=986(jenkins),989(docker) [[email protected] ~]$
¡Fantástico! Procedamos y extraigamos una imagen de Jenkins.
Paso 3) Extraiga la imagen de Jenkins del centro de Docker
Invoque el siguiente comando para extraer la imagen de Jenkins más reciente de Docker hub.
$ sudo docker pull jenkins/jenkins:lts
Esto suele tardar unos segundos en una conexión a Internet bastante estable. Una vez descargada, verifique que la imagen de Jenkins esté presente invocando el siguiente comando:
$ sudo docker images | grep jenkins
La salida del comando anterior sería:
[[email protected] ~]$ sudo docker images | grep jenkins jenkins/jenkins lts f669140ba6ec 6 days ago 711MB [[email protected] ~]$
Jenkins requiere un almacenamiento persistente para almacenar datos y reutilizarlos incluso en caso de que se bloquee el contenedor. Por lo tanto, crearemos un directorio de almacenamiento como se muestra.
$ sudo mkdir /var/jenkins $ sudo chown -R 1000:1000 /var/jenkins
Paso 4) Cree un servicio systemd para Jenkins
Usando su editor de texto preferido, cree un archivo systemd de Jenkins como se muestra:
$ sudo vi /etc/systemd/system/jenkins-docker.service
Pegue el siguiente contenido y guarde el archivo.
[Unit] Description=Jenkins Server Documentation=https://jenkins.io/doc/ After=docker.service Requires=docker.service [Service] Type=simple User=jenkins Group=jenkins TimeoutStartSec=0 Restart=on-failure RestartSec=30s ExecStartPre=-/usr/bin/docker kill jenkins-server ExecStartPre=-/usr/bin/docker rm jenkins-server ExecStartPre=/usr/bin/docker pull jenkins/jenkins:lts ExecStart=/usr/bin/docker run --name jenkins-server --publish 8080:8080 --publish 50000:50000 --volume /var/jenkins:/var/jenkins_home jenkins/jenkins:lts SyslogIdentifier=jenkins ExecStop=/usr/bin/docker stop jenkins-server [Install] WantedBy=multi-user.target
Para iniciar el servicio de Jenkins, vuelva a cargar systemd primero y luego inicie Jenkins.
$ sudo systemctl daemon-reload $ sudo systemctl start jenkins-docker
Ahora verifiquemos si Jenkins se está ejecutando. Para ello ejecutaremos:
$ sudo systemctl status jenkins-docker
Estupendo ! Jenkins está funcionando como un servicio systemd. Dado que Jenkins se ejecutará en el puerto 8080, abra el puerto en el firewall como se muestra:
$ sudo firewall-cmd --permanent --add-port=8080/tcp $ sudo firewall-cmd --reload
Para configurar Jenkins, simplemente navegue por la URL del servidor como se muestra
http://ip-del-servidor:8080
Obtendrá la página 'Desbloquear Jenkins' como se muestra. Para continuar, debe proporcionar la contraseña que se encuentra en el archivo que se muestra
[[email protected] ~]$ cat /var/jenkins/secrets/initialAdminPassword 9c61bd823a404056bf0a408f4622aafc [[email protected] ~]$
Una vez hecho esto, haga clic en 'Continuar'
A continuación, seleccione la opción "Instalar complementos sugeridos" como se muestra.
A partir de entonces, cree un usuario administrativo para la cuenta de Jenkins y haga clic en "Guardar y continuar"
El instalador lo guiará a través de los pasos restantes hasta el final. Después de una instalación exitosa, obtendremos el siguiente panel de Jenkins
Y es una envoltura. En esta guía, aprendió a ejecutar Jenkins dentro de un contenedor docker como un servicio systemd.
Leer también : Cómo instalar y configurar Jenkins en Ubuntu 20.04