Cách thiết lập SaltStack Master và Minion trên Rocky Linux

theanh

Administrator
Nhân viên
Salt hoặc Saltstack là một khuôn khổ tự động hóa CNTT nguồn mở cho phép quản trị viên thực hiện lệnh từ xa trực tiếp tới nhiều máy. Salt chủ yếu được viết bằng Python và được thiết kế với kiến trúc Master và Minion. SaltStack master là bộ điều khiển trung tâm của quản lý cấu hình Salt và Minion là các máy chủ do SaltStack Master quản lý hoặc bạn đặt tên cho minion là máy chủ mục tiêu.

SaltStack master chạy trên hệ điều hành Linux theo mặc định, nhưng minion có thể là bất kỳ hệ điều hành nào. Saltstack là quản lý cấu hình mang tính cách mạng cho việc triển khai tự động hóa, thực thi tác vụ từ xa và cơ sở hạ tầng dưới dạng mã. SaltStack cũng có thể được sử dụng để cung cấp nhiều máy chủ cơ sở hạ tầng, bao gồm máy chủ vật lý và ảo, cũng như đám mây.

Bằng cách làm theo hướng dẫn này, bạn sẽ cài đặt SaltStack Master và Minion trên các máy chủ Rocky Linux. Ngoài ra, bạn sẽ học cách sử dụng Salt để chạy các lệnh tùy ý từ SaltStack Master trên Salt Minion. Và cuối cùng, bạn cũng sẽ học cách tạo trạng thái Salt để cài đặt LEMP Stack cơ bản (Linux, Nginx, MariaDB và PHP-FPM).

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

Để hoàn thành hướng dẫn này, bạn sẽ cần ít nhất hai hoặc nhiều máy chủ Rocky Linux. Tất cả các máy chủ đó phải có người dùng không phải root với quyền root/quản trị viên.

Thiết lập tệp /etc/hosts​

Trong ví dụ này, chúng tôi sẽ sử dụng ba máy chủ Rocky Linux để cài đặt SaltStack. Một máy chủ sẽ được sử dụng làm Master và hai máy chủ sẽ được sử dụng làm minion.

Dưới đây là các máy chủ Rocky Linux chi tiết mà chúng ta sẽ sử dụng:
Mã:
Tên máy chủ Địa chỉ IP được sử dụng làm
------------------------------------------------
master 192.168.5.10 SaltStack Master
minion1 192.168.5.15 SaltStack Minion
minion2 192.168.5.16 SaltStack Minion
Trước khi cài đặt các gói SaltStack, bạn sẽ thiết lập tệp /etc/hosts trên mọi máy chủ Linux.

Chỉnh sửa tệp /etc/hosts bằng lệnh sau.
Mã:
sudo nano /etc/hosts
Bây giờ hãy thêm cấu hình sau vào tệp.
Mã:
master 192.168.5.10
minion1 192.168.5.15
minion2 192.168.5.16
Khi bạn hoàn tất, hãy lưu và đóng tệp.

Thêm kho lưu trữ SaltStack​

Các gói SaltStack có sẵn trên kho lưu trữ chính thức của nó. Bạn sẽ thêm kho lưu trữ SaltStack và khóa GPG vào tất cả các máy chủ Rocky Linux của mình.

Chạy lệnh sau để nhập khóa GPG cho kho lưu trữ SaltStack. Sau đó, thêm kho lưu trữ SaltStack. Trong ví dụ này, bạn sẽ thêm phiên bản mới nhất của kho lưu trữ SaltStack.
Mã:
sudo rpm --import https://repo.saltproject.io/py3/redhat/8/x86_64/latest/SALTSTACK-GPG-KEY.pub
curl -fsSL https://repo.saltproject.io/py3/redhat/8/x86_64/latest.repo | sudo tee /etc/yum.repos.d/salt.repo


Bây giờ hãy chạy lệnh sau để kiểm tra và xác minh danh sách các kho lưu trữ trên máy chủ Rocky Linux của bạn. Sau đó, cập nhật và tạo siêu dữ liệu mới cho tất cả các kho lưu trữ khả dụng.

Bạn sẽ thấy kho lưu trữ SaltStack được thêm vào máy chủ Rocky Linux.
Mã:
sudo dnf repolist
sudo dnf makecache

Cài đặt SaltStack Master​

Bạn đã thêm kho lưu trữ SaltStack vào tất cả các máy chủ Rocky Linux của mình. Bây giờ, bạn sẽ cài đặt và thiết lập SaltStack Master trên máy chủ "master".

Trước tiên, hãy chạy lệnh DNF bên dưới để cài đặt gói "salt-master". Gói này là gói chính để thiết lập SaltStack Master.

Nhập Y để xác nhận cài đặt và nhấn ENTER, quá trình cài đặt sẽ bắt đầu.
Mã:
sudo dnf install salt-master


Sau khi cài đặt hoàn tất, hãy chỉnh sửa cấu hình SaltStack Master "/etc/salt/master" bằng lệnh bên dưới.
Mã:
sudo nano /etc/salt/master
Bỏ ghi chú tùy chọn "interface:" và thay đổi địa chỉ IP bằng địa chỉ IP máy chủ "master" của bạn. Trong ví dụ này, địa chỉ IP của SaltStack Master là "192.168.5.10".
Mã:
interface: 192.168.5.10
Lưu và đóng tệp khi bạn hoàn tất.

Tiếp theo, bật dịch vụ "salt-master" để chạy khi khởi động hệ thống và khởi động dịch vụ "salt-master". Sau đó, kiểm tra và xác minh dịch vụ "salt-master".

Bạn sẽ thấy dịch vụ "salt-master" được bật và đang chạy.
Mã:
sudo systemctl enable salt-master && sudo systemctl start salt-master
sudo systemctl status salt-master


Trên SaltStack Master, bạn sẽ cần mở các cổng TCP 4505 và 4506, các cổng này sẽ được SaltStack Minions kết nối với SaltStack Master sử dụng.

Chạy lệnh "firewall-cmd" sau đây để mở các cổng 4505 và 4506. Sau đó, tải lại Firewalld.
Mã:
sudo firewall-cmd --zone=public --permanent --add-port={4505,4506}/tcp
sudo firewall-cmd --reload
Cuối cùng, hãy kiểm tra và xác minh các quy tắc Firewalld bằng lệnh sau. Và bạn sẽ có được cổng 4505 và 4506 khả dụng trên Firewalld.
Mã:
sudo firewall-cmd --list-all

Cài đặt SaltStack Minion​

Bạn đã cài đặt và định cấu hình SaltStack Master. Bây giờ bạn sẽ cài đặt và thiết lập SaltStack Minion trên cả hai máy chủ "minion1" và "minion2".

Di chuyển máy chủ "minion1" và minion2", sau đó chạy lệnh DNF bên dưới để cài đặt gói "salt-minion". Gói này phải được cài đặt trên tất cả các máy chủ SaltStack Minion.

Nhập Y để xác nhận cài đặt và nhấn ENTER. Và quá trình cài đặt "salt-minion" sẽ bắt đầu.
Mã:
sudo dnf install salt-minion


Sau khi hoàn tất cài đặt, hãy chỉnh sửa tệp cấu hình SaltStack Minion "/etc/salt/minion" bằng lệnh bên dưới.
Mã:
sudo nano /etc/salt/minion
Bỏ chú thích tùy chọn "master:" và thêm địa chỉ IP hoặc tên máy chủ của SaltStack Master. Trong ví dụ này, SaltStack master đang chạy trên địa chỉ IP của máy chủ "192.168.5.10".
Mã:
master: 192.168.5.10
Lưu và đóng tệp khi bạn hoàn tất.

Tiếp theo, chạy lệnh sau để bật dịch vụ "salt-minion" và khởi động dịch vụ. Sau đó, kiểm tra và xác minh dịch vụ "salt-minion".

Bạn sẽ thấy dịch vụ "salt-minion" được bật và sẽ tự động chạy khi khởi động hệ thống. Và trạng thái hiện tại của dịch vụ "salt-minion" đang chạy.
Mã:
sudo systemctl enable salt-minion && sudo systemctl start salt-minion
sudo systemctl status salt-minion

Thêm máy chủ Minion vào SaltStack Master​

Bây giờ bạn đã hoàn tất cài đặt SaltStack Master trên máy chủ "master" và SaltStack Minion trên máy chủ "minion1" và "minion2". Để thêm SaltStack Minion vào SaltStack Master, bạn sẽ chấp nhận dấu vân tay khóa của cả máy chủ "minion1" và "minion2" từ máy chủ "master".

Quay lại máy chủ "master" và chạy lệnh salt bên dưới để kiểm tra tất cả dấu vân tay khóa khả dụng. Bạn sẽ thấy có hai "Unaccepted Keys" từ máy chủ "minion1" và "minion2".
Mã:
salt-key --finger-all


Để chấp nhận dấu vân tay khóa của máy chủ "minion1" và "minion2", hãy chạy lệnh salt-key bên dưới. Và bạn sẽ được nhắc chấp nhận dấu vân tay khóa, Nhập Y để xác nhận và thêm khóa.
Mã:
salt-key -a minion1
salt-key -a minion2
Tiếp theo, hãy kiểm tra và xác minh tất cả dấu vân tay khóa khả dụng bằng lệnh bên dưới. Và bạn sẽ nhận được cả hai khóa dấu vân tay của máy chủ "minion1" và "minion2" được thêm vào máy chủ SaltStack chính. Cả hai dấu vân tay khóa đều có trong phần "Khóa được chấp nhận".
Mã:
salt-key --finger-all


Sau khi thêm máy chủ SaltStack Minion vào SaltStack Master, hãy chạy lệnh salt sau trên máy chủ "master" để kiểm tra và ping máy chủ "minion1" và "minion2".

Nếu cấu hình của bạn thành công, bạn sẽ thấy thông báo đầu ra là "True", nghĩa là máy chủ SaltStack Minion đã được thêm vào SaltStack Master.
Mã:
salt minion1 test.ping
salt minion2 test.ping
Bạn cũng có thể sử dụng dấu hoa thị '*' để nhắm mục tiêu đến tất cả máy chủ SaltStack Minion.
Mã:
salt '*' test.ping


Bạn cũng có thể kiểm tra phiên bản SaltStack hiện tại được cài đặt trên cả máy chủ "minion1" và "minion2" bằng lệnh bên dưới.

Tại thời điểm viết bài này, phiên bản mới nhất của phần mềm SaltStack là v3004.2, được cài đặt trên tất cả các máy chủ SaltStack.
Mã:
salt '*' test.version

Chạy lệnh tùy ý với SaltStack​

Saltstack cho phép bạn thực thi các lệnh tùy ý từ máy chủ chính đến tất cả các máy chủ minion. Để thực hiện điều đó, bạn sẽ cần sử dụng mô-đun thực thi do Saltstack cung cấp.

Chạy lệnh salt bên dưới từ máy chủ chính. Lệnh này sẽ thực thi lệnh uname -a trên tất cả các máy chủ minion và lệnh này được thực thi thông qua mô-đun cmd.
Mã:
salt '*' cmd.run 'uname -a'
Như bạn có thể thấy trên ảnh chụp màn hình sau, mỗi máy chủ minion trả về đầu ra của lệnh uname -a.



Một ví dụ khác là nơi bạn có thể sử dụng mô-đun pkg để quản lý cài đặt gói, kho lưu trữ và mọi thứ liên quan đến quản lý gói. Điều này hỗ trợ nhiều bản phân phối Linux bao gồm các bản phân phối dựa trên RHEL như CentOS và Rocky Linux, cũng như các hệ thống dựa trên Debian như Ubuntu.

Làm mới các kho lưu trữ khả dụng trên tất cả các máy chủ minion.
Mã:
salt '*' pkg.refresh_db
Kiểm tra gói bash bằng lệnh salt bên dưới.
Mã:
salt '*' pkg.show bash
Cài đặt gói có tên chrony trên tất cả các máy chủ minion.
Mã:
salt '*' pkg.install chrony
Kiểm tra danh sách các kho lưu trữ trên tất cả các minion máy chủ.
Mã:
salt '*' pkg.list_repos
Kiểm tra danh sách các bản cập nhật gói khả dụng trên tất cả các máy chủ minion.
Mã:
salt '*' pkg.list_upgrades
Một ví dụ tuyệt vời khác ở đây là mô-đun dịch vụ cho phép bạn để quản lý các dịch vụ trên nhiều bản phân phối Linux, bao gồm cả bản phân phối với systemd.

Kiểm tra xem dịch vụ chronyd có khả dụng hay không.
Mã:
salt '*' service.available chronyd
Cho phép dịch vụ chronyd khởi động khi hệ thống khởi động trên tất cả các máy chủ minion.
Mã:
salt '*' service.enabled chronyd
Kiểm tra danh sách các dịch vụ đang chạy trên tất cả các máy chủ.
Mã:
salt '*' service.get_running
Kiểm tra lệnh ExecStart= cho mọi dịch vụ khả dụng trên tất cả các máy chủ.
Mã:
salt '*' service.execs

Cài đặt LEMP Stack với SaltStack State​

Bạn đã học lệnh salt cơ bản để chạy một lệnh tùy ý trên tất cả các máy chủ SaltStack Minion. Bây giờ bạn sẽ tạo một tệp trạng thái SaltStack mới để cài đặt LEMP Stack cơ bản (Linux, Nginx, MariaDB và PHP-FPM). Đây là nơi bạn có thể sử dụng SaltStack làm quản lý cấu hình cho cơ sở hạ tầng máy chủ và triển khai ứng dụng tự động của mình.

Kho lưu trữ Rocky Linux cung cấp nhiều phiên bản của các gói Nginx, MariaDB và PHP-FPM. Để cài đặt phiên bản mới nhất của các gói đó, bạn sẽ cần bật nó thông qua mô-đun trình quản lý gói DNF.

Tại thời điểm viết bài này, không có mô hình SaltStack nào tương đương với lệnh "dnf module" cho bản phân phối dựa trên RHEL. Vì vậy, bạn sẽ bật mô-đun theo cách thủ công thông qua lệnh tùy ý SaltStack.

Chạy lệnh sau để bật mô-đun cho Nginx v1.20, MariaDB v10.5các gói PHP v8.0.
Mã:
salt '*' cmd.run 'sudo dnf module enable nginx:1.20 -y'
salt '*' cmd.run 'sudo dnf module enable mariadb:10.5 -y'
salt '*' cmd.run 'sudo dnf module enable php:8.0 -y'
Bây giờ hãy tạo một thư mục quản lý cấu hình trung tâm mới "/srv/salt/lemp" và tạo một tệp mới "init.sls" bằng lệnh bên dưới.
Mã:
mkdir -p /srv/salt/lemp
nano /srv/salt/lemp/init.sls
Thêm cấu hình sau vào tệp. Trong ví dụ này, chúng tôi sẽ tạo trạng thái Salt có tên "lemp" để cài đặt các gói LEMP Stack. Ngoài ra, chúng tôi sẽ đảm bảo tất cả các dịch vụ LEMP Stack (Nginx, MariaDB và PHP-FPM) được bật và chạy trên tất cả các máy chủ SaltStack Minion.
Mã:
lemp_stack:
pkg.installed:
 - pkgs:
 - nginx
 - mariadb-server
 - php
 - php-fpm

nginx:
 service.running:
 - enable: True
 - reload: True

mariadb:
 service.running:
 - enable: True
 - reload: True

php-fpm:
 service.running:
 - enable: True
 - reload: True
Khi bạn hoàn tất, hãy lưu và đóng tệp.

Bây giờ để xác minh cấu hình trạng thái Salt của bạn, hãy sử dụng lệnh salt bên dưới. Lệnh này sẽ kiểm tra và xác minh cấu hình trạng thái Salt của bạn so với máy chủ SaltStack Minion.
Mã:
sudo salt * state.show_sls lemp


Để áp dụng trạng thái Salt cho tất cả máy chủ SaltStack Minion, bạn có thể sử dụng lệnh salt bên dưới. Bây giờ LEMP Stack sẽ được tự động cài đặt trên máy chủ "minion1" và "minion2".
Mã:
sudo salt '*' state.apply lemp
Trong ảnh chụp màn hình sau, bạn có thể thấy LEMP Stack được cài đặt trên cả máy chủ "minion1" và "minion2".


Kết luận​

Trong hướng dẫn này, bạn đã hoàn tất cài đặt SaltStack Master và SaltStack Minion trên máy chủ Rocky Linux. Bạn cũng đã học cách sử dụng cơ bản lệnh salt để chạy lệnh tùy ý trên SaltStack Minion. Cuối cùng, bạn cũng đã học cách tạo cấu hình trạng thái Salt để cài đặt LEMP Stack tự động và thiết lập SaltStack làm quản lý cấu hình cho các triển khai ứng dụng.
 
Back
Bên trên