Jak nainstalovat a nakonfigurovat Concourse CI na CentOS 7
Používáte jiný systém? Úvod Kontinuální integrace je postup vývoje softwaru DevOps, který umožňuje vývojářům často spojovat th
Nepřetržitá integrace je postup vývoje softwaru DevOps, který vývojářům umožňuje často slučovat upravený kód do sdíleného úložiště mnohokrát denně. Po každém sloučení se provádějí automatická sestavení a testy, aby se zjistily problémy v kódu. Umožňuje vývojářům rychle najít a vyřešit chyby, zlepšit kvalitu softwaru a zajistit nepřetržité dodávky softwaru. Přepínání z Concourse a zpět je velmi snadné, protože uchovává veškerou svou konfiguraci v deklarativních souborech, které lze zkontrolovat ve správě verzí. Poskytuje také webové uživatelské rozhraní, které interaktivně zobrazuje informace o sestavení.
Nezapomeňte nahradit všechny výskyty 192.0.2.1
a ci.example.com
vaší skutečnou veřejnou IP adresou Vultr a skutečným názvem domény.
Aktualizujte svůj základní systém pomocí průvodce Jak aktualizovat CentOS 7 . Jakmile bude váš systém aktualizován, pokračujte v instalaci PostgreSQL.
PostgreSQL je objektově relační databázový systém. Concourse ukládá svá data potrubí do databáze PostgreSQL. Přidejte úložiště 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
Nainstalujte databázový server PostgreSQL.
sudo yum -y install postgresql96-server postgresql96-contrib
Inicializujte databázi.
sudo /usr/pgsql-9.6/bin/postgresql96-setup initdb
initdb
vytvoří nový databázový cluster PostgreSQL, což je kolekce databází spravovaných jednou instancí serveru. Upravte pg_hba.conf
soubor, abyste povolili ověřování založené na MD5.
sudo nano /var/lib/pgsql/9.6/data/pg_hba.conf
Najděte následující řádky a změňte hodnoty peer
a ident
ve METHOD
sloupci na trust
a md5
.
# 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
Po aktualizaci by konfigurace měla vypadat takto.
# 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
Spusťte PostgreSQL server a povolte jeho automatické spouštění při bootování.
sudo systemctl start postgresql-9.6
sudo systemctl enable postgresql-9.6
Změňte heslo pro výchozího uživatele PostgreSQL.
sudo passwd postgres
Přihlaste se jako uživatel PostgreSQL:
sudo su - postgres
Vytvořte nového uživatele PostgreSQL pro Concourse CI.
createuser concourse
Poznámka : Pro autentizaci databáze lze použít výchozího uživatele PostgreSQL, ale pro autentizaci databáze Concourse v produkčním nastavení se doporučuje použít vyhrazeného uživatele.
PostgreSQL poskytuje prostředí pro spouštění dotazů na databázi. Přepněte se do prostředí PostgreSQL spuštěním:
psql
Nastavte heslo pro nově vytvořeného uživatele databáze Concourse.
ALTER USER concourse WITH ENCRYPTED password 'DBPassword';
Důležité : Nahraďte DBPassword
silným heslem. Poznamenejte si heslo, protože bude vyžadováno později v tutoriálu.
Vytvořte novou databázi pro Concourse.
CREATE DATABASE concourse OWNER concourse;
Opusťte psql
shell.
\q
Přepněte na uživatele sudo z aktuálního uživatele postgres.
exit
Stáhněte si nejnovější verzi spustitelného souboru Concourse a uložte jej, abyste /usr/bin
jej mohli přímo spustit. Nejnovější verzi binárních souborů Concourse a Fly lze nalézt na stránce stahování Concourse . Nové verze jsou velmi časté. Nahraďte níže uvedený odkaz novým odkazem na nejnovější verzi.
sudo wget https://github.com/concourse/concourse/releases/download/v3.4.1/concourse_linux_amd64 -O /usr/bin/concourse
Podobně si stáhněte nejnovější verzi spustitelného souboru fly a uložte jej do /usr/bin
.
sudo wget https://github.com/concourse/concourse/releases/download/v3.4.1/fly_linux_amd64 -O /usr/bin/fly
Fly je rozhraní příkazového řádku pro připojení k ATC API Concourse CI. Fly je k dispozici pro více platforem, jako je Linux, Windows a MacOS.
Přidělte staženým concourse
a fly
binárním souborům oprávnění ke spuštění .
sudo chmod +x /usr/bin/concourse /usr/bin/fly
Zkontrolujte, zda Concourse a Fly fungují správně kontrolou jejich verze.
concourse -version
fly -version
Klíčové páry RSA poskytují způsob, jak zašifrovat komunikaci mezi komponentami Concourse.
Aby Concourse fungoval, musí být vygenerovány alespoň tři páry klíčů. Pro šifrování dat relace vygenerujte soubor session_signing_key
. Tento klíč bude TSA také používat k podepisování požadavků, které předá ATC. Chcete-li zabezpečit server TSA SSH, vygenerujte soubor tsa_host_key
. Nakonec vygenerujte worker_key
pro každého pracovníka.
Vytvořte nový adresář pro uložení klíčů a konfigurace související s Concourse CI.
sudo mkdir /opt/concourse
Vygenerujte požadované klíče.
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
Autorizujte veřejný klíč pracovníků zkopírováním jeho obsahu do authorized_worker_keys
souboru:
sudo cp /opt/concourse/worker_key.pub /opt/concourse/authorized_worker_keys
Concourse poskytuje dvě samostatné součásti, které je třeba spustit, web a pracovník. Spusťte web Concourse.
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
V basic-auth
případě potřeby změňte uživatelské jméno a heslo . Ujistěte se, že cesta k souborům klíčů je správná a že je zadána správná hodnota pro uživatelské jméno a heslo v konfiguraci databáze PostgreSQL.
Poznámka : ATC bude naslouchat výchozímu portu 8080
a TSA bude naslouchat portu 2222
. Pokud ověření není požadováno, předejte --no-really-i-dont-want-any-auth
možnost po odebrání základních možností ověření.
Po spuštění webového serveru by se měl zobrazit následující výstup.
{"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"}}
Prozatím zastavte server, protože je třeba nastavit ještě několik věcí.
Spusťte 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
Výše uvedený příkaz předpokládá, že TSA běží na localhost a naslouchá výchozímu portu 2222
.
Přestože lze web Concourse a pracovníka snadno spustit pomocí výše uvedených příkazů, ke správě serveru se doporučuje použít Systemd.
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
Cílové přihlášení bude uloženo na jeden den. Poté vyprší.
Pro okamžité odhlášení.
fly -t my-ci logout
fly lze použít k přihlášení k serveru mimo síť, ale pouze v případě, že server má veřejnou IP adresu a je přístupný zvenčí sítě. Binární soubor Windows nebo MacOS lze stáhnout z webu pro stahování nebo z webového uživatelského rozhraní serveru.
Přihlášení a další informace zasílané prostřednictvím webového uživatelského rozhraní na server Concourse nejsou zabezpečené. Spojení není šifrováno. Reverzní proxy Nginx lze nastavit pomocí bezplatného SSL Let's Encrypt.
Nainstalujte webový server Nginx a Certbot, což je klientská aplikace pro Let's Encrypt CA.
sudo yum -y install certbot-nginx nginx
Spusťte a povolte Nginx, aby se automaticky spustil při spouštění:
sudo systemctl start nginx
sudo systemctl enable nginx
Aby bylo možné požádat o certifikáty, musí být prostřednictvím brány firewall povolen port 80 a 443 nebo standardní služby HTTP a HTTPS. Certbot před vydáním certifikátů zkontroluje autoritu domény.
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent
Port 8080 již nemusí být povolen přes bránu firewall, protože Concourse bude nyní spuštěn na standardním portu HTTPS. Odeberte položku brány firewall, abyste povolili port 8080.
sudo firewall-cmd --zone=public --remove-port=8080/tcp --permanent
sudo firewall-cmd --reload
Poznámka
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.
Vygenerujte certifikáty SSL.
sudo certbot certonly --webroot -w /usr/share/nginx/html -d ci.example.com
Vygenerované certifikáty budou pravděpodobně uloženy v /etc/letsencrypt/live/ci.example.com/
adresáři. SSL certifikát bude uložen jako fullchain.pem
a soukromý klíč bude uložen jako privkey.pem
.
Platnost certifikátů Let's Encrypt vyprší za 90 dní, proto se doporučuje nastavit automatické obnovování certifikátů pomocí cronjobů. Cron je systémová služba, která se používá ke spouštění pravidelných úloh.
Otevřete soubor úlohy cron.
sudo crontab -e
Přidejte následující řádek na konec souboru.
30 5 * * 1 /usr/bin/certbot renew --quiet
Výše uvedená úloha cron bude spouštěna každé pondělí v 5:30. Pokud má platnost certifikátu vypršet, bude automaticky obnoven.
Vytvořte nového virtuálního hostitele.
sudo nano /etc/nginx/conf.d/concourse-ssl.conf
Vyplňte soubor.
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;
}
}
Poznámka : Nahraďte ci.example.com
skutečnou doménou.
Upravte soubor prostředí vytvořený pro web veřejného prostoru.
sudo nano /opt/concourse/web.env
Změňte hodnotu CONCOURSE_EXTERNAL_URL
a také přidejte další dva řádky na konec souboru.
CONCOURSE_EXTERNAL_URL=https://ci.example.com
CONCOURSE_BIND_IP=127.0.0.1
CONCOURSE_BIND_PORT=8080
Uložte soubor a restartujte webový server Concourse Web, Worker a Nginx:
sudo systemctl restart concourse-worker concourse-web nginx
Všechna data odesílaná do a z prohlížeče jsou nyní zabezpečena šifrováním SSL.
Umělá inteligence není v budoucnosti, je zde přímo v současnosti V tomto blogu si přečtěte, jak aplikace umělé inteligence ovlivnily různé sektory.
Jste také obětí DDOS útoků a nemáte jasno v metodách prevence? Chcete-li vyřešit své dotazy, přečtěte si tento článek.
Možná jste slyšeli, že hackeři vydělávají spoustu peněz, ale napadlo vás někdy, jak takové peníze vydělávají? Pojďme diskutovat.
Chcete vidět revoluční vynálezy Google a jak tyto vynálezy změnily život každého dnešního člověka? Pak si přečtěte na blogu a podívejte se na vynálezy od Googlu.
Koncept aut s vlastním pohonem, která vyrazí na silnice s pomocí umělé inteligence, je snem, který už nějakou dobu máme. Ale přes několik slibů nejsou nikde vidět. Přečtěte si tento blog a dozvíte se více…
Jak se věda vyvíjí rychlým tempem a přebírá mnoho našeho úsilí, stoupá také riziko, že se vystavíme nevysvětlitelné singularitě. Přečtěte si, co pro nás může znamenat singularita.
Způsoby ukládání dat se mohou vyvíjet od narození dat. Tento blog se zabývá vývojem ukládání dat na základě infografiky.
Přečtěte si blog, abyste co nejjednodušším způsobem poznali různé vrstvy v architektuře velkých dat a jejich funkce.
V tomto digitálním světě se chytrá domácí zařízení stala klíčovou součástí života. Zde je několik úžasných výhod chytrých domácích zařízení o tom, jak náš život stojí za to žít a zjednodušit jej.
Apple nedávno vydal doplňkovou aktualizaci macOS Catalina 10.15.4, která opravuje problémy, ale zdá se, že aktualizace způsobuje další problémy, které vedou k zablokování počítačů mac. Přečtěte si tento článek a dozvíte se více