SaltStack 是 Python 開發的分散式配置管理與遠端執行平台。FreeBSD 8.2 官方倉庫版本過舊,需透過 Ports 系統從原始碼編譯安裝最新版,並自動處理龐大依賴鏈。本文記錄完整安裝與 Master 配置流程。
# 備份舊 ports
mv /usr/ports /usr/ports.old
# 下載最新 ports 壓縮包並解壓 (約 20-30 分鐘)
cd /usr
portsnap fetch extract
# 後續更新增量
portsnap fetch update
cd /usr/ports/sysutils/py-salt
make install clean
依賴衝突處理:編譯過程提示 libtool 版本過舊 (需 ≥ 2.4)
cd /usr/ports/devel/libtool
make install clean FORCE_PKG_REGISTER=yes
# 強制覆蓋系統 libtool,滿足 Salt 依賴
重新編譯 Salt:
cd /usr/ports/sysutils/py-salt
make reinstall clean
# 複製範本
cp /usr/local/etc/salt/master.sample /usr/local/etc/salt/master
# 編輯關鍵設定
vim /usr/local/etc/salt/master
核心配置項**:
interface: 0.0.0.0 # 監聽所有介面
publish_port: 4505 # 發布埠
ret_port: 4506 # 返回埠
user: root # 執行身份 (生產建議專用使用者)
log_file: /var/log/salt/master
log_level: info
file_roots:
base:
- /usr/local/etc/salt/states
pillar_roots:
base:
- /usr/local/etc/salt/pillars
auto_accept: True # 自動接受金鑰 (僅測試環境)
mkdir -p /usr/local/etc/salt/states /usr/local/etc/salt/pillars
mkdir -p /var/log/salt /var/cache/salt /var/run/salt
# 啟動服務
/usr/local/bin/salt-master -d
# 或 rc.d 腳本
echo 'salt_master_enable="YES"' >> /etc/rc.conf
service salt_master start
salt-key -L
# Accepted Keys: (none)
# Unaccepted Keys: (none)
# Rejected Keys: (none)
salt-master --version
# salt 2014.x.x (版本依 ports 而定)
/usr/local/etc/rc.d/salt_master 管理服務# pkg 安裝 (二進制套件,快速)
pkg install py39-salt
# 或使用配置管理工具引導
# Ansible: community.general.salt_master
# Salt 自身: salt-ssh (無需 Minion 預裝)
Ports 系統雖編譯耗時,但能精確控制編譯選項、優化指令集、解決依賴版本衝突,是 FreeBSD 生產環境部署複雜 Python 應用的標準路徑。