A Jenkins telepítése a CentOS 7 rendszeren
A Jenkins egy népszerű nyílt forráskódú CI (Continuous Integration) eszköz, amelyet széles körben használnak projektfejlesztésre, telepítésre és automatizálásra. Ez a cikk lesz
A Continuous Integration egy DevOps szoftverfejlesztési gyakorlat, amely lehetővé teszi a fejlesztők számára, hogy a módosított kódot naponta többször egyesítsék a megosztott tárolóba. Minden egyesítés után automatikus összeállításokat és teszteket hajtanak végre a kóddal kapcsolatos problémák észlelésére. Lehetővé teszi a fejlesztők számára, hogy gyorsan megtalálják és kijavítsák a hibákat a szoftver minőségének javítása és a szoftver folyamatos szállítása érdekében. A Concourse-ról nagyon egyszerű az ide-oda váltás, mivel az összes konfigurációt deklaratív fájlokban tartja, amelyek ellenőrizhetők a verziókezelésben. Webes felhasználói felületet is biztosít, amely interaktívan jeleníti meg a build információkat.
Feltétlenül cserélje le a tényleges Vultr nyilvános IP-címét és a tényleges domain nevét , 192.0.2.1
és minden előfordulását ci.example.com
.
Frissítse alaprendszerét az Ubuntu 16.04 frissítése útmutató segítségével . A rendszer frissítése után folytassa a PostgreSQL telepítésével.
A PostgreSQL egy objektumrelációs adatbázisrendszer. A Concourse a folyamat adatait egy PostgreSQL adatbázisban tárolja. Adja hozzá a PostgreSQL-tárat.
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
Telepítse a PostgreSQL adatbázis-kiszolgálót.
sudo apt -y install postgresql
Indítsa el a PostgreSQL-kiszolgálót, és engedélyezze, hogy rendszerindításkor automatikusan elinduljon.
sudo systemctl start postgresql
sudo systemctl enable postgresql
Módosítsa az alapértelmezett PostgreSQL-felhasználó jelszavát.
sudo passwd postgres
Jelentkezzen be PostgreSQL felhasználóként:
sudo su - postgres
Hozzon létre egy új PostgreSQL-felhasználót a Concourse CI-hez.
createuser concourse
Megjegyzés : Az alapértelmezett PostgreSQL-felhasználó használható az adatbázis hitelesítésére, de ajánlatos egy dedikált felhasználót használni a Concourse-adatbázis hitelesítéséhez egy éles telepítésben.
A PostgreSQL parancsértelmezőt biztosít a lekérdezések futtatásához az adatbázisban. Váltson a PostgreSQL rendszerhéjra.
psql
Állítson be jelszót az újonnan létrehozott Concourse adatbázis-felhasználó számára.
ALTER USER concourse WITH ENCRYPTED password 'DBPassword';
Fontos : Cserélje DBPassword
ki erős jelszóra. Jegyezze fel a jelszót, mert az oktatóprogram későbbi részében szükség lesz rá.
Hozzon létre egy új adatbázist a Concourse számára.
CREATE DATABASE concourse OWNER concourse;
Lépjen ki a psql
héjból.
\q
Váltás a sudo felhasználóra az aktuális postgres
felhasználóról.
exit
Töltse le a Concourse végrehajtható fájl legfrissebb verzióját, és tárolja /usr/bin
, hogy közvetlenül végrehajtható legyen. A Concourse és Fly binárisok legújabb verziója a Concourse letöltési oldalán található . Nagyon gyakoriak az új kiadások. Cserélje ki az alábbi linket a legújabb verzióhoz tartozó új hivatkozásra.
sudo wget https://github.com/concourse/concourse/releases/download/v3.10.0/concourse_linux_amd64 -O /usr/bin/concourse
Hasonló módon töltse le a fly végrehajtható fájl legújabb verzióját, és tárolja a /usr/bin
.
sudo wget https://github.com/concourse/concourse/releases/download/v3.10.0/fly_linux_amd64 -O /usr/bin/fly
A Fly a Concourse CI ATC API-jához való csatlakozáshoz használt parancssori interfész. A Fly több platformon is elérhető, például Linux, Windows és MacOS.
Rendeljen végrehajtási engedélyt a letöltött concourse
és fly
bináris fájlokhoz.
sudo chmod +x /usr/bin/concourse /usr/bin/fly
Ellenőrizze, hogy a Concourse és a Fly megfelelően működik-e a verziójuk ellenőrzésével.
concourse -version
fly -version
Az RSA kulcspárok lehetőséget biztosítanak a Konkurzus összetevői közötti kommunikáció titkosítására.
A Concourse működéséhez legalább három kulcspárt kell generálni. A munkamenet adatainak titkosításához hozzon létre egy session_signing_key
. Ezt a kulcsot a TSA az ATC-hez intézett kérések aláírására is használja. A TSA SSH-kiszolgáló biztosításához hozzon létre egy tsa_host_key
. Végül generáljon egyet worker_key
minden dolgozóhoz.
Hozzon létre egy új könyvtárat a Concourse CI-vel kapcsolatos kulcsok és konfigurációk tárolására.
sudo mkdir /opt/concourse
Állítsa elő a szükséges kulcsokat.
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
Engedélyezze a dolgozók nyilvános kulcsát a tartalmának a authorized_worker_keys
fájlba másolásával .
sudo cp /opt/concourse/worker_key.pub /opt/concourse/authorized_worker_keys
A Concourse két különálló összetevőt biztosít, amelyeket el kell indítani: a webet és a dolgozót. Indítsa el a Concours webet.
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
basic-auth
Ha szükséges, módosítsa a felhasználónevét és jelszavát . Győződjön meg arról, hogy a kulcsfájlok elérési útja helyes, és győződjön meg arról, hogy a felhasználónév és a jelszó helyes értéke van megadva a PostgreSQL adatbázis konfigurációjában.
Megjegyzés : Az ATC az alapértelmezett portot 8080
, a TSA pedig a portot figyeli 2222
. Ha a hitelesítés nem kívánatos, --no-really-i-dont-want-any-auth
az alapvető hitelesítési beállítások eltávolítása után adja át a lehetőséget.
A webszerver elindítása után a következő kimenet jelenik meg.
{"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"}}
Egyelőre állítsa le a szervert, mert még néhány dolgot be kell állítani.
Indítsa el a Concourse CI Workert.
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
A fenti parancs feltételezi, hogy a TSA a localhost-on fut, és az alapértelmezett portra figyel 2222
.
Bár a Concourse web és worker könnyen elindítható a fenti parancsokkal, a kiszolgáló kezeléséhez a Systemd használata javasolt.
A Systemd szolgáltatás használata az alkalmazás kezelésére biztosítja, hogy az alkalmazás hiba esetén és rendszerindításkor automatikusan elinduljon. A Concourse szerver nem vesz adatokat semmilyen konfigurációs fájlból, de hozzáférhet a környezeti változókból származó adatokhoz. A globális környezeti változók beállítása helyett hozzon létre egy új fájlt a környezeti változók tárolására, majd adja át a változókat a Concourse CI-nek a Systemd szolgáltatás segítségével.
Hozzon létre egy új környezetfájlt a Concourse web számára.
sudo nano /opt/concourse/web.env
Töltse fel a fájlt.
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
The above command is used for the 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
The target login will be saved for a day. After that, it will expire.
To log out immediately.
fly -t my-ci logout
Fly can be used to login to the server outside of the network, but only if the server has a public IP address and it is accessible from outside the network. The Windows or MacOS binary can be downloaded from the download site or from the web UI of the server.
A bejelentkezések és a webes UI-n keresztül a Concourse-kiszolgálóhoz küldött egyéb információk nem védettek. A kapcsolat nincs titkosítva. Egy Nginx fordított proxy beállítható egy Let's Encrypt ingyenes SSL-lel.
Telepítse az Nginx-et.
sudo apt -y install nginx
Indítsa el az Nginx-et, és engedélyezze, hogy rendszerindításkor automatikusan elinduljon.
sudo systemctl start nginx
sudo systemctl enable nginx
Adja hozzá a Certbot adattárat.
sudo add-apt-repository --yes ppa:certbot/certbot
sudo apt-get update
Telepítse a Certbotot, amely a Let's Encrypt CA ügyfélalkalmazása.
sudo apt -y install certbot
Megjegyzés : A Let's Encrypt CA-tól tanúsítványok beszerzéséhez a tartományt, amelyhez a tanúsítványokat elő kell állítani, a szerver felé kell mutatni. Ha nem, hajtsa végre a szükséges módosításokat a tartomány DNS-rekordjain, és várja meg, amíg a DNS továbbterjed, mielőtt ismét kérelmet küldene. A Certbot a tanúsítványok kiadása előtt ellenőrzi a tartományi hatóságot.
Hozza létre az SSL-tanúsítványokat.
sudo certbot certonly --webroot -w /var/www/html -d ci.example.com
A generált tanúsítványok valószínűleg a /etc/letsencrypt/live/ci.example.com/
könyvtárban lesznek tárolva . Az SSL-tanúsítvány a következőként lesz tárolva, fullchain.pem
a privát kulcs pedig mint privkey.pem
.
A Let's Encrypt tanúsítványok 90 napon belül lejárnak, ezért javasolt a tanúsítványok automatikus megújítása a cronjobs használatával. A Cron egy rendszerszolgáltatás, amelyet időszakos feladatok futtatására használnak.
Nyissa meg a cron feladatfájlt.
sudo crontab -e
Adja hozzá a következő sort a fájl végéhez.
30 5 * * * /usr/bin/certbot renew --quiet
A fenti cron-feladat minden nap 5:30-kor indul. Ha a tanúsítvány lejárt, az automatikusan megújul.
Hozzon létre egy új virtuális gazdagépet.
sudo nano /etc/nginx/sites-available/concourse
Töltse fel a fájlt.
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;
}
}
Megjegyzés : Cserélje ci.example.com
ki a tényleges tartományra.
Aktiválja a konfigurációs fájlt.
sudo ln -s /etc/nginx/sites-available/concourse /etc/nginx/sites-enabled/concourse
Szerkessze a Concours Web számára létrehozott környezetfájlt.
sudo nano /opt/concourse/web.env
Módosítsa az értékét, CONCOURSE_EXTERNAL_URL
és adjon hozzá még két sort a fájl végéhez.
CONCOURSE_EXTERNAL_URL=https://ci.example.com
CONCOURSE_BIND_IP=127.0.0.1
CONCOURSE_BIND_PORT=8080
Mentse el a fájlt, és indítsa újra a Concourse Web, Worker és Nginx alkalmazást.
sudo systemctl restart concourse-worker concourse-web nginx
A böngészőbe és a böngészőből küldött összes adat mostantól SSL titkosítással védett.
A Jenkins egy népszerű nyílt forráskódú CI (Continuous Integration) eszköz, amelyet széles körben használnak projektfejlesztésre, telepítésre és automatizálásra. Ez a cikk lesz
Más rendszert használ? Bevezetés A Continuous Integration egy DevOps szoftverfejlesztési gyakorlat, amely lehetővé teszi a fejlesztők számára, hogy gyakran egyesítsék
Más rendszert használ? Az Ansible egy nyílt forráskódú eszköz a feladatok automatizálására. Ez kezeli a Linux és Windows szerverek konfigurációját. Működik
Más rendszert használ? A GoCD egy nyílt forráskódú, folyamatos szállítási és automatizálási rendszer. Lehetővé teszi összetett munkafolyamatok modellezését a párhuzamos an
Míg a SaltStack nagyszerű eszköz a műveletek egyidejű futtatására több szerveren, támogatja a gazdagépenként definiált konfigurációs előbeállításokat is.
Más rendszert használ? Az Ansible egy nyílt forráskódú eszköz a feladatok automatizálására. Ez kezeli a Linux és Windows szerverek konfigurációját. Működik
Bevezetés A Drone egy automatizált, folyamatos tesztelési és szállítási platform, amely az Ön saját infrastruktúráján fut. A drone bármilyen nyelvet, szolgáltatást támogat
Mi az a Load Balancer A terheléselosztók az alkalmazás előtt ülnek, és elosztják a bejövő forgalmat az alkalmazás több példánya között. Fo
Más rendszert használ? A Foreman egy ingyenes és nyílt forráskódú eszköz, amely segít a fizikai és virtuális szerverek konfigurációjában és kezelésében. Forema
A SaltStack vagy a Salt egy népszerű nyílt forráskódú konfigurációkezelési megoldás, amely távoli végrehajtás, konfigurációkezelés, kódolás megvalósítására használható.
Bevezetés A Strider CD egy nyílt forráskódú, folyamatos telepítésű platform. Az alkalmazás Node.js-ben íródott, és a MongoDB-t használja tárolási háttérként. Lépés
Bevezetés A Chocolatey olyan csomagkezelést kínál, amely megkönnyíti a szoftverek és függőségek adminisztrálását Linuxon a Windows rendszeren. Gyorsan és egyszerűen meg tudod csinálni
Mi az a Packer? A Packer egy szerver képalkotó eszköz, amelyet a HashiCorp fejlesztett ki. Szerver képalkotás; vagy változatlan infrastruktúra; népszerű alternatíva
Más rendszert használ? Bevezetés A Continuous Integration egy DevOps szoftverfejlesztési gyakorlat, amely lehetővé teszi a fejlesztők számára, hogy gyakran egyesítsék
A dobozok beállításának és konfigurálásának folyamatát számos módon automatizálhatjuk. Bármilyen okból, ha az egész rendszerünk ezen a ponton csak
Más rendszert használ? A Foreman egy ingyenes és nyílt forráskódú eszköz, amely segít a fizikai és virtuális szerverek konfigurációjában és kezelésében. Forema
A SaltStack egy python alapú konfigurációkezelő program, amely a konfigurációs fájlok, a telepítések és bármi más automatizálására van optimalizálva.
A mesterséges intelligencia nem a jövőben, hanem itt a jelenben. Ebben a blogban Olvassa el, hogyan hatott a mesterséges intelligencia alkalmazások különböző ágazatokra.
Ön is DDOS támadások áldozata, és tanácstalan a megelőzési módszereket illetően? Olvassa el ezt a cikket a kérdések megoldásához.
Talán hallottál már arról, hogy a hackerek sok pénzt keresnek, de elgondolkodtál már azon, hogyan kereshetnek ennyi pénzt? beszéljük meg.
Szeretné látni a Google forradalmi találmányait, és azt, hogy ezek a találmányok hogyan változtatták meg minden mai ember életét? Ezután olvassa el a blogot, és nézze meg a Google találmányait.
Az önvezető autók koncepciója, hogy mesterséges intelligencia segítségével kerüljenek az utakra, már egy ideje álmunk. De számos ígéret ellenére sehol sem látszanak. Olvassa el ezt a blogot, hogy többet megtudjon…
Ahogy a tudomány gyors ütemben fejlődik, átveszi erőfeszítéseink nagy részét, megnő annak a kockázata is, hogy alávetjük magunkat egy megmagyarázhatatlan szingularitásnak. Olvassa el, mit jelenthet számunkra a szingularitás.
Az adatok tárolási módjai az Adatok születése óta alakulhatnak. Ez a blog egy infografika alapján mutatja be az adattárolás fejlődését.
Olvassa el a blogot, hogy a legegyszerűbb módon ismerje meg a Big Data Architecture különböző rétegeit és azok funkcióit.
Ebben a digitálisan vezérelt világban az intelligens otthoni eszközök az élet döntő részévé váltak. Íme az intelligens otthoni eszközök néhány elképesztő előnye, hogyan teszik életünket érdemessé és egyszerűbbé.
Az Apple a közelmúltban kiadott egy kiegészítést a macOS Catalina 10.15.4-hez a problémák megoldására, de úgy tűnik, hogy a frissítés több problémát okoz, ami a Mac gépek blokkolásához vezet. További információért olvassa el ezt a cikket