Как да инсталирате Jenkins на CentOS 7
Jenkins е популярен инструмент за CI (непрекъсната интеграция) с отворен код, който се използва широко за разработване, внедряване и автоматизация на проекти. Тази статия ще
Непрекъснатата интеграция е практика за разработка на софтуер DevOps, която позволява на разработчиците често да обединяват модифицирания код в споделеното хранилище много пъти на ден. След всяко сливане се извършват автоматични компилации и тестове за откриване на проблеми в кода. Той позволява на разработчиците да намират и разрешават бързо грешките, за да подобрят качеството на софтуера и да осигурят непрекъсната доставка на софтуера. Превключването насам-натам от Concourse е много лесно, тъй като запазва цялата си конфигурация в декларативни файлове, които могат да бъдат проверени в контрола на версиите. Той също така предоставя уеб потребителски интерфейс, който показва интерактивно информацията за изграждане.
Не забравяйте да замените всички поява на 192.0.2.1
и ci.example.com
с вашия действителен публичен IP адрес на Vultr и действителното име на домейн.
Актуализирайте базовата си система с помощта на ръководството Как да актуализирате Ubuntu 16.04 . След като вашата система бъде актуализирана, продължете да инсталирате PostgreSQL.
PostgreSQL е система за обектна релационна база данни. Concourse съхранява своите тръбопроводни данни в PostgreSQL база данни. Добавете хранилището на 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
Инсталирайте сървъра на база данни PostgreSQL.
sudo apt -y install postgresql
Стартирайте PostgreSQL сървъра и го активирайте да стартира автоматично при стартиране.
sudo systemctl start postgresql
sudo systemctl enable postgresql
Променете паролата за потребителя на PostgreSQL по подразбиране.
sudo passwd postgres
Влезте като потребител на PostgreSQL:
sudo su - postgres
Създайте нов потребител на PostgreSQL за Concourse CI.
createuser concourse
Забележка : Потребителят на PostgreSQL по подразбиране може да се използва за удостоверяване на базата данни, но се препоръчва да се използва специален потребител за удостоверяване на базата данни Concourse в производствена настройка.
PostgreSQL предоставя обвивка за изпълнение на заявки към базата данни. Превключете към обвивката на PostgreSQL.
psql
Задайте парола за новосъздадения потребител на база данни Concourse.
ALTER USER concourse WITH ENCRYPTED password 'DBPassword';
Важно : Заменете DBPassword
със силна парола. Запишете си паролата, тъй като тя ще се изисква по-късно в урока.
Създайте нова база данни за Concourse.
CREATE DATABASE concourse OWNER concourse;
Излезте от psql
черупката.
\q
Превключете към потребителя sudo от текущия postgres
потребител.
exit
Изтеглете най-новата версия на изпълнимия файл Concourse и го съхранете /usr/bin
, за да може да се изпълнява директно. Най-новата версия на двоичните файлове Concourse и Fly може да бъде намерена на страницата за изтегляне на Concourse . Новите издания са много чести. Заменете връзката по-долу с новата връзка за най-новата версия.
sudo wget https://github.com/concourse/concourse/releases/download/v3.10.0/concourse_linux_amd64 -O /usr/bin/concourse
По същия начин изтеглете най-новата версия на изпълнимия файл fly и го запазете в /usr/bin
.
sudo wget https://github.com/concourse/concourse/releases/download/v3.10.0/fly_linux_amd64 -O /usr/bin/fly
Fly е интерфейсът на командния ред, използван за свързване към ATC API на Concourse CI. Fly се предлага за множество платформи като Linux, Windows и MacOS.
Задайте разрешение за изпълнение на изтеглените concourse
и fly
двоични файлове.
sudo chmod +x /usr/bin/concourse /usr/bin/fly
Проверете дали Concourse и Fly работят правилно, като проверите тяхната версия.
concourse -version
fly -version
RSA двойките ключове осигуряват начин за криптиране на комуникацията между компонентите на Concourse.
За да работи Concourse, трябва да се генерират поне три чифта ключове. За криптиране на данните за сесията генерирайте session_signing_key
. Този ключ също ще се използва от TSA за подписване на заявките, които прави към ATC. За да защитите TSA SSH сървъра, генерирайте tsa_host_key
. Накрая генерирайте worker_key
за всеки работник.
Създайте нова директория за съхраняване на ключовете и конфигурацията, свързани с Concourse CI.
sudo mkdir /opt/concourse
Генерирайте необходимите ключове.
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
Разрешете публичния ключ на работниците, като копирате съдържанието му във authorized_worker_keys
файла.
sudo cp /opt/concourse/worker_key.pub /opt/concourse/authorized_worker_keys
Concourse предоставя два отделни компонента, които трябва да бъдат стартирани: мрежата и работника. Стартирайте мрежата 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
Променете потребителското име и паролата на, basic-auth
ако желаете. Уверете се, че пътят към ключовите файлове е правилен и се уверете, че е предоставена правилната стойност за потребителско име и парола в конфигурацията на базата данни PostgreSQL.
Забележка : ATC ще слуша порта по подразбиране, 8080
а TSA ще слуша порта 2222
. Ако удостоверяването не е желано, предайте --no-really-i-dont-want-any-auth
опцията, след като премахнете основните опции за удостоверяване.
След като уеб сървърът бъде стартиран, ще се покаже следният изход.
{"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"}}
Спрете сървъра засега, тъй като трябва да се настроят още няколко неща.
Стартирайте 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
Горната команда ще приеме, че TSA работи на localhost и слуша порта по подразбиране 2222
.
Въпреки че Concourse web и worker могат да бъдат стартирани лесно с помощта на командите по-горе, се препоръчва използването на Systemd за управление на сървъра.
Използването на услугата Systemd за управление на приложението гарантира, че приложението се стартира автоматично при неуспехи и по време на зареждане. Сървърът Concourse не взема данни от нито един конфигурационен файл, но има достъп до данните от променливи на средата. Вместо да задавате глобални променливи на средата, създайте нов файл за съхраняване на променливите на средата и след това предайте променливите на Concourse CI с помощта на услугата Systemd.
Създайте нов файл на средата за Concourse web.
sudo nano /opt/concourse/web.env
Попълнете файла.
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.
Входовете и друга информация, изпратена през уеб потребителския интерфейс до сървъра на Concourse, не са защитени. Връзката не е криптирана. Обратно прокси Nginx може да бъде настроено с безплатен SSL Let's Encrypt.
Инсталирайте Nginx.
sudo apt -y install nginx
Стартирайте Nginx и го активирайте да стартира автоматично при стартиране.
sudo systemctl start nginx
sudo systemctl enable nginx
Добавете хранилището на Certbot.
sudo add-apt-repository --yes ppa:certbot/certbot
sudo apt-get update
Инсталирайте Certbot, което е клиентското приложение за Let's Encrypt CA.
sudo apt -y install certbot
Забележка : За да получите сертификати от Let's Encrypt CA, домейнът, за който трябва да се генерират сертификатите, трябва да бъде насочен към сървъра. Ако не, направете необходимите промени в DNS записите на домейна и изчакайте DNS да се разпространи, преди да направите отново заявка за сертификат. Certbot проверява авторитета на домейна, преди да предостави сертификатите.
Генерирайте SSL сертификати.
sudo certbot certonly --webroot -w /var/www/html -d ci.example.com
Генерираните сертификати вероятно ще се съхраняват в /etc/letsencrypt/live/ci.example.com/
директорията. SSL сертификатът ще се съхранява като, fullchain.pem
а частният ключ ще се съхранява като privkey.pem
.
Сертификатите Let's Encrypt изтичат след 90 дни, така че се препоръчва автоматичното подновяване на сертификатите да се настрои с помощта на cronjobs. Cron е системна услуга, която се използва за изпълнение на периодични задачи.
Отворете файла за задание на cron.
sudo crontab -e
Добавете следния ред в края на файла.
30 5 * * * /usr/bin/certbot renew --quiet
Горната задача на cron ще се изпълнява всеки ден в 5:30 сутринта. Ако сертификатът изтича, той автоматично ще бъде подновен.
Създайте нов виртуален хост.
sudo nano /etc/nginx/sites-available/concourse
Попълнете файла.
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;
}
}
Забележка : Заменете ci.example.com
с действителния домейн.
Активирайте конфигурационния файл.
sudo ln -s /etc/nginx/sites-available/concourse /etc/nginx/sites-enabled/concourse
Редактирайте файла на средата, създаден за Concours Web.
sudo nano /opt/concourse/web.env
Променете стойността на CONCOURSE_EXTERNAL_URL
и също така добавете още два реда в края на файла.
CONCOURSE_EXTERNAL_URL=https://ci.example.com
CONCOURSE_BIND_IP=127.0.0.1
CONCOURSE_BIND_PORT=8080
Запазете файла и рестартирайте Concourse Web, Worker и Nginx.
sudo systemctl restart concourse-worker concourse-web nginx
Всички данни, изпращани към и от браузъра, вече са защитени със SSL криптиране.
Jenkins е популярен инструмент за CI (непрекъсната интеграция) с отворен код, който се използва широко за разработване, внедряване и автоматизация на проекти. Тази статия ще
Използване на различна система? Въведение Непрекъснатата интеграция е практика за разработка на софтуер DevOps, която позволява на разработчиците често да обединяват
Използване на различна система? Ansible е инструмент с отворен код за автоматизиране на задачи. Той управлява конфигурацията на вашите Linux и Windows сървъри. Да работи
Използване на различна система? GoCD е система за непрекъсната доставка и автоматизация с отворен код. Той ви позволява да моделирате сложни работни потоци, като използвате неговия паралел
Докато SaltStack е чудесен инструмент за изпълнение на операции на много сървъри едновременно, той също така поддържа предварително зададени конфигурационни настройки за всеки хост, съхранявани в
Използване на различна система? Ansible е инструмент с отворен код за автоматизиране на задачи. Той управлява конфигурацията на вашите Linux и Windows сървъри. Да работи
Въведение Drone е автоматизирана, непрекъсната платформа за тестване и доставка, която работи на вашата собствена инфраструктура. Дрон поддържа всеки език, услуга o
Какво е Load Balancer Балансьорите на натоварване седят пред вашето приложение и разпределят входящия трафик между множество инстанции на вашето приложение. Fo
Използване на различна система? Foreman е безплатен инструмент с отворен код, който ви помага с конфигурирането и управлението на физически и виртуални сървъри. Forema
SaltStack, или Salt, е популярно решение за управление на конфигурация с отворен код, което може да се използва за внедряване на отдалечено изпълнение, управление на конфигурация, cod
Въведение Strider CD е платформа за непрекъснато внедряване с отворен код. Приложението е написано на Node.js и използва MongoDB като бекенд за съхранение. Разкрачвайте се
Въведение Chocolatey предоставя управление на пакети, което прави администрирането на софтуер и зависимостите лесно в Linux, на Windows. Можете бързо и лесно
Какво е Packer? Packer е инструмент за създаване на сървърни изображения, разработен от HashiCorp. Изобразяване на сървър; или алтернативно, неизменна инфраструктура; е популярна алтернатива
Използване на различна система? Въведение Непрекъснатата интеграция е практика за разработка на софтуер DevOps, която позволява на разработчиците често да обединяват
Има много начини за автоматизиране на процеса на настройка и конфигуриране на кутия. По каквато и да е причина, ако цялата ни система в този момент се състои от справедливи
Използване на различна система? Foreman е безплатен инструмент с отворен код, който ви помага с конфигурирането и управлението на физически и виртуални сървъри. Forema
SaltStack е базирана на Python програма за управление на конфигурацията, която е оптимизирана за автоматизиране на конфигурационни файлове, внедряване и всичко друго.
Изкуственият интелект не е в бъдещето, тук е точно в настоящето. В този блог Прочетете как приложенията за изкуствен интелект са повлияли на различни сектори.
Вие също сте жертва на DDOS атаки и сте объркани относно методите за превенция? Прочетете тази статия, за да разрешите вашите запитвания.
Може би сте чували, че хакерите печелят много пари, но чудили ли сте се някога как печелят такива пари? нека обсъдим.
Искате ли да видите революционни изобретения на Google и как тези изобретения промениха живота на всяко човешко същество днес? След това прочетете в блога, за да видите изобретенията на Google.
Концепцията за самоуправляващи се автомобили да тръгват по пътищата с помощта на изкуствен интелект е мечта, която имаме от известно време. Но въпреки няколкото обещания, те не се виждат никъде. Прочетете този блог, за да научите повече…
Тъй като науката се развива с бързи темпове, поемайки много от нашите усилия, рискът да се подложим на необяснима сингулярност също нараства. Прочетете какво може да означава сингулярността за нас.
Методите за съхранение на данните може да се развиват от раждането на данните. Този блог обхваща развитието на съхранението на данни на базата на инфографика.
Прочетете блога, за да разберете различни слоеве в архитектурата на големи данни и техните функционалности по най-простия начин.
В този дигитално задвижван свят устройствата за интелигентен дом се превърнаха в решаваща част от живота. Ето няколко невероятни предимства на интелигентните домашни устройства за това как те правят живота ни струващ и по-опростен.
Наскоро Apple пусна macOS Catalina 10.15.4 допълнителна актуализация за отстраняване на проблеми, но изглежда, че актуализацията причинява повече проблеми, водещи до блокиране на mac машини. Прочетете тази статия, за да научите повече