Memulai Dengan SaltStack di Ubuntu 17.04
SaltStack adalah program manajemen konfigurasi berbasis python yang dioptimalkan untuk otomatisasi file konfigurasi, penyebaran, dan hal lain yang perlu
Continuous Integration adalah praktik pengembangan perangkat lunak DevOps yang memungkinkan pengembang untuk sering menggabungkan kode yang diubah ke dalam repositori bersama beberapa kali sehari. Setelah setiap penggabungan, build otomatis dan pengujian dilakukan untuk mendeteksi masalah dalam kode. Ini memungkinkan pengembang untuk menemukan dan menyelesaikan kesalahan dengan cepat untuk meningkatkan kualitas perangkat lunak dan menyediakan pengiriman perangkat lunak secara terus menerus. Beralih ke sana kemari dari Concourse sangat mudah karena menyimpan semua konfigurasinya dalam file deklaratif yang dapat diperiksa ke dalam kontrol versi. Ini juga menyediakan antarmuka pengguna web yang menampilkan informasi bangunan secara interaktif.
Pastikan untuk mengganti semua kemunculan 192.0.2.1
dan ci.example.com
dengan alamat IP publik Vultr Anda yang sebenarnya dan nama domain yang sebenarnya.
Perbarui sistem basis Anda menggunakan panduan Cara Memperbarui Ubuntu 16.04 . Setelah sistem Anda diperbarui, lanjutkan untuk menginstal PostgreSQL.
PostgreSQL adalah sistem database relasional objek. Concourse menyimpan data salurannya ke dalam database PostgreSQL. Tambahkan repositori 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
Instal server database PostgreSQL.
sudo apt -y install postgresql
Mulai server PostgreSQL dan aktifkan untuk memulai secara otomatis saat boot.
sudo systemctl start postgresql
sudo systemctl enable postgresql
Ubah kata sandi untuk pengguna PostgreSQL default.
sudo passwd postgres
Masuk sebagai pengguna PostgreSQL:
sudo su - postgres
Buat pengguna PostgreSQL baru untuk Concourse CI.
createuser concourse
Catatan : Pengguna PostgreSQL default dapat digunakan untuk otentikasi database, tetapi disarankan untuk menggunakan pengguna khusus untuk otentikasi database Concourse dalam pengaturan produksi.
PostgreSQL menyediakan shell untuk menjalankan query pada database. Beralih ke shell PostgreSQL.
psql
Tetapkan kata sandi untuk pengguna basis data Concourse yang baru dibuat.
ALTER USER concourse WITH ENCRYPTED password 'DBPassword';
Penting : Ganti DBPassword
dengan kata sandi yang kuat. Catat kata sandi karena akan diperlukan nanti dalam tutorial.
Buat database baru untuk Concourse.
CREATE DATABASE concourse OWNER concourse;
Keluar dari psql
shell.
\q
Beralih ke pengguna sudo dari postgres
pengguna saat ini .
exit
Unduh versi terbaru dari Concourse yang dapat dieksekusi dan simpan di dalamnya /usr/bin
sehingga dapat dieksekusi langsung. Versi terbaru dari binari Concourse dan Fly dapat ditemukan di halaman unduhan Concourse . Rilis baru sangat sering. Ganti tautan di bawah ini dengan tautan baru untuk versi terbaru.
sudo wget https://github.com/concourse/concourse/releases/download/v3.10.0/concourse_linux_amd64 -O /usr/bin/concourse
Demikian pula, unduh versi terbaru dari fly executable dan simpan di /usr/bin
.
sudo wget https://github.com/concourse/concourse/releases/download/v3.10.0/fly_linux_amd64 -O /usr/bin/fly
Fly adalah antarmuka baris perintah yang digunakan untuk terhubung ke ATC API of Concourse CI. Fly tersedia untuk berbagai platform seperti Linux, Windows dan MacOS.
Tetapkan izin eksekusi untuk binari yang diunduh concourse
dan fly
.
sudo chmod +x /usr/bin/concourse /usr/bin/fly
Periksa apakah Concourse dan Fly bekerja dengan benar dengan memeriksa versinya.
concourse -version
fly -version
Pasangan kunci RSA menyediakan cara untuk mengenkripsi komunikasi antara komponen Concourse.
Agar Concourse berfungsi, setidaknya tiga pasang kunci harus dibuat. Untuk mengenkripsi data sesi, buat a session_signing_key
. Kunci ini juga akan digunakan oleh TSA untuk menandatangani permintaan yang dibuatnya kepada ATC. Untuk mengamankan server TSA SSH, buat a tsa_host_key
. Akhirnya, hasilkan worker_key
untuk setiap pekerja.
Buat direktori baru untuk menyimpan kunci dan konfigurasi yang terkait dengan Concourse CI.
sudo mkdir /opt/concourse
Buat kunci yang diperlukan.
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
Otorisasi kunci publik pekerja dengan menyalin kontennya ke authorized_worker_keys
file.
sudo cp /opt/concourse/worker_key.pub /opt/concourse/authorized_worker_keys
Concourse menyediakan dua komponen terpisah yang perlu dimulai: web dan pekerja. Mulai 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
Ubah nama pengguna dan kata sandi basic-auth
jika diinginkan. Pastikan path ke file kunci sudah benar dan pastikan bahwa nilai yang benar untuk nama pengguna dan kata sandi dalam konfigurasi database PostgreSQL disediakan.
Catatan : ATC akan mendengarkan port default 8080
dan TSA akan mendengarkan port 2222
. Jika otentikasi tidak diinginkan, berikan --no-really-i-dont-want-any-auth
opsi setelah menghapus opsi auth dasar.
Setelah server web dimulai, output berikut akan ditampilkan.
{"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"}}
Hentikan server untuk saat ini, karena beberapa hal lagi masih harus diatur.
Mulai Pekerja Concourse CI.
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
Perintah di atas akan mengasumsikan bahwa TSA berjalan di localhost dan mendengarkan port default 2222
.
Meskipun web Concourse dan pekerja dapat dimulai dengan mudah menggunakan perintah di atas, disarankan untuk menggunakan Systemd untuk mengelola server.
Menggunakan layanan Systemd untuk mengelola aplikasi memastikan bahwa aplikasi secara otomatis dimulai pada kegagalan dan saat boot. Server Concourse tidak mengambil data dari file konfigurasi apa pun, tetapi dapat mengakses data dari variabel lingkungan. Alih-alih mengatur variabel lingkungan global, buat file baru untuk menyimpan variabel lingkungan dan kemudian meneruskan variabel ke Concourse CI menggunakan layanan Systemd.
Buat file lingkungan baru untuk web Concourse.
sudo nano /opt/concourse/web.env
Mengisi 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
Ubah nama pengguna dan kata sandi BASIC_AUTH
jika diinginkan. Pastikan path ke file kunci sudah benar dan pastikan bahwa nilai yang benar untuk nama pengguna dan kata sandi dalam konfigurasi database PostgreSQL disediakan.
Demikian pula, buat file lingkungan untuk pekerja.
sudo nano /opt/concourse/worker.env
Mengisi 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
Karena file lingkungan berisi nama pengguna dan kata sandi, ubah izinnya sehingga tidak dapat diakses oleh pengguna lain.
sudo chmod 600 /opt/concourse/*.env
Sekarang buat pengguna baru untuk Concourse untuk menjalankan lingkungan web. Ini akan memastikan bahwa server web berjalan di lingkungan yang terisolasi.
sudo useradd concourse
Berikan kepemilikan pengguna concourse atas direktori file Concourse CI.
sudo chown -R concourse:concourse /opt/concourse
Buat file layanan systemd baru untuk layanan web Concourse.
sudo nano /etc/systemd/system/concourse-web.service
Mengisi 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
Simpan dan tutup file. Buat file layanan baru untuk layanan pekerja Concourse.
sudo nano /etc/systemd/system/concourse-worker.service
Mengisi 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
Layanan web dan pekerja sekarang dapat dimulai secara langsung.
sudo systemctl start concourse-web concourse-worker
Untuk mengaktifkan proses pekerja dan web untuk mulai secara otomatis saat boot, jalankan yang berikut ini.
sudo systemctl enable concourse-worker concourse-web
Untuk memeriksa status layanan, jalankan yang berikut ini.
sudo systemctl status concourse-worker concourse-web
Jika layanan belum dimulai, atau dalam FAILED
kondisi, hapus cache dari /tmp
direktori.
sudo rm -rf /tmp/*
Mulai ulang layanan.
sudo systemctl restart concourse-worker concourse-web
Perhatikan bahwa saat ini layanan sudah mulai dengan benar. Output setelah memverifikasi status layanan akan serupa dengan yang berikut ini.
[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.
Setelah server dimulai, antarmuka web Concourse CI dapat diakses dengan masuk ke http://192.0.2.1:8080
browser apa pun. Masuk menggunakan nama pengguna dan kata sandi yang disediakan dalam file lingkungan.
Untuk terhubung ke server menggunakan Fly, jalankan yang berikut ini.
fly -t my-ci login -c http://192.0.2.1:8080
Perintah di atas digunakan untuk login awal ke server. -t
digunakan untuk memberikan nama target. ganti my-ci
dengan nama target yang diinginkan. Perintah di atas akan masuk ke tim default main
. Ia akan menanyakan nama pengguna dan kata sandi yang disediakan dalam file lingkungan.
Outputnya akan terlihat seperti berikut.
[user@vultr ~]$ fly -t my-ci login -c http://192.0.2.1:8080
logging in to team 'main'
username: admin
password:
target saved
Login target akan disimpan selama sehari. Setelah itu, akan kedaluwarsa.
Untuk segera keluar.
fly -t my-ci logout
Fly dapat digunakan untuk masuk ke server di luar jaringan, tetapi hanya jika server memiliki alamat IP publik dan dapat diakses dari luar jaringan. Biner Windows atau MacOS dapat diunduh dari situs unduhan atau dari UI web server.
Info masuk, dan informasi lain yang dikirim melalui web UI ke server Concourse tidak diamankan. Koneksi tidak terenkripsi. Proxy reverse Nginx dapat diatur dengan Let's Encrypt SSL gratis.
Instal Nginx.
sudo apt -y install nginx
Mulai Nginx dan aktifkan untuk mulai secara otomatis saat boot.
sudo systemctl start nginx
sudo systemctl enable nginx
Tambahkan repositori Certbot.
sudo add-apt-repository --yes ppa:certbot/certbot
sudo apt-get update
Instal Certbot, yang merupakan aplikasi klien untuk Let's Encrypt CA.
sudo apt -y install certbot
Catatan : Untuk mendapatkan sertifikat dari Let's Encrypt CA, domain tempat sertifikat akan dibuat harus diarahkan ke server. Jika tidak, buat perubahan yang diperlukan pada catatan DNS domain dan tunggu hingga DNS menyebar sebelum membuat permintaan sertifikat lagi. Certbot memeriksa otoritas domain sebelum memberikan sertifikat.
Buat sertifikat SSL.
sudo certbot certonly --webroot -w /var/www/html -d ci.example.com
Sertifikat yang dihasilkan cenderung disimpan di /etc/letsencrypt/live/ci.example.com/
direktori. Sertifikat SSL akan disimpan sebagai fullchain.pem
dan kunci pribadi akan disimpan sebagai privkey.pem
.
Mari Enkripsi sertifikat kedaluwarsa dalam 90 hari, jadi disarankan pembaruan otomatis karena sertifikat disiapkan menggunakan cronjobs. Cron adalah layanan sistem yang digunakan untuk menjalankan tugas-tugas berkala.
Buka file tugas cron.
sudo crontab -e
Tambahkan baris berikut di akhir file.
30 5 * * * /usr/bin/certbot renew --quiet
Pekerjaan cron di atas akan berjalan setiap hari pada pukul 5:30 pagi. Jika sertifikat akan kedaluwarsa, maka secara otomatis akan diperpanjang.
Buat host virtual baru.
sudo nano /etc/nginx/sites-available/concourse
Mengisi file.
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;
}
}
Catatan : Ganti ci.example.com
dengan domain yang sebenarnya.
Aktifkan file konfigurasi.
sudo ln -s /etc/nginx/sites-available/concourse /etc/nginx/sites-enabled/concourse
Edit file Lingkungan yang dibuat untuk Web concourse.
sudo nano /opt/concourse/web.env
Ubah nilai CONCOURSE_EXTERNAL_URL
dan juga tambahkan dua baris lagi di akhir file.
CONCOURSE_EXTERNAL_URL=https://ci.example.com
CONCOURSE_BIND_IP=127.0.0.1
CONCOURSE_BIND_PORT=8080
Simpan file dan mulai ulang Web Concourse, Pekerja dan Nginx.
sudo systemctl restart concourse-worker concourse-web nginx
Semua data yang dikirim ke dan dari browser sekarang diamankan dengan enkripsi SSL.
SaltStack adalah program manajemen konfigurasi berbasis python yang dioptimalkan untuk otomatisasi file konfigurasi, penyebaran, dan hal lain yang perlu
Jenkins adalah alat open source CI (Continuous Integration) yang populer yang banyak digunakan untuk pengembangan, penyebaran, dan otomatisasi proyek. Artikel ini wil
Pendahuluan Drone adalah platform pengujian dan pengiriman otomatis dan berkesinambungan yang berjalan pada infrastruktur Anda sendiri. Drone mendukung bahasa apa pun, layanan o
Ada banyak cara untuk mengotomatiskan proses pengaturan dan konfigurasi kotak. Untuk alasan apa pun, jika seluruh sistem kami pada saat ini terdiri dari adil
Apa itu Load Balancer Load Balancers duduk di depan aplikasi Anda dan mendistribusikan lalu lintas masuk di beberapa instance aplikasi Anda. Fo
Sementara SaltStack adalah alat yang hebat untuk menjalankan operasi pada banyak server secara bersamaan, SaltStack juga mendukung pengaturan konfigurasi yang ditentukan per-host yang disimpan dalam
SaltStack, atau Salt, adalah solusi manajemen konfigurasi open source yang populer yang dapat digunakan untuk mengimplementasikan eksekusi jarak jauh, manajemen konfigurasi, cod
Menggunakan Sistem yang Berbeda? Ansible adalah alat sumber terbuka untuk mengotomatisasi tugas. Ia mengelola konfigurasi server Linux dan Windows Anda. Ini bekerja
Menggunakan Sistem yang Berbeda? Pengantar Continuous Integration adalah praktik pengembangan perangkat lunak DevOps yang memungkinkan pengembang untuk sering menggabungkannya
Pendahuluan Strider CD adalah platform penyebaran berkelanjutan sumber terbuka. Aplikasi ini ditulis dalam Node.js dan menggunakan MongoDB sebagai cadangan penyimpanan. Melangkah
Menggunakan Sistem yang Berbeda? Ansible adalah alat sumber terbuka untuk mengotomatisasi tugas. Ia mengelola konfigurasi server Linux dan Windows Anda. Ini bekerja
Apa itu Packer? Packer adalah alat pencitraan server yang dikembangkan oleh HashiCorp. Pencitraan server; atau sebagai alternatif, infrastruktur yang tidak dapat diubah; adalah alternatif populer
Menggunakan Sistem yang Berbeda? GoCD adalah sistem pengantaran dan otomatisasi sumber terbuka yang berkelanjutan. Ini memungkinkan Anda untuk memodelkan alur kerja yang kompleks menggunakan paralelnya
Pendahuluan Chocolatey membawa manajemen paket yang memudahkan administrasi perangkat lunak dan dependensi di Linux, ke Windows. Anda dapat dengan cepat dan mudah
Menggunakan Sistem yang Berbeda? Foreman adalah alat sumber terbuka dan gratis yang membantu Anda dengan konfigurasi dan pengelolaan server fisik dan virtual. Forema
Menggunakan Sistem yang Berbeda? Foreman adalah alat sumber terbuka dan gratis yang membantu Anda dengan konfigurasi dan pengelolaan server fisik dan virtual. Forema
Wawasan tentang 26 Teknik Analisis Data Besar: Bagian 1
Banyak dari Anda tahu Switch keluar pada Maret 2017 dan fitur-fitur barunya. Bagi yang belum tahu, kami sudah menyiapkan daftar fitur yang membuat 'Switch' menjadi 'gadget yang wajib dimiliki'.
Apakah Anda menunggu raksasa teknologi untuk memenuhi janji mereka? periksa apa yang belum terkirim.
Baca blog untuk mengetahui berbagai lapisan dalam Arsitektur Big Data dan fungsinya dengan cara yang paling sederhana.
Baca ini untuk mengetahui bagaimana Kecerdasan Buatan menjadi populer di antara perusahaan skala kecil dan bagaimana hal itu meningkatkan kemungkinan untuk membuat mereka tumbuh dan memberi keunggulan pada pesaing mereka.
CAPTCHA telah berkembang cukup sulit bagi pengguna untuk dipecahkan dalam beberapa tahun terakhir. Apakah itu akan tetap efektif dalam deteksi spam dan bot di masa mendatang?
Saat Sains Berkembang dengan kecepatan tinggi, mengambil alih banyak upaya kita, risiko menundukkan diri kita pada Singularitas yang tidak dapat dijelaskan juga meningkat. Baca, apa arti singularitas bagi kita.
Apa itu telemedicine, perawatan kesehatan jarak jauh dan dampaknya terhadap generasi mendatang? Apakah itu tempat yang bagus atau tidak dalam situasi pandemi? Baca blog untuk menemukan tampilan!
Anda mungkin pernah mendengar bahwa peretas menghasilkan banyak uang, tetapi pernahkah Anda bertanya-tanya bagaimana cara mereka mendapatkan uang sebanyak itu? mari berdiskusi.
Baru-baru ini Apple merilis macOS Catalina 10.15.4 pembaruan suplemen untuk memperbaiki masalah tetapi tampaknya pembaruan menyebabkan lebih banyak masalah yang mengarah ke bricking mesin mac. Baca artikel ini untuk mempelajari lebih lanjut