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).
Dưới đây là các máy chủ Rocky Linux chi tiết mà chúng ta sẽ sử dụng:
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.
Bây giờ hãy thêm cấu hình sau vào tệp.
Khi bạn hoàn tất, hãy lưu và đóng tệp.
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.
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.
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.
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.
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".
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.
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.
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.
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.
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.
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".
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.
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".
Để 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.
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".
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.
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.
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.
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.
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.
Kiểm tra gói bash bằng lệnh salt bên dưới.
Cài đặt gói có tên chrony trên tất cả các máy chủ minion.
Kiểm tra danh sách các kho lưu trữ trên tất cả các minion máy chủ.
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ộ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.
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.
Kiểm tra danh sách các dịch vụ đang chạy trên tất cả các máy chủ.
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ủ.
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.5 và các gói PHP v8.0.
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.
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.
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.
Để á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".
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".
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
Chỉnh sửa tệp /etc/hosts bằng lệnh sau.
Mã:
sudo nano /etc/hosts
Mã:
master 192.168.5.10
minion1 192.168.5.15
minion2 192.168.5.16
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
Mã:
interface: 192.168.5.10
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
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
Mã:
master: 192.168.5.10
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
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
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'
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
Mã:
salt '*' pkg.show bash
Mã:
salt '*' pkg.install chrony
Mã:
salt '*' pkg.list_repos
Mã:
salt '*' pkg.list_upgrades
Kiểm tra xem dịch vụ chronyd có khả dụng hay không.
Mã:
salt '*' service.available chronyd
Mã:
salt '*' service.enabled chronyd
Mã:
salt '*' service.get_running
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.5 và cá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'
Mã:
mkdir -p /srv/salt/lemp
nano /srv/salt/lemp/init.sls
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
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