1、優點javascript
一、使用的最小最快的網絡負載,使用python開發,提供簡單的編程接口java
二、通信層使用的zeroMQ,實現是的它肯快速node
salt -master python
master: 4505 發送web
minion: 4506 返回結果 編程
2、 安裝:vim
使用yum 安裝須要epel源bash
master:網絡
yum install salt-masteride
minion
yum install salt-minion
還可使用源碼安裝和pip安裝
3、配置文件
[root@vm2 rpm-gpg]# ls /etc/salt/
minion
# 指定master 位置
#master: salt 指定maste 的主機名或者ip
master: 10.0.2.4
# clusters.
#id: salt - minion 須要惟一,默認不寫是主機名
id: vm3.node.com
minion 配置文件
master:fqdn ,主機名,ip
id:minion的主機名,只要是惟一可以表示minion主機便可
而後依次啓動master 和minion 的slat服務
[root@vm1 yum.repos.d]# /etc/init.d/salt-master start
[root@vm1 yum.repos.d]# /etc/init.d/salt-minion start
*master 上修改配置文件不須要重啓
master啓動後會生成一些文件:
[root@vm1 yum.repos.d]# ls /etc/salt/pki/master/ master.pem master.pub minions(已認證的key) minions_autosign minions_denied minions_pre(待認證的key) minions_rejected(拒絕的key)
待認證
[root@vm1 master]# ls minions_pre/ vm2.node.com [root@vm1 master]# salt-key -L Accepted Keys: vm3.node.com Denied Keys: Unaccepted Keys: vm2.node.com Rejected Keys:
已經認證的
[root@vm1 master]# ls minions
vm3.node.com
[root@vm1 yum.repos.d]# ls /etc/salt/pki/master/master.pem /etc/salt/pki/master/master.pem
[root@vm1 yum.repos.d]# ls /var/cache/salt/master/.root_key /var/cache/salt/master/.root_key
[root@vm1 yum.repos.d]# ls /var/run/salt-master.pid /var/run/salt-master.pid
minion端:
[root@vm2 rpm-gpg]# ls /etc/salt/pki/minion/ minion_master.pub(master 認證之後就會有master的公鑰) minion.pem(私鑰) minion.pub(公鑰)
[root@vm2 rpm-gpg]# ls /etc/salt/ minion (配置文件) minion.d minion_id(默認是minion的主機名) pki
4、命令
salt 讓全部minion執行
salt-key 管理minion 祕鑰
salt-cp 複製
salt-syndic 代理使用
salt-call :
minion 端主動同步master配置文件
一、salt-key
-L 列出全部的key
-a 容許某臺minion
-A 容許全部的minion
-r 拒絕莫一臺
-R 拒絕全部
-d 刪除指定的minion
-D 刪除全部minion
-y 不用輸入 「yes」
查看
[root@vm1 yum.repos.d]# salt-key -L Accepted Keys: Denied Keys: Unaccepted Keys: redir-proxy.core.ignum.cz vm2.node.com
添加全部請求的minion申請
[root@vm1 yum.repos.d]# salt-key -A The following keys are going to be accepted: Unaccepted Keys: redir-proxy.core.ignum.cz vm2.node.com Proceed? [n/Y] y
刪除全部已經經過的申請
[root@vm1 yum.repos.d]# salt-key -D The following keys are going to be deleted: Accepted Keys: redir-proxy.core.ignum.cz vm2.node.com Proceed? [N/y] y
測試全部minion 是否通 , (使用 test模塊中的ping)
[root@vm1 yum.repos.d]# salt "*" test.ping redir-proxy.core.ignum.cz: True vm2.node.com: True
客戶端修改主機名
1.修改主機名
2.修改minion端生成的minion_id (這個文件是自動讀取minion 主機名生成的)
[root@vm2 rpm-gpg]# cat /etc/salt/minion_id vm2.node.com
3.master 刪除已經註冊的已修改的主機名的minion節點key從新認證
練習修改主機名:
minion: [root@vm3 ~]# vim /etc/sysconfig/network [root@vm3 ~]# hostname vm3.node.com [root@vm3 ~]# echo vm3.node.com > /etc/salt/minion_id | 清空這個文件重啓 | rm minion_id pki/ 而後重啓minion [root@vm3 ~]# /etc/init.d/salt-minion restart master端操做:踢出原主機名 [root@vm1 yum.repos.d]# salt-key -d vm5.node.com The following keys are going to be deleted: Accepted Keys: vm5.node.com Proceed? [N/y] y Key for minion vm5.node.com deleted. minion: [root@vm3 ~]# /etc/init.d/salt-minion condrestart master端操做: [root@vm1 yum.repos.d]# salt-key -L Accepted Keys: vm2.node.com Denied Keys: Unaccepted Keys: vm3.node.com Rejected Keys: [root@vm1 yum.repos.d]# salt-key -a vm3.node.com -y The following keys are going to be accepted: Unaccepted Keys: vm3.node.com Key for minion vm3.node.com accepted.
四、 查看minion執行過程
import salt.utils.event event = salt.utils.event.MasterEvent('/var/run/salt/master') for eachevent in event.iter_event(full=True): print eachevent print("--------")
5、執行命令
salt "*" cmd.run "cat /etc/issus"
6、return 你日誌模塊
7、執行分組:
執行:
salt -N sec-web test.ping
八,模塊:
查看模塊
salt 'web-site-15-170.dev.xesv5.com' sys.doc
9、執行腳本
salt "*" cmd.script salt://etc/script/*
腳本文件的編寫
/etc/resolv.conf: #同步到的位置 file.managed: #模塊名稱 - source: salt://xes/hosts/files/resolv.conf #源文件的位置 在salt的相對目錄下 - user: root - group: root - mode: 644
[root@vm1 salt]# cat resove.sls /tmp/resove.conf: file.managed: - source: salt://etc/resolv.conf - user: root - group: root - mode: 600 [root@vm1 salt]# cat top.sls base: '*': - resove
下面的兩個命令均可以將上面的/etc/resolve.conf 同步到 minion 主機的tmp目錄下
[root@vm1 salt]# salt '*' state.highstate
[root@vm1 salt]# salt '*' state.sls resove 這樣指定配置文件執行就不須要top了。
添加定時任務腳本rm-roommsg: #傳輸一個腳本
file.managed: - name: /root/scripts/rm_laoshi_roomsg_img.sh - source: salt://xes/files/rm_laoshi_roomsg_img.sh - mode: 755 - user: root - group: root cron.present: #定義一個定時任務,每兩天執行一次這個腳本
- name: /bin/bash rm_laoshi_roommsg_img.sh >/dev/null 2>&1 - identifier: del laoshi roommsg 2 days ago img file - user: root - minute: '0' - hour: '1' - daymonth: "*/2" - require: - file: rm-roommsg
獲得的結果
# SALT_CRON_IDENTIFIER:del laoshi roommsg 2 days ago img file 0 1 */2 * * /bin/bash rm_laoshi_roommsg_img.sh >/dev/null 2>&1
identifier: 參數決定了是新增任務仍是修改任務,若是不應這個參數後面的值,而只修改name 或者minute 等值,則他會查找 crontab中有沒有相同的 indentifier 的任務,若是有則修改,沒有則添加