Cách cài đặt máy chủ tự động hóa Jenkins trên AlmaLinux 8

Tác giả Network Engineer, T.Hai 08, 2022, 09:12:43 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 2 Khách đang xem chủ đề.

Cách cài đặt máy chủ tự động hóa Jenkins trên AlmaLinux 8


Jenkins là một máy chủ tự động mã nguồn mở miễn phí được viết bằng Java. Nó có thể được triển khai trên một máy chủ duy nhất hoặc dưới dạng ứng dụng phân tán. Đây là một trong những giải pháp nguồn mở phổ biến nhất để tích hợp liên tục và phân phối liên tục các ứng dụng phần mềm.

Tích hợp liên tục (CI) là một thực tiễn phát triển phần mềm yêu cầu các nhà phát triển tích hợp mã của họ vào kho lưu trữ chính (thường là hàng ngày) càng sớm và thường xuyên càng tốt để phát hiện lỗi tích hợp, xây dựng các tính năng mới và cung cấp phản hồi cho tất cả các giai đoạn của vòng đời phần mềm.

Một nền tảng như Jenkins là một khuôn khổ CI có thể được sử dụng trực tuyến hoặc cài đặt cục bộ trên máy tính của bạn. Nó cung cấp cho bạn giao diện dễ sử dụng để cộng tác với các thành viên trong nhóm của bạn trên GitHub, Bitbucket hoặc các kho lưu trữ khác sử dụng Git để tạo các đường dẫn tích hợp liên tục.

Phân phối liên tục (CD) là một thực tiễn phát triển phần mềm cho phép phát hành các ứng dụng và dịch vụ phần mềm với quy mô nhỏ, thường xuyên. Nó nhanh hơn so với cách tiếp cận truyền thống, thường bao gồm một bản phát hành lớn duy nhất cứ sau sáu tháng. Phân phối liên tục có thể bao gồm việc triển khai mã mới hàng ngày, hàng giờ hoặc thậm chí nhiều lần trong giờ. Khoảng thời gian ngắn hơn cho phép sự linh hoạt trong việc đáp ứng với những thay đổi trong yêu cầu kinh doanh hoặc công nghệ cơ bản đồng thời giảm chi phí và rủi ro liên quan đến khoảng thời gian dài giữa các lần phát hành.

Một nền tảng như Jenkins là một khung công tác CD điều phối và quản lý các bước khác nhau cần thiết để tạo ra một hệ thống CD. Vai trò của Jenkins không chỉ là xây dựng mã, mà còn kiểm tra và triển khai nó.

Một kiến ​​trúc dựa trên plugin cho phép mở rộng chức năng cơ bản của Jenkins với các plugin tự viết, ví dụ như để quản lý mã nguồn hoặc các tác vụ khác. Các plugin có sẵn được liệt kê trong Trình quản lý Plugin bên trong Jenkins và có thể được cài đặt bằng cách chỉ cần nhấp vào chúng.

Jenkins cung cấp hơn 300 plugin để hỗ trợ xây dựng, triển khai và tự động hóa bất kỳ loại dự án nào từ đầu đến sản xuất bao gồm Java, Javascript, PHP, Ruby, Android và các loại khác.

Nó cũng có API REST của riêng mình, vì vậy bạn có thể tạo các công cụ tùy chỉnh của riêng mình tích hợp với Jenkins mà không cần biết cách viết mã hoặc bất cứ điều gì về nội bộ kiến ​​trúc của Jenkins.

Bạn là một sysadmin đang tìm kiếm một giải pháp giúp bạn tiết kiệm thời gian trong khi triển khai các ứng dụng nhỏ cho máy của mình. Sau khi xem xét một số lựa chọn, bạn bắt gặp Jenkins, người tuyên bố có thể giải quyết tất cả các vấn đề của bạn. Bạn đi sâu vào, đọc tài liệu và cài đặt Jenkins. Tài liệu hướng dẫn bạn qua quá trình cài đặt, nhưng bạn không thể cài đặt nó một cách chính xác.

Việc cài đặt và cấu hình các thành phần phần mềm cần thiết cho một hệ thống xây dựng hoàn chỉnh, hoạt động không phải là điều dễ dàng. Đó là lý do tại sao mình đã tạo hướng dẫn từng bước này về cách cài đặt và cấu hình Jenkins trên AlmaLinux 8.

1. Điều kiện tiên quyết

Để cài đặt Jenkins trên AlmaLinux 8, bạn sẽ cần:

  • Máy AlmaLinux 8 64-bit có kết nối Internet đang hoạt động.
  • Quyền truy cập root vào máy chủ của bạn. Bạn có thể lấy nó bằng cách làm theo hướng dẫn này.
  • Yêu cầu hệ thống: theo trang web chính thức của Jenkins, một bản cài đặt cơ bản của Jenkins cần tối thiểu 2 GB RAM. Jenkin yêu cầu 50 GB dung lượng đĩa trống để cài đặt, cộng với 1 GB dung lượng đĩa trống cho mỗi bản dựng slave mà bạn muốn thêm. Ngoài ra, bạn sẽ cần một lõi CPU và một GB RAM cho mỗi build worker đồng thời mà bạn muốn hỗ trợ.

2. Cập nhật hệ thống của bạn

Trước khi bắt đầu cài đặt và cấu hình Jenkins, bạn nên cập nhật hệ thống của mình lên phiên bản mới nhất hiện có của gói phần mềm.

Đối với điều đó, ssh đến máy chủ của bạn và chạy lệnh sau. Gói epel-release cung cấp các gói được cập nhật từ kho lưu trữ phát triển Extras chưa phải là một phần của bản phát hành RHEL chính. Repo Extras chứa các gói không có trong bộ gói tiêu chuẩn của Red Hat nhưng vẫn được xây dựng cho các bản phát hành RHEL. Điều này bao gồm các gói ngôn ngữ, hỗ trợ cho các phiên bản mới hơn của các biểu tượng thích ứng và các cập nhật chức năng khác.

Mã nguồn [Chọn]
$ sudo dnf check-update && sudo dnf update -y
Mã nguồn [Chọn]
$ sudo dnf install epel-release
3. Cài đặt Java

Java là một ngôn ngữ lập trình dựa trên C. Nó được coi là một trong những ngôn ngữ lập trình phổ biến nhất vì nó đã được sử dụng trong nhiều phần mềm như Android và Google Chrome. Java là một ngôn ngữ lập trình đa nền tảng có thể chạy các ứng dụng tự trị trên cả hệ điều hành Windows và Linux, cũng như MacOS, Solaris, FreeBSD và các hệ thống UNIX khác.

Jenkins, cốt lõi của nó, là một chương trình Java yêu cầu bạn cài đặt Java Runtime Environment (JRE) và Java Development Kit (JDK) trên hệ thống của bạn để hoạt động bình thường.

Bản demo này sẽ cài đặt OpenJDK 11 trên hệ thống. OpenJDK là một triển khai mã nguồn mở và miễn phí của Nền tảng Java, Phiên bản Tiêu chuẩn (Java SE). Nó là một môi trường phát triển và thời gian chạy để xây dựng các ứng dụng, dịch vụ vi mô và các hệ thống máy chủ khác chạy trên máy ảo Java (JVM).

OpenJDK dựa trên Bộ phát triển Java của Oracle phiên bản 8 với sự hỗ trợ của Project Jigsaw. Điều này có nghĩa là bạn có thể chạy Jenkins trong OpenJDK 11 với Project Jigsaw mà không gặp bất kỳ vấn đề tương thích nào.

Chạy lệnh sau để cài đặt OpenJDK 11 trên hệ thống của bạn.

Mã nguồn [Chọn]
$ sudo dnf install java-11-openjdk -y
Sau khi cài đặt xong, bạn có thể chạy lệnh để kiểm tra xem nó có hoạt động chính xác hay không.

Mã nguồn [Chọn]
$ java -version
Bạn sẽ thấy kết quả sau.


4. Cài đặt Jenkins

Bây giờ bạn đã cài đặt Java, bạn đã sẵn sàng cài đặt Jenkins.

Kho lưu trữ cơ sở AlmaLinux không bao gồm bất kỳ gói nào của Jenkins, vì vậy trước tiên, bạn sẽ cần thêm kho lưu trữ chính thức từ nhà phát triển của nó. Đây là kho lưu trữ duy nhất được phép phân phối phần mềm được đóng gói cho một bản phân phối được hỗ trợ cụ thể. Trong trường hợp này, đó là kho lưu trữ riêng của nhà phát triển Jenkins cho Redhat và các dẫn xuất của nó.

Chạy lệnh sau để nhập khóa Jenkins vào hệ thống. Khóa này là một cơ chế bảo mật được sử dụng để xác nhận tính xác thực của một gói phần mềm.

Mã nguồn [Chọn]
$ sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
Chạy lệnh sau để thêm kho lưu trữ Jenkins vào hệ thống.

Mã nguồn [Chọn]
$ cd /etc/yum.repos.d/ && curl -O https://pkg.jenkins.io/redhat-stable/jenkins.repo
Chạy lệnh sudo dnf makecache để làm mới bộ đệm siêu dữ liệu của tất cả các kho lưu trữ đã bật để đảm bảo rằng dữ liệu kho lưu trữ đĩa cục bộ được cập nhật. Điều này có thể được sử dụng khi cập nhật / cài đặt gói hoặc nếu siêu dữ liệu đã bị hỏng.

Mã nguồn [Chọn]
$ sudo dnf makecache

Chạy lệnh sau để xác minh xem kho lưu trữ Jenkins đã được thêm vào hệ thống của bạn hay chưa. Đây là một cách để kiểm tra danh sách kho lưu trữ hiện tại, nó chỉ ra cho người quản lý gói biết những kho lưu trữ nào đã được kích hoạt. Nói cách khác, đó là một cách để xem kho lưu trữ nào hiện đang được theo dõi bởi dnf.

Mã nguồn [Chọn]
$ sudo dnf repolist

Chạy lệnh sau để cài đặt Jenkins trên hệ thống của bạn.

Mã nguồn [Chọn]
$ dnf install -y jenkins
Sau khi cài đặt xong lệnh, hãy chạy lệnh sau để khởi động dịch vụ Jenkins.

Mã nguồn [Chọn]
$ sudo systemctl start jenkins
Chạy lệnh sau để kiểm tra trạng thái của dịch vụ Jenkins.

Mã nguồn [Chọn]
$ sudo systemctl status jenkins
Jenkins là một dịch vụ tích hợp liên tục có thể giám sát việc thực thi các công việc lặp đi lặp lại, chẳng hạn như xây dựng một dự án phần mềm hoặc các công việc do cron điều hành. Theo dõi trạng thái của Jenkins có thể giúp mình biết liệu chúng có đang hoạt động như mong đợi hay không. Kiến thức này có thể hữu ích trong việc khắc phục sự cố với các công việc mà nó chạy không thành công.

Bạn sẽ thấy kết quả sau.


5. Cấu hình tường lửa của bạn

Jenkins là máy chủ xây dựng tự động của bạn, nó giúp tích hợp và triển khai liên tục cho các dự án của bạn. Jenkins có khả năng cho phép các kết nối SSH thực hiện các bản dựng và tác vụ trên các nút slave từ xa. Tuy nhiên, bạn sẽ cần phải định cấu hình tường lửa của mình để cho phép Jenkins truy cập vào các máy chủ này.

Bạn sẽ cần mở cổng 22 (SSH) và tùy chọn cổng 8080 (máy khách Web) để Jenkins có thể kết nối với các máy chủ từ xa mà ứng dụng của bạn đang sử dụng. Các cổng này thường bị đóng theo mặc định khi sử dụng máy ảo dựa trên đám mây. Nếu bạn đang thiết lập Jenkins trên phần cứng của riêng mình, bạn sẽ cần cho phép các cổng này thông qua tường lửa hoặc bộ định tuyến của mình.

Chạy lệnh sau để mở các cổng này trên tường lửa của bạn.

Mã nguồn [Chọn]
$ sudo firewall-cmd --permanent --zone=public --add-port=22/tcp
Mã nguồn [Chọn]
$ sudo firewall-cmd --permanent --zone=public --add-port=8080/tcp

Chạy lệnh sau để áp dụng các thay đổi của bạn. Lệnh sudo firewalld --reload đảm bảo rằng các quy tắc và cấu hình hiện có hiệu lực sẽ được tải lại nếu có. Điều này có thể hữu ích để áp dụng các thay đổi được thực hiện thông qua các công cụ tường lửa-cmd cho hệ thống đang chạy.

Mã nguồn [Chọn]
$ sudo firewall-cmd --reload

Cuối cùng, chạy lệnh sau để kiểm tra xem các quy tắc đã được thêm thành công hay chưa.

Mã nguồn [Chọn]
$ sudo firewall-cmd --list-all

6. Truy cập giao diện người dùng web Jenkins

Bây giờ bạn đã thiết lập và chạy máy chủ Jenkins nhưng bạn muốn truy cập nó trong trình duyệt web. Bạn có thể truy cập Jenkins bằng cách truy cập địa chỉ IP của nó trên cổng 8080.

Ví dụ: nếu IP của bạn là 192.168.1.100 và cổng mặc định là 8080, hãy điều hướng địa chỉ sau để truy cập Jenkins: 192.168.1.100:8080

Khi bạn cố gắng truy cập giao diện người dùng web Jenkins, bạn sẽ nhận được màn hình Mở khóa Jenkins yêu cầu bạn truy cập /var/lib/jenkins/secrets/initialAdminPassword như hình dưới đây. Đây là dữ liệu được mã hóa chứa mật khẩu bạn đã sử dụng để đăng nhập vào trang tổng quan. Nó lưu trữ InitialAdminPassword ở dạng được mã hóa. Điều này đảm bảo rằng một người dùng độc hại đã giành được quyền truy cập vào máy chủ Jenkins của bạn không có mật khẩu mà bạn đã sử dụng trong lần đăng nhập đầu tiên.


Quay lại cửa sổ dòng lệnh Terminal của bạn, nơi bạn vẫn phải đăng nhập với tư cách người dùng root. Nhập lệnh sau để giải mã nó:

Mã nguồn [Chọn]
$ cat /var/lib/jenkins/secrets/initialAdminPassword
Bạn sẽ thấy đầu ra chứa mật khẩu cho giao diện người dùng web Jenkins.


Sao chép và dán nó vào trình soạn thảo yêu thích của bạn và lưu nó ở đâu đó trên máy của bạn. Bây giờ bạn có thể sử dụng mật khẩu này để truy cập giao diện web Jenkins của mình.


Trên màn hình tiếp theo, chọn cài đặt các plugin được đề xuất. Một plugin không gì khác hơn là một thư mục với một số tập tin trong đó. Khi bạn cài đặt plugin, Jenkins sẽ phát hiện thư mục và bật các tính năng được chỉ định trong tập tin.

Khi bạn cài đặt Jenkins lần đầu tiên, bạn nên chọn tùy chọn để cài đặt các plugin được đề xuất. Tùy chọn này cài đặt tất cả các plugin cần thiết cho thiết lập Jenkins cơ bản. Đừng lo, bạn luôn có thể thay đổi hoặc thêm nhiều plugin sau trong phần Plugin của giao diện web.


Trên màn hình Tạo người dùng quản trị đầu tiên, hãy cung cấp tên người dùng, địa chỉ email, tên đầy đủ và mật khẩu của bạn. Nhấp vào Lưu và tiếp tục chuyển sang màn hình tiếp theo.


Trên màn hình tiếp theo, giữ nguyên giá trị mặc định và nhấp vào Start using Jenkins



Bạn sẽ được đưa đến bảng điều khiển Jenkins, như hình dưới đây. Khi bạn cài đặt Jenkins lần đầu tiên, nó có thể đi kèm với một trang trống làm trang mặc định. Bạn có thể thấy điều này nếu bạn nhìn vào nguồn của trang - không có gì ở đó.

Tuy nhiên, theo thời gian, khi bạn bắt đầu thêm công việc và plugin, trang sẽ biến đổi thành một bảng điều khiển hiển thị thông tin trực quan về các dự án của bạn.


Trong bài đăng này, bạn đã học cách cài đặt và cấu hình máy chủ Jenkins. Tuy nhiên, đây chỉ là sự khởi đầu; nó là một môi trường xây dựng tự động rất có giá trị có thể được tận dụng trong thực tế hàng ngày của bạn. Để lại ý kiến ​​và đề xuất của bạn trong phần bên dưới nếu bạn có bất kỳ phản hồi hoặc câu hỏi nào.