安裝
## ubuntu16安裝python3版本(python3.5及以上)
wget -O - https://repo.saltstack.com/py3/ubuntu/16.04/amd64/latest/SALTSTACK-GPG-KEY.pub | sudo apt-key add -
deb http://repo.saltstack.com/py3/ubuntu/16.04/amd64/latest xenial main
## centos7
yum install -y http://repo.saltstack.com/py3/redhat/salt-py3-repo-2018.3-1.el7.noarch.rpm -y
## python3.5.2安裝
pip install salt
C:\salt\conf ## master配置檔案目錄
C:\salt\conf\pki\master ## 認證資訊
salt-key --auto-create ## 建立公鑰
salt-master ## 運作salt-master程式
salt-ssh
## 在不安裝salt-minion的情況下通過ssh執行salt指令
/etc/salt/roster
salt-master (控制中心)
##yum install salt-master
## 4505發送指令,監聽資訊
## 4506建立一對一連接配接,異步處理
## /etc/salt/master
#hash_type: sha512 證書認證方式
## 秘鑰對存放路徑
/etc/salt/pki/master/master.pub
/etc/salt/pki/master/master.pem
salt-minion(被控制端)
## yum install salt-minion
## /etc/salt/minion
#master:
- [master1] # 多master管理,需要使用同一對公鑰和秘鑰master.pub、master.pem
- [master2]
#hash_type: sha512
#id: [minion id]
檢視minion清單
salt-key -L # 檢視所有清單
salt-key -A # 接受所有Unaccepted keys
salt-key -a [salt-minion id] # 手動添加證書認證
salt-key -D # 删除所有證書
salt-key -d [salt-minion id] # 删除單個
saltstack指令行遠端執行指令
salt -N "group1" cmd.run "ifconfig"
# -E 以正則比對主機ID
# -L 以逗号分隔
# -N nodegroups
master配置檔案中配置好組名和對應主機ID
group1: "[email protected],id2" #L表示後面的ID以清單形式分隔,分隔符","
# -C 多條件比對,not,and,or
# -S 根據主機IP位址或IP子網進行比對
常用指令
## cmd.run(cmd ,cwd ,...)
salt "*" cmd.run "ifconfig"
## cp子產品
1、salt-cp指令
salt-cp “*” cp.get_file [localPath] [remotePath]
2、Salt 檔案伺服器
salt://表示 檔案伺服器的base環境。
Salt檔案伺服器/etc/salt/master配置檔案中的flie_roots選項管理。
3、cp.get_file,用于minion從master下載下傳一個檔案,如果目錄不存在,cp.get_file是不會主動建立目錄的,makedirs=True建立目錄
salt "*" cp.get_file salt://tmp/python1.py /tmp/dir1/ makedirs=True
4、cp.get_dir # 在master端上擷取minion端的檔案
5、cp.push # 從minion端推送檔案到master
cp.push功能預設不開啟,需要修改配置檔案中的file_recv 環境,預設為False
上傳的檔案存放在master端的 /var/cache/salt/master/minions/<minion_id>/files/ 目錄下
file_recv: True
file_recv_max_size: # 允許最大上傳檔案大小,機關MB
## file子產品
1、file.copy
salt '*' file.copy /path/to/src_dir /path/to/dst_dir recurse=True remove_existing=True
2、file.move
salt '*' file.move /path/to/src /path/to/dst
3、file.remove
salt '*' file.rename /path/to/src /path/to/dst
4、file.chown
salt '*' file.chown /etc/passwd root root
5、file.mkdir
salt '*' file.mkdir /opt/jetty/context
6、file.file_exists
salt '*' file.file_exists /etc/passwd
7、file.stats
salt '*' file.stats /etc/passwd
PYTHON API(python3版本2018.3)
import salt.client
client = salt.client.LocalClient()
## cmd(tgt, fun, arg=(), timeout=None, tgt_type=u'glob', ret=u'', jid=u'', full_return=False, kwarg=None, **kwargs)
tgt: minion主機,預設是glob。由tgt_type選項修改
fun: 子產品
arg: 要傳遞給遠端函數的參數清單,["arg1","arg2"]傳入兩個參數。
timeout: 逾時
tgt_type: glob,list,nodegroup,pcre
result = client.cmd("group1" ,"cmd.run" ,arg = ["ls -la"] ,tgt_type = "nodegroup")
full_return:完整傳回,包括退出代碼和其他作業中繼資料。僅輸出作業傳回(預設)
>>> client.cmd("10.1.1.98", "test.ping", full_return=True)
{'10.1.1.98': {'jid': '20190218165857946315', 'ret': True, 'retcode': 0}}
grains元件,收集被控主機的基本資訊
## 擷取主機的grains資訊。
salt "*" grains.ls ## 列出grains所有的項
salt "*" grains.item os ## 檢視os項的資訊
## 定義grains資料
/etc/salt/minion
default_include: minion.d/*.conf
自定義鍵值