Як встановити 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 — це інтерфейс командного рядка, який використовується для підключення до API ATC 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 працює на локальному хості та прослуховує порт за замовчуванням 2222
.
Хоча веб-сайт Concourse і 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 — це система безперервної доставки та автоматизації з відкритим вихідним кодом. Він дозволяє моделювати складні робочі процеси, використовуючи його паралельний an
Хоча SaltStack є чудовим інструментом для одночасного виконання операцій на багатьох серверах, він також підтримує певні налаштування конфігурації для кожного хоста, що зберігаються в
Використання іншої системи? Ansible — інструмент з відкритим кодом для автоматизації завдань. Він керує конфігурацією ваших серверів Linux і Windows. Це працює
Вступ Drone — це автоматизована платформа безперервного тестування та доставки, яка працює на вашій власній інфраструктурі. Дрон підтримує будь-яку мову, сервіс о
Що таке Load Balancer Балансувальники навантаження розташовані перед вашою програмою і розподіляють вхідний трафік між кількома екземплярами вашої програми. Fo
Використання іншої системи? Foreman — це безкоштовний інструмент з відкритим вихідним кодом, який допоможе вам налаштувати та керувати фізичними та віртуальними серверами. Предварня
SaltStack, або Salt, — це популярне рішення для керування конфігурацією з відкритим вихідним кодом, яке можна використовувати для реалізації віддаленого виконання, керування конфігурацією, код
Вступ Strider CD — це платформа безперервного розгортання з відкритим вихідним кодом. Програма написана на Node.js і використовує MongoDB як бекенд сховища. Шрок
Вступ Chocolatey забезпечує керування пакетами, що спрощує адміністрування програмного забезпечення та залежностей у Linux у Windows. Можна швидко і легко
Що таке Пакер? Packer — це інструмент створення зображень сервера, розроблений HashiCorp. Обробка зображень сервера; або, як альтернатива, незмінна інфраструктура; є популярною альтернативою
Використання іншої системи? Вступ Постійна інтеграція – це практика розробки програмного забезпечення DevOps, яка дозволяє розробникам часто об’єднувати
Є багато способів автоматизувати процес налаштування та налаштування коробки. З будь-якої причини, якщо вся наша система на даний момент складається з справедливих
Використання іншої системи? Foreman — це безкоштовний інструмент з відкритим вихідним кодом, який допоможе вам налаштувати та керувати фізичними та віртуальними серверами. Предварня
SaltStack — це програма керування конфігурацією на основі Python, яка оптимізована для автоматизації файлів конфігурації, розгортань та всього іншого.
Штучний інтелект не в майбутньому, він тут прямо в сьогоденні У цьому блозі Прочитайте, як програми штучного інтелекту вплинули на різні сектори.
Ви також стали жертвою DDOS-атак і спантеличені методами запобігання? Прочитайте цю статтю, щоб вирішити свої запитання.
Можливо, ви чули, що хакери заробляють багато грошей, але чи замислювалися ви коли-небудь, як вони заробляють такі гроші? давайте обговоримо.
Ви хочете побачити революційні винаходи Google і як ці винаходи змінили життя кожної людини сьогодні? Тоді читайте в блозі, щоб побачити винаходи Google.
Концепція самокерованих автомобілів, щоб вирушати в дороги за допомогою штучного інтелекту, є мрією, яку ми давно мріємо. Але, незважаючи на кілька обіцянок, їх ніде не видно. Прочитайте цей блог, щоб дізнатися більше…
Оскільки наука розвивається швидкими темпами, бере на себе багато наших зусиль, ризики піддати себе незрозумілій Сингулярності також зростає. Читайте, що може означати для нас сингулярність.
Методи зберігання даних можуть розвиватися з моменту народження Даних. Цей блог висвітлює еволюцію зберігання даних на основі інфографіки.
Прочитайте блог, щоб дізнатися про різні шари архітектури великих даних та їх функціональні можливості найпростішим способом.
У цьому цифровому світі пристрої розумного дому стали важливою частиною життя. Ось кілька дивовижних переваг пристроїв розумного дому щодо того, як вони роблять наше життя гідним життя та спрощують його.
Нещодавно Apple випустила додаткове оновлення macOS Catalina 10.15.4, щоб виправити проблеми, але схоже, що оновлення викликає більше проблем, що призводять до блокування комп’ютерів Mac. Прочитайте цю статтю, щоб дізнатися більше