自定義salt模塊
mkdir /srv/salt/_modules
cd /srv/salt/_modules
vim my_disk.py
1 #! /usr/bin/env python
2
3 def df():
4 return __salt__['cmd.run']('df -h')
salt '*' saltutil.sync_modules
使用模塊:salt ‘*’ my_disk.df
salt-ssh
salt-ssh模塊可以使salt-master不通過minion,而是直接通過ssh控制,就是說我們就算關閉了minion上面的salt-minion服務,在master端也可以使用salt去控制它。
1、在server1(master)上面安裝salt-ssh
yum install salt-ssh -y
2、在master上編輯salt-ssh的配置文件/etc/salt/roster
在這個文件中定義需要使用salt-ssh控制的minion的信息,如:用戶名,密碼等
vim /etc/salt/roster
寫入:
server2:
host:172.25.66.2
user:root
passwd:redhat
server3:
host:172.25.66.3
user:root
passwd:redhat
3、關閉server2與server3上的salt-minion服務
4、將配置文件中之前設置的數據庫支持註釋掉
5、在master中使用salt-ssh測試使用可以與server2,server3通訊
salt-ssh ‘server2’ test.ping -i
salt-ssh ‘server2’ cmd.run df
cp模塊
cp模塊:用來遠程複製文件、目錄,以及下載URL資源等等。
cp模塊是基於base環境的,即salt://表示base環境/srv/salt/,我們可以進行文件服務器多環境配置,在salt-master的配置文件中的file_roots下添加其他文件服務器環境
1、將master中的目錄複製到minion的指定位置
salt ‘’ cp.get_dir salt://httpd /root
將master端的/srv/salt/httpd目錄複製到所有minion的/root目錄下
2、將master中的文件複製到minion的指定位置
salt '’ cp.get_file salt://etc/passwd /root/passwd
cp.get_file gzip格式:對於大文件傳輸,cp.get_file支持gzip壓縮格式。因爲gzip是CPU密集型的工具,因此cp.get_file開啓gzip是適用於高壓縮率的情況下,如JSON或者YAML文件。
salt ‘*’ cp.get_file slat://etc/httpd/conf/httpd.conf /root/httpd.conf gzip=5
gzip後的數字表示壓縮比,範圍在1-9之間,1表示最小壓縮比,9爲最大壓縮比。換句話說,gzip=1情況下, 消耗的CPU小;gzip=9時,消耗的CPU則更多。
cp.get_file makedirs=True:cp.get_file過程中,如果目錄不存在,cp.get_file是不會主動創建目錄的,如果要做到這點,可以使用makedirs=True 參數。
syndic模塊
syndic可以爲master提供一個代理,該代理不用獲得master所控制minion的密鑰就可以直接對master的minion進行控制,這個代理被稱爲Topmaster,我們使用server4來充當這個代理
1、在master中刪除server4這個minion
2、在master中下載salt-syndic
3、編輯master配置文件,定位到syndic處
vim /etc/salt/master
862 syndic_master: 172.25.66.4
4、關閉server4上的salt-minion服務,並禁其開機自啓
5、在server4上安裝salt-master服務
6、編輯server4上的master配置文件,定位到syndic
vim /etc/salt/master
857 order_masters: True
7、重啓server1上的salt-master,開啓server1上的salt-syndic服務,然後到server4中接收server1的密鑰
9、在server4中使用salt控制server1的所有minion