Cómo instalar el servidor de automatización Jenkins con Apache en Ubuntu
Jenkins es un servidor de automatización bifurcado del proyecto Hudson. Jenkins es una aplicación basada en servidor que se ejecuta en un contenedor Java servlet, y es compatible con muchos sistemas de software SCM (Gestión del Control de Fuentes), como Git, SVN y Mercurial. Jenkins proporciona cientos de plugins para automatizar tu proyecto. Jenkins fue creado por Kohsuke Kawaguchi, publicado por primera vez en 2011 bajo licencia MIT, y es un software libre.
En este tutorial, te mostraré cómo instalar la última versión estable de Jenkins en Ubuntu Server 18.04 LTS (Bionic Beaver). Ejecutaremos Jenkins en nuestro propio nombre de dominio, e instalaremos y configuraremos Jenkins para que se ejecute bajo el proxy inverso del servidor web Apache.
Requisitos previos
- Ubuntu 18.04
- Privilegios de root
¿Qué haremos?
- Instalar Java
- Instala Jenkins
- Instalar y configurar Apache2 como proxy inverso para Jenkins
- Configurar el cortafuegos UFW
- Configurar Jenkins
- Seguridad de Jenkins
- Probar
Paso 1 – Instalar Java
Jenkins es una aplicación basada en Java, por lo que necesitamos instalar Java OpenJDK en el servidor. En este paso, instalaremos Java 8 desde un repositorio PPA que añadiremos primero.
Instala los paquetes software-properties-common, y luego añade el repositorio PPA java OpenJDK.
sudo apt install software-properties-common apt-transport-https -y sudo add-apt-repository ppa:openjdk-r/ppa -y
Ahora instala Java 8 utilizando el comando apt.
sudo apt install openjdk-8-jdk -y
Cuando finalice la instalación, comprueba la versión de java instalada en el sistema.
java -version
Y obtendrás que Java OpenJDK 1.8 ya está instalado en el sistema Ubuntu 18.04.
Nota:
- Si tienes varias versiones de java en tu sistema, cambia la versión de java por defecto utilizando el siguiente comando.
sudo update-alternatives --config java
Paso 2 – Instala Jenkins
Jenkins proporciona un repositorio Ubuntu para los paquetes de instalación y vamos a instalar Jenkins desde este repositorio.
Añade la clave y el repositorio de Jenkins al sistema con el comando que se indica a continuación.
wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add - echo 'deb https://pkg.jenkins.io/debian-stable binary/' | tee -a /etc/apt/sources.list
Ahora actualiza el repositorio e instala Jenkins.
sudo apt update sudo apt install jenkins -y
Cuando finalice la instalación, inicia el servicio Jenkins y añádelo al tiempo de arranque.
systemctl start jenkins systemctl enable jenkins
Jenkins ya está en marcha en el servidor Ubuntu 18.04, ejecutándose en el puerto por defecto ‘8080’. Compruébalo utilizando netstat como se indica a continuación.
netstat -plntu
Y obtendrás el resultado de abajo.
Paso 3 – Instalar y configurar Apache2 como proxy inverso para Jenkins
En este tutorial ejecutaremos Jenkins detrás de un servidor web Apache, configuraremos apache como proxy inverso para Jenkins.
Primero instalaremos Apache y habilitaremos algunos módulos necesarios, y después crearemos el archivo de host virtual con el nombre de dominio jenkins.hakase-labs.io para Jenkins. Utiliza aquí tu propio nombre de dominio y sustitúyelo en todos los archivos de configuración donde aparezca.
Instala el servidor web apache2 desde el repositorio de Ubuntu.
sudo apt install apache2 -y
Una vez completada la instalación, activa los módulos proxy y proxy_http para que podamos configurar apache como servidor frontend/proxy inverso para Jenkins.
a2enmod proxy a2enmod proxy_http
A continuación, crea un nuevo archivo de host virtual para Jenkins en el directorio sites-available.
cd /etc/apache2/sites-available/ vim jenkins.conf
Pega a continuación la configuración del host virtual.
<Virtualhost *:80> ServerName jenkins.hakase-labs.io ProxyRequests Off ProxyPreserveHost On AllowEncodedSlashes NoDecode <Proxy http://localhost:8080/*> Order deny,allow Allow from all </Proxy> ProxyPass / http://localhost:8080/ nocanon ProxyPassReverse / http://localhost:8080/ ProxyPassReverse / http://jenkins.hakase-labs.io/ </Virtualhost>
Guarda y sal, después activa el host virtual de Jenkins con el comando a2ensite.
a2ensite jenkins
Reinicia los servicios de Apache y Jenkins.
systemctl restart apache2 systemctl restart jenkins
La instalación y configuración de apache2 como proxy inverso para Jenkins ha finalizado.
Paso 4 – Configurar el cortafuegos UFW
Antes de habilitar el cortafuegos UFW en el servidor Ubuntu, tenemos que añadir los puertos de servicios básicos como SSH, HTTP y HTTPS.
Añade los servicios SSH, HTTP y HTTPS al cortafuegos ufw.
ufw allow ssh ufw allow http ufw allow https
Ahora inicia y habilita el cortafuegos ufw.
ufw enable
Escribe «y» y pulsa Intro.
El cortafuegos ufw ya está habilitado y se ha añadido el puerto HTTP.
Paso 5 – Configurar Jenkins
Jenkins se está ejecutando en el nombre de dominio‘http://jenkins.hakase-labs.io’. Abre tu navegador web y escribe la URL.
Aparecerá una pantalla que te pedirá que introduzcas la contraseña inicial de administrador. Jenkins ya ha generado una contraseña, así que sólo tenemos que mostrar y copiar los resultados en el cuadro de contraseña.
Muestra la contraseña inicial de admin Jenkins con el comando cat.
cat /var/lib/jenkins/secrets/initialAdminPassword
Pega los resultados en la pantalla y haz clic en «Continuar».
Ahora deberíamos instalar algunos plugins en Jenkins para tener una buena base para su uso posterior. Elige ‘Instalar plugins sugeridos’, haz clic en él.
Instalación de plugins de Jenkins en curso.
Una vez completada la instalación de plugins, necesitamos crear una nueva contraseña de administrador. Escribe tu nombre de usuario, contraseña, correo electrónico, etc. y haz clic en «Guardar y continuar».
Para la configuración de la instancia, escribe el nombre de dominio de Jenkins ‘http://jenkins.hakase-labs.io’ y haz clic en el botón ‘Guardar y finalizar’.
Ahora haz clic en el botón ‘Empezar a utilizar Jenkins’.
Y serás redirigido al panel de administración de Jenkins.
La instalación y configuración de Jenkins se ha completado correctamente
Paso 6 – Seguridad de Jenkins
Desde el panel de administración de Jenkins, tenemos que configurar los ajustes de seguridad estándar para Jenkins, haz clic en «Gestionar Jenkins» y luego en «Configurar Seguridad Global».
Jenkins proporciona varios métodos de autorización en la sección «Control de acceso». Nosotros utilizaremos la ‘Seguridad basada en matrices’, para poder controlar todos los privilegios de los usuarios.
Añade el usuario ‘hakase’ en la casilla ‘Usuario/Grupo’ y haz clic en añadir.
Da al usuario ‘hakase’ todos los privilegios marcando todas las opciones, y haz clic en el botón ‘Guardar’.
Serás redirigido al panel de control, y si hay opción de inicio de sesión, simplemente escribe tu usuario y contraseña de administrador.
Paso 7 – Pruebas
En esta sección, queremos crear un trabajo sencillo para el servidor Jenkins. Crearemos un trabajo sencillo para probar Jenkins y averiguar la carga del servidor con el comando top.
Desde el panel de administración de Jenkins, haz clic en «Crear nuevo trabajo».
Escribe el nombre del trabajo. Aquí utilizaremos ‘Sistema de comprobación’, selecciona ‘Proyecto de estilo libre’ y haz clic en ‘Aceptar’.
Ve a la pestaña «Construir». En «Añadir paso de compilación», selecciona la opción «Ejecutar shell».
Escribe en la casilla el comando que aparece a continuación.
top -b -n 1 | head -n 5
Haz clic en «Guardar».
Ahora estás en la página de la tarea «Sistema de comprobación de proyectos». Haz clic en «Construir ahora» para ejecutar la tarea «Sistema de comprobación».
Una vez ejecutado el trabajo, verás el ‘Historial de construcción’, haz clic en el primer trabajo para ver los resultados.
Aquí tienes los resultados del trabajo ejecutado por Jenkins.
La instalación y configuración de la herramienta de automatización Jenkins con Apache2 como proxy inverso en Ubuntu 18.04 se ha completado con éxito.