LINUX

Come configurare Jenkins con SSL dietro Nginx su Ubuntu 20.04

Jenkins è uno strumento di automazione open source per configurare l’intera pipeline di consegna del software: consegna continua. Ciò consente agli sviluppatori di gestire e controllare i processi di consegna del software durante l’intero ciclo di vita, come la creazione, il test e la distribuzione del software in modo affidabile.

Jenkins ha una comunità ampia, vivace e attiva. È scritto in Java. In generale, Jenkins viene eseguito come un’applicazione servlet Java autonoma incorporata. È anche possibile eseguire in contenitori servlet Java come Apache Tomcat o GlassFish.

In questo tutorial, impariamo come configurare Jenkins insieme a SSL dietro Nginx Su Ubuntu 20.04.

Prerequisiti

  • Un server Ubuntu 20.04
  • Un utente con disposizioni sudo
  • Almeno 1 GB di RAM
  • Oracle JDK 11 o successivo installato.

Passaggio 1: installa Jenkins su Ubuntu

Il pacchetto Jenkins disponibile nel repository Ubuntu predefinito è molto probabilmente dietro l’ultima versione. Si consiglia di installare Jenkin dal pacchetto di manutenzione progettato disponibile nel repository ufficiale.

Per prima cosa aggiungeremo la chiave del repository al sistema.

$ wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -

Quando scrivi questa guida, la procedura installerà la versione 2.303.3 a Jenkins

Successivamente, aggiungiamo il repository di pacchetti a sources.list file:

$ sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'

Dovremmo aggiornare la cache del repository

$ sudo apt update

Ora puoi installare Jenkins:

$ sudo apt install jenkins

Quindi avviare il servizio

$ sudo systemctl start jenkins

Configuriamo il servizio per l’avvio automatico con il server

$ sudo systemctl enable jenkins

Puoi controllare lo stato del servizio

$ sudo systemctl status jenkins

Puoi controllare la versione guardando il file /var/lib/jenkins/config.xml

$ cat /var/lib/jenkins/config.xml
<?xml version='1.1' encoding='UTF-8'?> 
<hudson>   
      <disabledAdministrativeMonitors/>   
      <version>2.303.3</version>
...
...
</hudson>

Passaggio 2: configurazione di Nginx con certificato SSL

Ora, poiché utilizzeremo Nginx per la comunicazione tramite proxy, dovremo prima installarlo

$ sudo apt install nginx

Ora devi copiare il certificato nella cartella da utilizzare. Supponiamo che tu abbia già il certificato SSL.

Copiamo il certificato

$ sudo cp jenkins.domain.com.crt /etc/nginx/certs/jenkins.domain.com.crt

Quindi copia le chiavi

$ sudo cp jenkins.domain.com.key /etc/nginx/certs/jenkins.domain.com.key

Per evitare qualsiasi conflitto con la configurazione predefinita di Nginx, rimuoveremo la configurazione predefinita dal file sites-enabled direttore

sudo rm /etc/nginx/sites-enabled/default

Ora creiamo il file di configurazione di Jenkins. Jenkins normalmente utilizza la porta 8080 per l’esecuzione, ma poiché stiamo utilizzando Nginx, ascolterà sulle porte 80 e 443, quindi, con le informazioni sul nome di dominio, inoltrerà la comunicazione internamente sulla porta 8080 a Jenkins.

La configurazione che imposteremo forzerà automaticamente tutte le richieste HTTP su HTTPS

$ sudo vim /etc/nginx/sites-available/jenkins.conf
upstream jenkins.domain.com {
       server SERVER_IP:8080;
}
server {
        server_name jenkins.domain.com;
        listen 80 ;
        access_log /var/log/nginx/jenkins.log;
        return 301 https://$host$request_uri;
}
server {
        server_name jenkins.domain.com;
        listen 443 ssl http2 ;
        access_log /var/log/nginx/jenkins.log;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
        ssl_prefer_server_ciphers on;
        ssl_session_timeout 5m;
        ssl_session_cache shared:SSL:50m;
        ssl_session_tickets off;
        ssl_certificate /etc/nginx/certs/jenkins.domain.com.crt;
        ssl_certificate_key /etc/nginx/certs/jenkins.domain.com.key;
        add_header Strict-Transport-Security "max-age=31536000";
        location / {
                proxy_pass http://jenkins.domain.com;
        }
}

Oltre alla configurazione di Jenkins Nginx, ho aggiunto alcuni dei derivati ​​nginx necessari. Puoi utilizzare e ottimizzare in base ai requisiti del tuo server web.

Ora crea un token del file di configurazione per abilitarlo

$ sudo ln -s /etc/nginx/sites-available/jenkins.conf /etc/nginx/sites-enabled/jenkins.conf

Ora avvia il servizio Nginx

$ sudo systemctl start nginx

Quindi abilitalo all’avvio

$ sudo systemctl enable nginx

Ora puoi testare la tua configurazione Nginx

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Ora riavvia il servizio Nginx per tenere conto della configurazione

$ sudo systemctl restart nginx

Ora apri le porte 80 e 443 sul tuo firewall:

$ sudo ufw allow 80,443/tcp

Inoltre, assicurati di aprire la porta ssh prima di abilitare UFW, altrimenti potresti perdere la connessione ssh se qualcosa va storto

$ sudo ufw allow 'OpenSSH'

Ora abilita UFW se non ancora

$ sudo ufw enable

Passaggio 3: vai a e configura Jenkins

Ora apri il tuo browser con l’URL http://jenkins.domain.com e poi vedrai la pagina di Jenkins che ti chiede una password

Password dell'amministratore della dashboard di Jenkin

Per avere la password è necessario visualizzare il contenuto del file indicato

$ sudo cat /var/lib/jenkins/secrets/initialAdminPassword
88ba484d8cff4150a90683a07c89ea7c

Quindi incolla la password e continua alla pagina successiva. Ora avrai la pagina che ti chiede di installare i plugin predefiniti o selezionare quelli da installare. Nel nostro caso, lasceremo quelli predefiniti

selezionare i plugin da installare

Quindi vedrai il processo di installazione

processo di installazione

Ora devi creare l’utente admin.

Crea un utente amministratore di Jenkins

Ora convalida l’URL di Jenkins.

Ora puoi iniziare a utilizzare Jenkins

Pagina di benvenuto di Jenkins

Conclusione

In questo tutorial, abbiamo imparato come configurare Jenkins con SSL dietro Nginx su Ubuntu 20.04. Puoi iniziare a configurare processi e pipeline di processi CI/CD.

Related Articles

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Back to top button
Close