Trong bài viết này, mình sẽ cùng các bạn đi qua từng bước chi tiết để cài đặt Jenkins trên một máy chủ Ubuntu 22.04. Chúng ta sẽ bắt đầu từ việc chuẩn bị môi trường, cài đặt Jenkins, khởi động dịch vụ, cấu hình tường lửa, và cuối cùng là hoàn tất thiết lập ban đầu bằng cách tạo người dùng quản trị. Mục tiêu là có một Jenkins server hoạt động sẵn sàng cho môi trường phát triển (development deployment).

Chuẩn bị
Để theo dõi hướng dẫn này, bạn sẽ cần:
- Một máy chủ Ubuntu 22.04 đã được cấu hình với người dùng
sudokhông phảirootvà tường lửa (firewall). Mình khuyến nghị bắt đầu với ít nhất 1GB RAM. - Cài đặt Oracle JDK 11.
Các bước cài đặt Jenkins trên Ubuntu 22.04
Bước 1: Cài đặt Jenkins
Phiên bản Jenkins đi kèm với các gói Ubuntu mặc định thường không phải là phiên bản mới nhất từ dự án. Để đảm bảo bạn có các bản sửa lỗi và tính năng mới nhất, chúng ta sẽ sử dụng các gói được duy trì bởi chính dự án Jenkins để cài đặt.
Đầu tiên, hãy thêm khóa repository vào hệ thống của bạn:
wget -q -O - <https://pkg.jenkins.io/debian-stable/jenkins.io.key> | sudo gpg --dearmor -o /usr/share/keyrings/jenkins.gpg
Lệnh gpg --dearmor được sử dụng để chuyển đổi khóa sang định dạng mà apt có thể nhận dạng và lưu trữ nó vào đường dẫn /usr/share/keyrings/jenkins.gpg.
Tiếp theo, hãy thêm địa chỉ repository của gói Debian vào sources.list của máy chủ:
sudo sh -c 'echo deb [signed-by=/usr/share/keyrings/jenkins.gpg] <http://pkg.jenkins.io/debian-stable> binary/ > /etc/apt/sources.list.d/jenkins.list'
Phần [signed-by=/usr/share/keyrings/jenkins.gpg] trong dòng lệnh đảm bảo rằng apt sẽ xác minh các file trong repository bằng cách sử dụng khóa GPG mà bạn vừa tải xuống, giúp tăng cường bảo mật.
Sau khi cả hai lệnh đã được nhập, hãy chạy apt update để apt sử dụng repository mới này:
sudo apt update
Cuối cùng, cài đặt Jenkins và các dependency của nó:
sudo apt install jenkins
Giờ đây Jenkins và các dependency đã sẵn sàng, chúng ta sẽ khởi động Jenkins server.
Bước 2: Khởi động Jenkins
Sau khi Jenkins được cài đặt, hãy khởi động nó bằng cách sử dụng systemctl:
sudo systemctl start jenkins.service
Vì systemctl không hiển thị output trạng thái, chúng ta sẽ sử dụng lệnh status để xác minh rằng Jenkins đã khởi động thành công:
sudo systemctl status jenkins
Nếu mọi thứ diễn ra tốt đẹp, phần đầu của output trạng thái sẽ cho thấy dịch vụ đang ở trạng thái active (running) và được cấu hình để khởi động khi boot:
Output
● jenkins.service - Jenkins Continuous Integration Server
Loaded: loaded (/lib/systemd/system/jenkins.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2022-04-18 16:07:28 UTC; 2min 3s ago
Main PID: 88180 (java)
Tasks: 42 (limit: 4665)
Memory: 1.1G
CPU: 46.997s
CGroup: /system.slice/jenkins.service
└─88180 /usr/bin/java -Djava.awt.headless=true -jar /usr/share/java/jenkins.war --webroot=/var/cache/jenkins/war --httpPort=8080
Jenkins đã chạy, giờ là lúc điều chỉnh tường lửa để bạn có thể truy cập nó từ trình duyệt web để hoàn tất thiết lập ban đầu.
Bước 3: Mở tường lửa
Theo mặc định, Jenkins chạy trên port 8080. Hãy mở port đó bằng ufw:
sudo ufw allow 8080
Lưu ý: Nếu tường lửa chưa hoạt động, các lệnh sau sẽ cho phép OpenSSH và kích hoạt tường lửa:
sudo ufw allow OpenSSH
sudo ufw enable
Kiểm tra trạng thái của ufw để xác nhận các quy tắc mới:
sudo ufw status
Bạn sẽ thấy rằng traffic được cho phép đến port 8080 từ bất kỳ đâu:
Output
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
8080 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
8080 (v6) ALLOW Anywhere (v6)
Với Jenkins đã cài đặt và tường lửa đã cấu hình, bạn đã hoàn tất giai đoạn cài đặt và có thể tiếp tục cấu hình Jenkins.
Bước 4: Cấu hình Jenkins
Để thiết lập cài đặt của bạn, hãy truy cập Jenkins trên port mặc định của nó là 8080, sử dụng tên miền hoặc địa chỉ IP của máy chủ của bạn: http://your_server_ip_or_domain:8080
Bạn sẽ nhận được màn hình Unlock Jenkins, hiển thị vị trí của mật khẩu ban đầu:

Trong cửa sổ terminal, sử dụng lệnh cat để hiển thị mật khẩu:
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
Sao chép mật khẩu gồm 32 ký tự chữ và số từ terminal và dán vào trường Administrator password, sau đó nhấp vào Continue.
Màn hình tiếp theo sẽ trình bày tùy chọn cài đặt các plugin được đề xuất hoặc chọn các plugin cụ thể:

Chúng ta sẽ nhấp vào tùy chọn Install suggested plugins, điều này sẽ ngay lập tức bắt đầu quá trình cài đặt.

Khi quá trình cài đặt hoàn tất, bạn sẽ được nhắc thiết lập người dùng quản trị đầu tiên. Bạn có thể bỏ qua bước này và tiếp tục với vai trò admin bằng cách sử dụng mật khẩu ban đầu ở trên, nhưng chúng ta sẽ dành một chút thời gian để tạo người dùng.
Lưu ý quan trọng: Jenkins server mặc định KHÔNG được mã hóa, do đó dữ liệu được gửi bằng form này không được bảo vệ.

Nhập tên và mật khẩu cho người dùng của bạn:

Bạn sẽ nhận được trang Instance Configuration yêu cầu bạn xác nhận URL cho Jenkins instance của bạn. Xác nhận tên miền của máy chủ hoặc địa chỉ IP của máy chủ:

Sau khi xác nhận thông tin phù hợp, nhấp vào Save and Finish. Bạn sẽ nhận được trang xác nhận rằng “Jenkins is Ready!”:

Nhấp vào Start using Jenkins để truy cập bảng điều khiển chính của Jenkins:

Đến đây, các bạn đã hoàn tất một quá trình cài đặt Jenkins thành công!
Kết luận
Trong bài viết này, chúng ta đã cùng nhau cài đặt Jenkins bằng cách sử dụng các gói được cung cấp bởi dự án, khởi động máy chủ, mở tường lửa và tạo người dùng quản trị. Đến thời điểm này, bạn đã có thể bắt đầu khám phá Jenkins và sử dụng nó cho các dự án phát triển của mình.
Tuy nhiên, mình xin nhắc lại một lần nữa về tầm quan trọng của bảo mật. Jenkins server sau các bước trên chỉ phù hợp cho môi trường phát triển hoặc thử nghiệm. Để bảo vệ mật khẩu của bạn, cũng như bất kỳ thông tin hệ thống hoặc sản phẩm nhạy cảm nào sẽ được gửi giữa máy của bạn và server dưới dạng văn bản thuần túy, bạn bắt buộc phải cấu hình SSL và sử dụng một reverse proxy như Nginx cho môi trường production.
Hy vọng bài viết này sẽ giúp ích cho bạn trên hành trình tự động hóa các quy trình DevOps của mình.