Com instal·lar Foreman a CentOS 7
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
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 CentOS 7 . 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.
sudo rpm -Uvh https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm
Instal·leu el servidor de bases de dades PostgreSQL.
sudo yum -y install postgresql96-server postgresql96-contrib
Inicialitzar la base de dades.
sudo /usr/pgsql-9.6/bin/postgresql96-setup initdb
initdb
crea un nou clúster de bases de dades PostgreSQL, que és una col·lecció de bases de dades gestionades per una única instància de servidor. Editeu el pg_hba.conf
fitxer per habilitar l'autenticació basada en MD5.
sudo nano /var/lib/pgsql/9.6/data/pg_hba.conf
Cerqueu les línies següents i canvieu els valors peer
i ident
a la METHOD
columna a trust
i md5
, respectivament.
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 ident
# IPv6 local connections:
host all all ::1/128 ident
Un cop actualitzada, la configuració hauria de ser així.
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
Inicieu el servidor PostgreSQL i activeu-lo perquè s'iniciï automàticament en el moment de l'arrencada.
sudo systemctl start postgresql-9.6
sudo systemctl enable postgresql-9.6
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. Canvieu a l'intèrpret d'ordres PostgreSQL executant:
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'usuari de postgres 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.4.1/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.4.1/fly_linux_amd64 -O /usr/bin/fly
Fly és la interfície de línia d'ordres 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
Autoritzeu 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, s'hauria de mostrar la sortida següent.
{"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.
Using Systemd service for managing the application ensures that the application is automatically started on failures and at boot time. The Concourse server does not take data from any configuration file, but it can access the data from environment variables. Instead of setting global environment variables, create a new file to store the environment variables and then pass the variables to the Concourse CI using the Systemd service.
Create a new environment file for Concourse web.
sudo nano /opt/concourse/web.env
Populate the file.
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 username 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 adduser --system 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
After=postgresql-9.6.service
[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
After=concourse-web.service
[Service]
Type=simple
User=root
Group=root
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 by running:
sudo systemctl start concourse-web concourse-worker
To enable the worker and web process to automatically start at boot time, run:
sudo systemctl enable concourse-worker concourse-web
To check the status of services, run:
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 should be simil.
[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.
Adjust your firewall to allow port 8080, on which ATS is running and port 2222, on which TSA is running.
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --zone=public --add-port=2222/tcp --permanent
sudo firewall-cmd --reload
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:
fly -t my-ci login -c http://192.0.2.1:8080
The above command is used for initial login to the server. -t
is used to provide a target name. replace my-ci
with any desired target name. The above command will log in to the default team main
. It will ask for the username and password provided in the environment file.
The output will look like the following.
[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 el servidor web Nginx i Certbot, que és l'aplicació client per a Let's Encrypt CA.
sudo yum -y install certbot-nginx nginx
Inicieu i activeu Nginx perquè s'iniciï automàticament en el moment de l'arrencada:
sudo systemctl start nginx
sudo systemctl enable nginx
Abans que es pugui sol·licitar els certificats, s'han d'habilitar els ports 80 i 443 o els serveis estàndard HTTP i HTTPS mitjançant el tallafoc. Certbot comprovarà l'autoritat del domini abans d'emetre certificats.
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent
El port 8080 ja no s'ha de permetre a través del tallafoc perquè Concourse ara s'executarà al port HTTPS estàndard. Elimineu l'entrada del tallafoc per permetre el port 8080.
sudo firewall-cmd --zone=public --remove-port=8080/tcp --permanent
sudo firewall-cmd --reload
Nota
To obtain certificates from Let's Encrypt CA, the domain for which the certificates are to be generated must be pointed towards the server. If not, make the necessary changes to the DNS records of the domain and wait for the DNS to propagate before making the certificate request again. Certbot checks the domain authority before providing the certificates.
Generar els certificats SSL.
sudo certbot certonly --webroot -w /usr/share/nginx/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 * * 1 /usr/bin/certbot renew --quiet
El treball cron anterior s'executarà tots els dilluns 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/conf.d/concourse-ssl.conf
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.
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 el servidor web 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.
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
Utilitzeu un sistema diferent? Introducció La integració contínua és una pràctica de desenvolupament de programari DevOps que permet als desenvolupadors combinar sovint
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ó