SaltStack: Tổng quan và Cài đặt
SaltStack là một nền tảng quản lý cấu hình và điều khiển từ xa mạnh mẽ, được viết bằng Python. Nó cho phép quản lý hàng ngàn máy chủ từ một trung tâm duy nhất, hỗ trợ cả môi trường nhỏ và quy mô lớn. SaltStack sử dụng kiến trúc client-server (C/S) với cấu hình đơn giản, linh hoạt và có khả năng mở rộng cao.
SaltStack hỗ trợ người dùng tùy chỉnh thông qua các module Python và cung cấp API Python để dễ dàng mở rộng chức năng. Nó có thể thực thi lệnh từ xa, quản lý cấu hình hệ thống, và tự động hóa các tác vụ运维.
Trang tài liệu chính thức: http://docs.saltstack.cn/
Môi trường triển khai
Cấu hình máy chủ
| IP/HOST | Chức năng |
|---|---|
| 192.168.0.110 | Master (Quản lý) |
| 192.168.0.101 | Minion (Được quản lý) |
| 192.168.0.102 | Minion (Được quản lý) |
| 192.168.0.103 | Minion (Được quản lý) |
Cấu hình file hosts
# Máy chủ
[root@manager110 ~]# vim /etc/hosts
192.168.0.101 db101
192.168.0.102 db102
192.168.0.103 db103
192.168.0.110 manager110
# Client: Thực hiện trên tất cả các máy 101-103
[root@db101 ~]# vim /etc/hosts
192.168.0.101 db101
192.168.0.102 db102
192.168.0.103 db103
192.168.0.110 manager110
Cổng kết nối
- publish_port: 4505
- ret_port: 4506
Cài đặt SaltStack
Cấu hình repository YUM
# Cả máy chủ và client đều cần thực hiện
rpm --import https://repo.saltproject.io/salt/py3/redhat/7/x86_64/latest/SALTSTACK-GPG-KEY.pub
curl -fsSL https://repo.saltproject.io/salt/py3/redhat/7/x86_64/latest.repo | sudo tee /etc/yum.repos.d/salt.repo
sudo yum clean expire-cache
Cài đặt trên máy chủ Master
sudo yum install salt-master
sudo yum install salt-minion
sudo yum install salt-ssh
sudo yum install salt-syndic
sudo yum install salt-cloud
sudo yum install salt-api
Cài đặt trên máy chủ Minion
sudo yum install salt-minion
Khởi động dịch vụ
# Máy chủ Master
systemctl enable salt-master && systemctl start salt-master
systemctl enable salt-minion && systemctl start salt-minion
systemctl enable salt-syndic && systemctl start salt-syndic
systemctl enable salt-api && systemctl start salt-api
# Máy chủ Minion
systemctl enable salt-minion && systemctl start salt-minion
Cấu hình SaltStack
Tham số cấu hình phổ biến
Master
- interface: Địa chỉ bind, mặc định 0.0.0.0
- publish_port: Cổng phát, mặc định 4505
- ret_port: Cổng trả kết quả, mặc định 4506
- user: Người dùng chạy dịch vụ, mặc định root
- timeout: Thời gian chờ, mặc định 5s
- keep_jobs: Thời gian lưu kết quả, mặc định 24h
- job_cache: Có lưu cache kết quả không, mặc định True
- file_recv: Cho phép minion gửi file lên master, mặc định False
Minion
- master: Địa chỉ master, mặc định salt
- master_port: Cổng kết nối đến master, mặc định 4506
- id: Định danh minion, mặc định hostname
- user: Người dùng chạy dịch vụ, mặc định root
- cache_jobs: Lưu cache kết quả, mặc định False
- tcp_keepalive: Giữ kết nối, mặc định True
Cấu hình Master
# Cấu hình tối giản
[root@manager110 salt]# cat /etc/salt/master
interface: 0.0.0.0
publish_port: 4505
ret_port: 4506
user: root
auto_accept: true
Cấu hình Minion
# Cấu hình trên Master
[root@manager110 ~]# sed -i 's/^#master: salt/master: 192.168.0.110/g' /etc/salt/minion
[root@manager110 ~]# sed -i 's/^#id:/id: manager110/g' /etc/salt/minion
# Cấu hình trên Minion
[root@db101 ~]# sed -i 's/^#master: salt/master: 192.168.0.110/g' /etc/salt/minion
[root@db101 ~]# sed -i 's/^#id:/id: db101/g' /etc/salt/minion
Xác thực giữa Master và Minion
Minion sẽ tạo cặp khóa khi khởi động lần đầu và gửi khóa công khai đến Master. Master cần chấp nhận khóa này bằng lệnh salt-key.
# Xem danh sách khóa
salt-key -L
# Chấp nhận tất cả khóa
salt-key -A -y
Kiểm tra kết nối
# Kiểm tra kết nối
[root@db101 ~]# telnet 192.168.0.110 4505
# Nếu không kết nối được, tắt firewall
systemctl stop firewalld && systemctl disable firewalld
Các lệnh cơ bản
Kiểm tra kết nối
# Kiểm tra một minion
salt db101 test.ping
# Kiểm tra nhiều minion
salt -L "db101,db102,db103" test.ping
# Kiểm tra tất cả minion
salt "*" test.ping
Thực thi lệnh từ xa
# Thực thi lệnh trên tất cả minion
salt '*' cmd.run 'ps -ef | grep python'
Quản lý khóa
# Xem danh sách khóa
salt-key -L
# Chấp nhận khóa
salt-key -a db101 -y
# Xóa khóa
salt-key -d db101
Các lệnh khác
- salt-run: Thực thi runner trên master
- salt-call: Thực thi module trên chính minion
- salt-cp: Sao chép file đến minion
- salt-ssh: Kết nối qua SSH