Com instal·lar Jenkins a CentOS 7
Jenkins és una popular eina de codi obert CI (integració contínua) que s'utilitza àmpliament per al desenvolupament, desplegament i automatització de projectes. Aquest article es vol
La integració contínua és una pràctica de desenvolupament de programari DevOps que permet als desenvolupadors combinar amb freqüència el codi modificat al repositori compartit moltes vegades al dia. Després de cada fusió, es realitzen compilacions i proves automàtiques per detectar problemes al codi. Permet als desenvolupadors trobar i resoldre els errors ràpidament per millorar la qualitat del programari i oferir-lo de manera continuada. Canviar d'anada i tornada des de Concourse és molt fàcil, ja que conserva tota la seva configuració en fitxers declaratius que es poden comprovar al control de versions. També proporciona una interfície d'usuari web que mostra la informació de compilació de manera interactiva.
Assegureu-vos de substituir totes les ocurrències de 192.0.2.1
i ci.example.com
amb la vostra adreça IP pública de Vultr real i el nom de domini real.
Actualitzeu el vostre sistema base mitjançant la guia Com actualitzar Ubuntu 16.04 . Un cop actualitzat el vostre sistema, procediu a instal·lar PostgreSQL.
PostgreSQL és un sistema de bases de dades relacionals d'objectes. Concourse emmagatzema les seves dades de pipeline en una base de dades PostgreSQL. Afegiu el repositori PostgreSQL.
echo "deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt update
Instal·leu el servidor de bases de dades PostgreSQL.
sudo apt -y install postgresql
Inicieu el servidor PostgreSQL i activeu-lo perquè s'iniciï automàticament en el moment de l'arrencada.
sudo systemctl start postgresql
sudo systemctl enable postgresql
Canvieu la contrasenya de l'usuari PostgreSQL predeterminat.
sudo passwd postgres
Inicieu sessió com a usuari de PostgreSQL:
sudo su - postgres
Creeu un nou usuari de PostgreSQL per a Concourse CI.
createuser concourse
Nota : l' usuari PostgreSQL predeterminat es pot utilitzar per a l'autenticació de la base de dades, però es recomana utilitzar un usuari dedicat per a l'autenticació de la base de dades Concourse en una configuració de producció.
PostgreSQL proporciona un shell per executar consultes a la base de dades. Canvia a l'intèrpret d'ordres PostgreSQL.
psql
Establiu una contrasenya per a l'usuari de la base de dades Concourse que acaba de crear.
ALTER USER concourse WITH ENCRYPTED password 'DBPassword';
Important : substituïu-la DBPassword
per una contrasenya segura. Anoteu la contrasenya, ja que serà necessària més endavant al tutorial.
Creeu una nova base de dades per a Concourse.
CREATE DATABASE concourse OWNER concourse;
Surt de la psql
closca.
\q
Canvia a l'usuari sudo des de l' postgres
usuari actual .
exit
Baixeu la darrera versió de l'executable Concourse i emmagatzemeu-la /usr/bin
perquè es pugui executar directament. La darrera versió dels binaris Concourse i Fly es pot trobar a la pàgina de descàrrega de Concourse . Els nous llançaments són molt freqüents. Substituïu l'enllaç següent pel nou enllaç per a la versió més recent.
sudo wget https://github.com/concourse/concourse/releases/download/v3.10.0/concourse_linux_amd64 -O /usr/bin/concourse
De la mateixa manera, descarregueu l'última versió de l'executable fly i deseu-lo a /usr/bin
.
sudo wget https://github.com/concourse/concourse/releases/download/v3.10.0/fly_linux_amd64 -O /usr/bin/fly
Fly és la interfície de línia d'ordres que s'utilitza per connectar-se a l'API ATC de Concourse CI. Fly està disponible per a diverses plataformes com Linux, Windows i MacOS.
Assigneu permís d'execució als fitxers binaris concourse
i descarregats fly
.
sudo chmod +x /usr/bin/concourse /usr/bin/fly
Comproveu si Concourse i Fly funcionen correctament comprovant la seva versió.
concourse -version
fly -version
Els parells de claus RSA proporcionen una manera de xifrar la comunicació entre els components del Concourse.
Perquè Concourse funcioni, s'han de generar almenys tres parells de claus. Per xifrar les dades de la sessió, genereu un fitxer session_signing_key
. Aquesta clau també la farà servir la TSA per signar les sol·licituds que faci a l'ATC. Per protegir el servidor TSA SSH, genereu un fitxer tsa_host_key
. Finalment, genereu un worker_key
per a cada treballador.
Creeu un directori nou per emmagatzemar les claus i la configuració relacionades amb Concourse CI.
sudo mkdir /opt/concourse
Genereu les claus requerides.
sudo ssh-keygen -t rsa -q -N '' -f /opt/concourse/session_signing_key
sudo ssh-keygen -t rsa -q -N '' -f /opt/concourse/tsa_host_key
sudo ssh-keygen -t rsa -q -N '' -f /opt/concourse/worker_key
Autoritzar la clau pública dels treballadors copiant-ne el contingut al authorized_worker_keys
fitxer.
sudo cp /opt/concourse/worker_key.pub /opt/concourse/authorized_worker_keys
Concourse ofereix dos components separats que s'han d'iniciar: el web i el treballador. Inicieu la web del Concours.
sudo concourse web \
--basic-auth-username admin \
--basic-auth-password StrongPass \
--session-signing-key /opt/concourse/session_signing_key \
--tsa-host-key /opt/concourse/tsa_host_key \
--tsa-authorized-keys /opt/concourse/authorized_worker_keys \
--postgres-user=concourse \
--postgres-password=DBPassword \
--postgres-database=concourse \
--external-url http://192.0.2.1:8080
Canvieu el nom d'usuari i la contrasenya basic-auth
si ho desitja. Assegureu-vos que el camí als fitxers de claus sigui correcte i que es proporcioni el valor correcte per al nom d'usuari i la contrasenya a la configuració de la base de dades PostgreSQL.
Nota : L' ATC escoltarà el port predeterminat 8080
i la TSA escoltarà el port 2222
. Si no es desitja l'autenticació, passeu l' --no-really-i-dont-want-any-auth
opció després d'eliminar les opcions d'autenticació bàsiques.
Un cop iniciat el servidor web, es mostrarà la següent sortida.
{"timestamp":"1503657859.661247969","source":"tsa","message":"tsa.listening","log_level":1,"data":{}}
{"timestamp":"1503657859.666907549","source":"atc","message":"atc.listening","log_level":1,"data":{"debug":"127.0.0.1:8079","http":"0.0.0.0:8080"}}
Atureu el servidor de moment, ja que encara s'han de configurar algunes coses més.
Inicieu el Concourse CI Worker.
sudo concourse worker \
--work-dir /opt/concourse/worker \
--tsa-host 127.0.0.1 \
--tsa-public-key /opt/concourse/tsa_host_key.pub \
--tsa-worker-private-key /opt/concourse/worker_key
L'ordre anterior suposarà que el TSA s'està executant a localhost i escoltant el port predeterminat 2222
.
Tot i que el web i el treballador de Concourse es poden iniciar fàcilment mitjançant les ordres anteriors, es recomana utilitzar Systemd per gestionar el servidor.
L'ús del servei Systemd per gestionar l'aplicació garanteix que l'aplicació s'iniciï automàticament en cas de fallades i en el moment de l'arrencada. El servidor Concourse no pren dades de cap fitxer de configuració, però pot accedir a les dades des de variables d'entorn. En lloc d'establir variables d'entorn globals, creeu un fitxer nou per emmagatzemar les variables d'entorn i, a continuació, passeu les variables al Concourse CI mitjançant el servei Systemd.
Creeu un fitxer d'entorn nou per a Concourse web.
sudo nano /opt/concourse/web.env
Omple el fitxer.
CONCOURSE_SESSION_SIGNING_KEY=/opt/concourse/session_signing_key
CONCOURSE_TSA_HOST_KEY=/opt/concourse/tsa_host_key
CONCOURSE_TSA_AUTHORIZED_KEYS=/opt/concourse/authorized_worker_keys
CONCOURSE_POSTGRES_USER=concourse
CONCOURSE_POSTGRES_PASSWORD=DBPassword
CONCOURSE_POSTGRES_DATABASE=concourse
CONCOURSE_BASIC_AUTH_USERNAME=admin
CONCOURSE_BASIC_AUTH_PASSWORD=StrongPass
CONCOURSE_EXTERNAL_URL=http://192.0.2.1:8080
Change the username and password of the BASIC_AUTH
if desired. Make sure that the path to the key files are correct and make sure that the correct value for username and password in the PostgreSQL database configuration is provided.
Similarly, create an environment file for the worker.
sudo nano /opt/concourse/worker.env
Populate the file.
CONCOURSE_WORK_DIR=/opt/concourse/worker
CONCOURSE_TSA_WORKER_PRIVATE_KEY=/opt/concourse/worker_key
CONCOURSE_TSA_PUBLIC_KEY=/opt/concourse/tsa_host_key.pub
CONCOURSE_TSA_HOST=127.0.0.1
As the environment files contain usernames and passwords, change its permissions so that it cannot be accessed by other users.
sudo chmod 600 /opt/concourse/*.env
Now create a new user for Concourse to run the web environment. This will ensure that the web server is running in an isolated environment.
sudo useradd concourse
Give the concourse user ownership over Concourse CI file's directory.
sudo chown -R concourse:concourse /opt/concourse
Create a new systemd service file for the Concourse web service.
sudo nano /etc/systemd/system/concourse-web.service
Populate the file.
[Unit]
Description=Concourse CI web server
[Service]
Type=simple
User=concourse
Group=concourse
Restart=on-failure
EnvironmentFile=/opt/concourse/web.env
ExecStart=/usr/bin/concourse web
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=concourse_web
[Install]
WantedBy=multi-user.target
Save and close the file. Create a new service file for the Concourse worker service.
sudo nano /etc/systemd/system/concourse-worker.service
Populate the file.
[Unit]
Description=Concourse CI worker process
[Service]
Type=simple
Restart=on-failure
EnvironmentFile=/opt/concourse/worker.env
ExecStart=/usr/bin/concourse worker
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=concourse_worker
[Install]
WantedBy=multi-user.target
The web and worker service can now be started directly.
sudo systemctl start concourse-web concourse-worker
To enable the worker and web process to automatically start at boot time, run the following.
sudo systemctl enable concourse-worker concourse-web
To check the status of services, run the following.
sudo systemctl status concourse-worker concourse-web
If the service is not started, or in the FAILED
state, remove the cache from the /tmp
directory.
sudo rm -rf /tmp/*
Restart the services.
sudo systemctl restart concourse-worker concourse-web
Notice that this time the services have started correctly. The output upon verifying the status of the services will be similar to the following.
[user@vultr ~]$ sudo systemctl status concourse-worker concourse-web
● concourse-worker.service - Concourse CI worker process
Loaded: loaded (/etc/systemd/system/concourse-worker.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2017-08-26 07:27:37 UTC; 55s ago
Main PID: 3037 (concourse)
CGroup: /system.slice/concourse-worker.service
└─3037 /usr/bin/concourse worker
Aug 26 07:27:42 vultr.guest concourse_worker[3037]: {"timestamp":"1503732462.934722900","source":"tsa","message":"t...""}}
Aug 26 07:27:42 vultr.guest concourse_worker[3037]: {"timestamp":"1503732462.941227913","source":"guardian","messag...0"}}
...
● concourse-web.service - Concourse CI web server
Loaded: loaded (/etc/systemd/system/concourse-web.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2017-08-26 07:27:37 UTC; 55s ago
Main PID: 3036 (concourse)
CGroup: /system.slice/concourse-web.service
└─3036 /usr/bin/concourse web
Aug 26 07:27:57 vultr.guest concourse_web[3036]: {"timestamp":"1503732477.925554752","source":"tsa","message":"tsa...ve"}}
Aug 26 07:28:02 vultr.guest concourse_web[3036]: {"timestamp":"1503732482.925430775","source":"tsa","message":"tsa...ve"}}
...
Hint: Some lines were ellipsized, use -l to show in full.
Once the server is started, the web interface of the Concourse CI can be accessed by going to http://192.0.2.1:8080
in any browser. Log in using the username and password provided in the environment file.
To connect to the server using Fly, run the following.
fly -t my-ci login -c http://192.0.2.1:8080
L'ordre anterior s'utilitza per a la sessió inicial al servidor. -t
s'utilitza per proporcionar un nom de destinació. substituïu my-ci
- lo amb qualsevol nom de destinació desitjat. L'ordre anterior iniciarà sessió a l'equip predeterminat main
. Li demanarà el nom d'usuari i la contrasenya proporcionats al fitxer d'entorn.
La sortida es veurà com la següent.
[user@vultr ~]$ fly -t my-ci login -c http://192.0.2.1:8080
logging in to team 'main'
username: admin
password:
target saved
L'inici de sessió objectiu es desarà durant un dia. Després d'això, caducarà.
Per tancar sessió immediatament.
fly -t my-ci logout
Fly es pot utilitzar per iniciar sessió al servidor fora de la xarxa, però només si el servidor té una adreça IP pública i s'hi pot accedir des de fora de la xarxa. El binari de Windows o MacOS es pot descarregar des del lloc de descàrrega o des de la interfície d'usuari web del servidor.
Els inicis de sessió i altra informació enviada a través de la interfície d'usuari web al servidor de Concourse no estan assegurades. La connexió no està xifrada. Es pot configurar un servidor intermediari invers Nginx amb un SSL gratuït de Let's Encrypt.
Instal·leu Nginx.
sudo apt -y install nginx
Inicieu Nginx i activeu-lo perquè s'iniciï automàticament en el moment de l'arrencada.
sudo systemctl start nginx
sudo systemctl enable nginx
Afegiu el repositori Certbot.
sudo add-apt-repository --yes ppa:certbot/certbot
sudo apt-get update
Instal·leu Certbot, que és l'aplicació client de Let's Encrypt CA.
sudo apt -y install certbot
Nota : per obtenir certificats de Let's Encrypt CA, el domini per al qual s'han de generar els certificats s'ha d'apuntar cap al servidor. Si no, feu els canvis necessaris als registres DNS del domini i espereu que el DNS es propagui abans de tornar a fer la sol·licitud de certificat. Certbot verifica l'autoritat del domini abans de proporcionar els certificats.
Generar els certificats SSL.
sudo certbot certonly --webroot -w /var/www/html -d ci.example.com
És probable que els certificats generats s'emmagatzemin al /etc/letsencrypt/live/ci.example.com/
directori. El certificat SSL s'emmagatzemarà com a fullchain.pem
i la clau privada com a privkey.pem
.
Els certificats de Let's Encrypt caduquen en 90 dies, per la qual cosa es recomana que la renovació automàtica dels certificats estigui configurada mitjançant cronjobs. Cron és un servei del sistema que s'utilitza per executar tasques periòdiques.
Obriu el fitxer de treball cron.
sudo crontab -e
Afegiu la línia següent al final del fitxer.
30 5 * * * /usr/bin/certbot renew --quiet
El treball cron anterior s'executarà cada dia a les 5:30 del matí. Si el certificat ha de caducar, es renovarà automàticament.
Creeu un nou host virtual.
sudo nano /etc/nginx/sites-available/concourse
Omple el fitxer.
server {
listen 80;
server_name ci.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443;
server_name ci.example.com;
ssl_certificate /etc/letsencrypt/live/ci.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ci.example.com/privkey.pem;
ssl on;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
ssl_prefer_server_ciphers on;
access_log /var/log/nginx/concourse.access.log;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://localhost:8080;
proxy_read_timeout 90;
proxy_redirect http://localhost:8080 https://ci.example.com;
}
}
Nota : substituïu ci.example.com
-lo pel domini real.
Activeu el fitxer de configuració.
sudo ln -s /etc/nginx/sites-available/concourse /etc/nginx/sites-enabled/concourse
Editeu el fitxer Environment creat per a concourse Web.
sudo nano /opt/concourse/web.env
Canvieu el valor de CONCOURSE_EXTERNAL_URL
i afegiu també dues línies més al final del fitxer.
CONCOURSE_EXTERNAL_URL=https://ci.example.com
CONCOURSE_BIND_IP=127.0.0.1
CONCOURSE_BIND_PORT=8080
Deseu el fitxer i reinicieu Concourse Web, Worker i Nginx.
sudo systemctl restart concourse-worker concourse-web nginx
Totes les dades enviades cap i des del navegador ara estan protegides amb xifratge SSL.
Jenkins és una popular eina de codi obert CI (integració contínua) que s'utilitza àmpliament per al desenvolupament, desplegament i automatització de projectes. Aquest article es vol
Utilitzeu un sistema diferent? Introducció La integració contínua és una pràctica de desenvolupament de programari DevOps que permet als desenvolupadors combinar sovint
Utilitzeu un sistema diferent? Ansible és una eina de codi obert per automatitzar tasques. Gestiona la configuració dels teus servidors Linux i Windows. Funciona
Utilitzeu un sistema diferent? GoCD és un sistema d'automatització i lliurament continu de codi obert. Us permet modelar fluxos de treball complexos mitjançant el seu paral·lel an
Tot i que SaltStack és una gran eina per executar operacions en molts servidors simultàniament, també admet configuracions predeterminades definides per host emmagatzemades en un
Utilitzeu un sistema diferent? Ansible és una eina de codi obert per automatitzar tasques. Gestiona la configuració dels teus servidors Linux i Windows. Funciona
Introducció Drone és una plataforma de proves i lliurament automatitzada i contínua que funciona amb la vostra pròpia infraestructura. Drone admet qualsevol idioma, servei o
Què és un equilibrador de càrrega Els equilibradors de càrrega s'asseuen davant de la vostra aplicació i distribueixen el trànsit entrant en diverses instàncies de la vostra aplicació. Fo
Utilitzeu un sistema diferent? Foreman és una eina gratuïta i de codi obert que us ajuda a configurar i gestionar servidors físics i virtuals. Forema
SaltStack, o Salt, és una solució de gestió de configuració de codi obert popular que es pot utilitzar per implementar execució remota, gestió de configuració, bacallà
Introducció Strider CD és una plataforma de desplegament continu de codi obert. L'aplicació està escrita en Node.js i utilitza MongoDB com a backend d'emmagatzematge. Passada
Introducció Chocolatey aporta la gestió de paquets que facilita l'administració de programari i dependències a Linux a Windows. Pots ràpid i fàcil
Què és Packer? Packer és una eina d'imatges de servidor desenvolupada per HashiCorp. Imatge del servidor; o alternativament, infraestructura immutable; és una alternativa popular
Utilitzeu un sistema diferent? Introducció La integració contínua és una pràctica de desenvolupament de programari DevOps que permet als desenvolupadors combinar sovint
Hi ha moltes maneres d'automatitzar el procés de configuració i configuració d'una caixa. Per qualsevol motiu, si tot el nostre sistema en aquest moment consta de just
Utilitzeu un sistema diferent? Foreman és una eina gratuïta i de codi obert que us ajuda a configurar i gestionar servidors físics i virtuals. Forema
SaltStack és un programa de gestió de configuració basat en Python que està optimitzat per a l'automatització de fitxers de configuració, desplegaments i qualsevol altra cosa.
La Intel·ligència Artificial no està en el futur, és aquí mateix en el present. En aquest bloc Llegiu com les aplicacions d'Intel·ligència Artificial han afectat diversos sectors.
També ets víctima d'atacs DDOS i estàs confós sobre els mètodes de prevenció? Llegiu aquest article per resoldre les vostres consultes.
Potser haureu sentit que els pirates informàtics guanyen molts diners, però us heu preguntat mai com guanyen aquest tipus de diners? anem a discutir.
Vols veure els invents revolucionaris de Google i com aquests invents van canviar la vida de tots els éssers humans actuals? A continuació, llegiu al bloc per veure els invents de Google.
El concepte de cotxes autònoms per sortir a les carreteres amb l'ajuda de la intel·ligència artificial és un somni que tenim des de fa temps. Però malgrat les diverses promeses, no es veuen enlloc. Llegeix aquest blog per saber-ne més...
A mesura que la ciència evoluciona a un ritme ràpid, fent-se càrrec de molts dels nostres esforços, també augmenten els riscos de sotmetre'ns a una singularitat inexplicable. Llegeix, què pot significar per a nosaltres la singularitat.
Els mètodes d'emmagatzematge de les dades que han anat evolucionant poden ser des del naixement de les dades. Aquest bloc tracta l'evolució de l'emmagatzematge de dades a partir d'una infografia.
Llegeix el blog per conèixer de la manera més senzilla les diferents capes de l'Arquitectura Big Data i les seves funcionalitats.
En aquest món digital, els dispositius domèstics intel·ligents s'han convertit en una part crucial de les vides. A continuació, es mostren alguns avantatges sorprenents dels dispositius domèstics intel·ligents sobre com fan que la nostra vida valgui la pena i sigui més senzilla.
Recentment, Apple va llançar macOS Catalina 10.15.4, una actualització de suplements per solucionar problemes, però sembla que l'actualització està causant més problemes que provoquen el bloqueig de les màquines Mac. Llegiu aquest article per obtenir més informació