Saltstack簡介php
Salt 是:html
一個配置管理系統,可以維護預約義狀態的遠程節點(好比,確保指定的報被安裝,指定的服務在運行);python
一個分佈式遠程執行系統,用來在遠程節點(能夠是單個節點,也能夠是任意規則挑選出來的節點)上執行命令和查詢數據;nginx
開發其的目的是爲遠程執行提供最好的解決方案,並使遠程執行變得更好,更快,更簡單。web
Saltstack(中國用戶組 www.saltstack.cn )基於python開發,c/s架構,支持多平臺,比puppet輕量,在遠程執行命令時很是快捷,配置和使用比puppet容易,能實現puppet幾乎全部的功能。正則表達式
Saltstack的優點:vim
有master端和minion端,執行的信息比較穩定,不容易丟失信息,或者出現失聯主機的狀況centos
有封裝好的http-api,咱們能夠直接啓動salt-api就能夠經過http協議進行調用。不須要本身進行第二次的封裝api
基於centos6和centos7的差別,在兩個不一樣的操做系統中安裝saltstack也是不同的。bash
參考網址:
https://docs.saltstack.com/en/latest/topics/installation/rhel.html
Centos6須要先安裝擴展源,而後在進行安裝:
Master端
yum install –y salt-master yum install –y salt-api
Minion端:
yum install -y salt-minion
Saltstack的祕鑰安裝
Master與Minion認證:
minion在第一次啓動時,會在/etc/salt/pki/minion/(該路徑在/etc/salt/minion裏面設置)下自動生成minion.pem(private key)和 minion.pub(public key),而後將 minion.pub發送給master。master在接收到minion的public key後,經過salt-key命令accept minion public key,這樣在master的/etc/salt/pki/master/minions下的將會存放以minion id命名的 public key,而後master就能對minion發送指令了。
salt-key -L 或者salt-key #顯示全部的key salt-key -D #刪除全部認證主機id證書 salt-key -d keys_values -y salt-key -A #接收全部id證書請求 salt-key -a id #接受單個id證書請求
1.-E, --pcre,經過正則表達式進行匹配:
salt -E 'web(9|10)*' test.ping -t 1
2. -L, --list, 主機id進行過濾:
salt -L "*app*" cmd.run "df -h"
3. -G, --grain, 根據被控主機的grains信息進行過濾
salt -G 'role:nginx' cmd.run "ls /export"
4. -I, --pillar, 根據被控主機的pillar信息進行過濾
salt -I 'myname:xiang' test.ping -t 5
5. -S, --ipcidr, 根據minion的ip地址進行匹配
salt -S 192.168.1.1 test.ping
salt -S 192.168.1.0/24 test.ping
salt -S 192.168.0.0/16 test.ping
salt -S 192.0.0.0/8 test.ping
6.檢查客戶端是否掛掉:
salt-run manage.status |head
salt-run manage.down
Saltstack配置文件詳解
Saltstack佔用兩個端口4505和4506
1. 確保master端的4505和4506端口開通
2. Minion的key確實別master接受
3. 經過test.ping 模塊,雙方均可以ping通
配置文件詳解:
http://note.youdao.com/noteshare?id=ef288d8d0abb8f3e8bf6aa5b87bfabd3&sub=wcp1478526434731795
Saltstack的幾種模塊介紹
在二次開發中開發的模塊有2個,以下(Runner、Module):
Runner 模塊 在master端執行的 salt-run
Module 模塊 經過master同步到minion端, 在minion執行
salt-call saltutil.sync_modules salt-call saltutil.sync_all
包括:
beacons:
clouds: engines: grains: log_handlers: modules:
output: proxymodules: renderers: returners: sdb:
states: utils:
Grins 模塊 記錄minion的屬性key:value
Pillar模塊 記錄全部minion通用的屬性,而後同步到minion端
salt-call saltutil.refresh_pillar salt ‘*’ saltutil.refresh_pillar
1. cmd模塊
salt ‘*’ cmd.run 「df -h」
2. ping模塊
salt ‘*’ test.ping -t 5 #-t 超時時間,秒
3. cp 模塊
file_roots: base: - /export/salt/root
salt根目錄:
在master中file_roots定義的路徑
salt://test.txt 至關於 /export/salt/root/test.txt
用法:
salt '172.17.23.11' cp.get_file salt://nscd.conf /tmp/xiang.txt (拷貝文件)
4. cron模塊:
salt '*' cron.raw_cron root (查看定時任務) salt '*' cron.set_job root '*' '*' '*' '*' 1 /export/scripts/rm_log.sh (設定定時任務) salt '*' cron.rm_job root /export/scripts/rm_log.sh (刪除定時任務,寫全沒效果)
5.dnsutil模塊
salt '*' dnsutil.hosts_append /etc/hosts 127.0.0.1 xiang.com salt '*' dnsutil.hosts_remove /etc/hosts xiang.com
6.file模塊:
salt '*' file.chown /etc/passwd root root salt '*' file.copy /path/to/src /path/to/dst salt '*' file.file_exists /etc/hosts salt '*' file.directory_exists /etc/ salt '*' file.get_mod /etc/passwd salt '*' file.set_mod /etc/passwd 0644 salt '*' file.mkdir /tmp/test salt '*' file.sed /export/servers/nginx/conf/nginx.conf 'debug' 'warn' salt '*' file.append /tmp/test.txt "welcome xiang" salt '*' file.remove /tmp/1.txt
7.network模塊:
salt '*' network.dig www.qq.com salt '*' network.ping www.qq.com salt '*' network.ip_addrs
8.pkg包管理模塊:
管理yum, apt-get等
salt '*' pkg.install php(安裝應用) salt '*' pkg.remove php(移除應用) salt '*' pkg.upgrade (升級全部的軟件包)
9.service模塊(centos6)
salt '*' service.enable nginx salt '*' service.disable nginx salt '*' service.restart nginx
Grains
自定義grians(是在minion上定義的)
記錄的是客戶端上的
grains是在minion啓動時蒐集一些信息,如操做系統類型,網卡,內核版本,cpu架構等
salt "*" grains.ls 列出全部grains項目名字 salt "*app.*" grains.items 列出全部grains項目以及值 salt "*" grans.item serialnumber 查看服務器的sn碼 (其餘以此類推)
grains的信息並非動態的,並不會實時變化,它只是在minion啓動時收集到的
咱們能夠根據grains收集到的一些信息,作一些配置管理工做
在minion上:
vim /etc/salt/grains role: nginx env: test
重啓
service salt-minion restart
獲取grians:
salt "*" grains.item role env
或者:
salt -G "*" role:nginx cmd.run "hostname「 salt ‘*’grains.items
(雖然也挺好用,可是不多用,要用也是用pillar)
Pillar
(記錄的是服務端上的信息)
pillar(在master上定義)
(yaml語法)
在配置文件中找pillar的文件路勁:建立目錄
mkdir /export/salt/pillar
在目錄內定義文件:
vim top.sls base: "*": - test
vim test.sls conf: xiang
而後
刷新pillar:
salt '*' saltutil.refresh_pillar
驗證:
salt '*' pillar.items conf
或者:
salt -I 'conf:xiang' test.ping