CentOs 下安裝,master&minion
1.添加epel源
# yum -y install epel
2.安裝 master
# yum -y install salt-master
# salt-master的配置文件是/etc/salt/master
配置:
interface: 0.0.0.0 #綁定到本地的0.0.0.0地址
publish_port: 4505 #管理端口,命令發送
user: root #運行salt進程的用戶
worker_threads: 5 #salt運行線程數,線程越多處理速度越快,不要超過cpu個數
ret_port: 4506 #執行結果返回端口
pidfile: /var/run/salt-master.pid #pid文件位置
log_file: /var/log/salt/master #日誌文件地址
auto_accept: False #自動接收minion的key
# 配置開機啓動
# chkconfig salt-master on
# 啓動服務
# service salt-master start
3.被管理端安裝minion
# yum -y install salt-minion
# salt-minion的配置文件是/etc/salt/minion
# 指定master(salt服務端,主機名或者IP)
master: master
master_port: 4506
user: root
id: slave
acceptance_wait_time: 10
log_file: /var/log/salt/minion
# 配置開機啓動
# chkconfig salt-monion
# 啓動salt minion
# service salt-minion start
############## 實戰1 salt minion 主機名修改 ############
1. salt master 將要修改主機名的機器 -d 掉
2. slat minion 刪除key 修改主機名 重啓服務
3. slat master 重新認證
############## 實戰2 salt master 遷移 #################
1. 打包salt pki路徑
2. 新salt master 服務器解包 pki 啓動
3. 舊salt master 更新 salt minion 配置(服務端地址)
# 插件
Grains -- 靜態採集
Grains 是saltstack組件中非常重要之一,在配置部署時候回經常使用,Grains記錄minion的靜態信息,比如常用屬性,CPU、內存、磁盤、網絡信息等。
Minions的Grains信息是Minion啓動時採集彙報給Master的
Grains是以 key value形式存儲的數據庫,可以看做Host的元數據(metadata)
Grains保存着收集到的客戶端的詳細信息
# 如果slave機器數據變化,grains就過期了
# 在生產環境中需要自定義Grains,可以通過
Minion配置文件
Grains相關模塊定義
Python腳本定義
# Pillar -- 加密數據
在SaltStack中主要的作用是存儲和定義配置管理中需要的一些數據,比如軟件版本號,用戶賬號密碼等,保證敏感數據不被其他minion看到
# Grains 與 Pillar 對比
類型 數據採集方式 應用場景 定義位置
Grains 靜態 minion啓動時收集 數據查詢 目標選擇 配置管理 minion
Pillar 動態 master進行自定義 目標選擇 配置管理 敏感數據 master
# Python API 調用SaltStack
# 介紹:
/usr/bin/salt默認使用的接口是LocalClient,該接口只能在salt master上使用
[root@master ~]$python
Python 2.7.5 (default, Jul 13 2018, 13:06:57)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import salt.client
>>> local = salt.client.LocalClient() #<salt.client.LocalClient object at 0x7f886dbdd850>
>>> local.cmd('*','cmd.run',['hostname'])#向所有minion發送命令
{'slave': 'slave'}
逐條返回結果,local.cmd_iter()
>>> ret=local.cmd_iter('*','test.ping')
>>> ret
<generator object cmd_iter at 0x7f886d455c80>
>>> for i in ret:
... print i
...
{'slave': {'retcode': 0, 'ret': True}}
菲波那切數列
>>> local.cmd('*','test.fib',[10])
{'slave': [[0, 1, 1, 2, 3, 5, 8], 2.1457672119140625e-06]}
檢查minion服務器信息
>>> local.cmd('*','cmd.run',['hostname'])
{'slave': 'slave'}
>>> local.cmd('*','cmd.run',['ifconfig'])
>>> local.cmd('*','cmd.run',['crontab -l'])
>>> local.cmd('*','cmd.run',['df -h'])
啓停minion的服務,如nginx
>>> local.cmd('*','service.stop',['nginx'])
{'slave': True}
>>> local.cmd('*','service.status',['nginx'])
{'slave': False}
>>> local.cmd('*','service.start',['nginx'])
{'slave': True}
# SaltStack proxy
# Syndic