1元扔,簡介
1)SaltStack 本身是基于 Python 語言開發(fā)實(shí)現(xiàn)起便,結(jié)合了輕量級的消息隊(duì)列軟件 ZeroMQ 與 Python 第三方模塊(Pyzmq蚤告、PyCrypto忍法、Pyjinjia2灾挨、python-msgpack 和 PyYAML 等)構(gòu)建。image.png
2)一個基于 C/S 架構(gòu)继低,服務(wù)器集群管理的解決方案熬苍。管理端稱為 Master,客戶端稱為 Minion袁翁,具備配置管理柴底、遠(yuǎn)程執(zhí)行、監(jiān)控等功能粱胜,minion 負(fù)責(zé)接收服務(wù)器端發(fā)布的指令并執(zhí)行柄驻,同時負(fù)責(zé)客戶端的狀態(tài)監(jiān)控。焙压。
3)4505消息發(fā)布端口(所有minion在4505上保持established)鸿脓,salt客戶端和服務(wù)端通信使用4506端口抑钟,內(nèi)容傳輸使用消息隊(duì)列。
4)salt 有很多可執(zhí)行模塊野哭,cmd模塊在塔,cp模塊等。
2拨黔,salt環(huán)境搭建
1)安裝python2.7以及pip
http://www.reibang.com/p/f7be0d432538
2)rpm --import https://repo.saltstack.com/yum/redhat/6/x86_64/latest/SALTSTACK-GPG-KEY.pub
vim /etc/yum.repos.d/saltstack.repo
[saltstack-repo]
name=SaltStack repo for RHEL/CentOS 6
baseurl=https://repo.saltstack.com/yum/redhat/6/x86_64/latest
enabled=1
gpgcheck=1
gpgkey=https://repo.saltstack.com/yum/redhat/6/x86_64/latest/SALTSTACK-GPG-KEY.pub
master
yum install salt-master -y
yum install salt-ssh -y
chkconfig salt-master on
slave
yum install salt-minion -y
chkconfig salt-minion on
3)配置文件
master組件的配置文件
/etc/salt/master
minion組件的配置文件
/etc/salt/minionimage.png
service salt-master start
service salt-minon restart
4)部署發(fā)布目錄
salt的部署發(fā)布目錄在/srv/salt下
mkdir -p /srv/salt
5)安裝遇到問題蛔溃。
No module named yum
--->vim /usr/bin/yum#!/usr/bin/python2.6
The master key has changed, the salt master could have been subverted
-->master上salt-key -did
,minion上rm -rf /etc/salt/pki/minion/minion_master.pub蓉驹,service salt-minion restart
6)其他城榛。
salt-master啟動時可以指定-c參數(shù)疚顷,指定配置路徑端幼;
7)salt --versions 查看salt的版本。
3苔巨,master-minion之間認(rèn)證過程瞻润。
1)minion端生成一個秘鑰對(/etc/salt/pki/minion下minion.pem喘垂,minion.pub),并產(chǎn)生一個ID值绍撞,minion服務(wù)會安裝ID值命名的公鑰發(fā)送給 master ,直到接受為止;
3)master認(rèn)證完畢后章贞,會將自身的公鑰發(fā)送給 minion,并存儲為 /etc/salt/pki/minion/minion_master.pub.
2)master認(rèn)證完畢后正勒,會將minion 端發(fā)送來的,以ID值命名的公鑰存放在在/etc/salt/pki/master/minions下傻铣。
image.pngimage.png
4非洲,salt操作鸭限。
1)salt-key 密鑰管理,通常在master端執(zhí)行
salt-key [options]
salt-key -L ##查看所有minion-key
salt-key -a <key-name> ##接受某個minion-key
salt-key -d <key-name> ##刪除某個minion-key
salt-key -A ##接受所有的minion-key
salt-key -D ##刪除所有的minion-key
image.png
2)salt-run 在master執(zhí)行runner
salt-run [options] [runner.func]
salt-run manage.status ##查看所有minion狀態(tài)
salt-run manage.down ##查看所有沒在線minion
salt-run manged.up ##查看所有在線minion
image.png
3)salt可以讓minion執(zhí)行命令.
執(zhí)行模塊命令两踏。通過cmd.run模塊執(zhí)行shell命令败京。cmd.script方式:可以向遠(yuǎn)程主機(jī)執(zhí)行腳本。
salt -C 'web-01' test.ping 模塊命令梦染。測試minion存活狀態(tài)赡麦,-C多參數(shù)
salt 'web-01' cmd.run '/etc/init.d/redis_6392 stop'
salt 'web-01' cmd.run '/etc/init.d/mysqld restart' //無日志輸出,需要修改啟動腳本
image.png
salt 'web-01' cmd.run 'tail -400 /var/log/mysqld.log'
salt '*' cmd.script salt://temp.sh salt:// == /srv/salt(salt的默認(rèn)發(fā)布目錄)
4)salt命令salt '<target>' <function> [argument]
function是salt帶的或自己寫的可執(zhí)行模塊里面的function帕识,target指定命令或者模塊應(yīng)用到哪些minion上
globbing通配符 salt 'aliyun-*' test.ping
正則表達(dá)式 salt -E 'web-(0001 | 0003)' test.ping
list列表 salt -L 'web-0001,web-0002' test.ping
1個或者多個參數(shù) salt -C 'web-0001, web-0002, xx' test.ping
salp執(zhí)行cmd的cp命令泛粹。salt 'web-01' cmd.run 'cp /home/zhanqi/a.cnf /home/zhanqi/temp/a.cnfbk'
image.pngimage.png
5)salt執(zhí)行cp模塊salt-cp 分發(fā)文件到minion上,不支持目錄分發(fā)。
salt-cp 'l-qa*' a.cnf /home/zhanqi/a.cnfimage.png
image.png
6)salt執(zhí)行自定義腳本肮疗。
salt:// 是指 /srv/salt(salt的默認(rèn)發(fā)布目錄)image.png
image.png
5晶姊,YMAL(Yet Another Markup Language
)
1)可讀性高,表達(dá)數(shù)據(jù)序列的編程語言族吻,ymal以數(shù)據(jù)為設(shè)計(jì)語言的重點(diǎn)帽借,xml以標(biāo)記為重點(diǎn)。
2)規(guī)則
縮進(jìn)
:使用固定的層次表示縮進(jìn)超歌,不能使用tab砍艾,saltstack中要求兩個空格。
冒號
:冒號后一個空格巍举。
短橫線
:后面加一個空格脆荷,表示列表。
3)示例
對象
:name: hzq
數(shù)組
:["h","z","q"]
- h
- z
- q
對象數(shù)組復(fù)合結(jié)構(gòu)
names:
?? - ? hzq
?? - ? hahaha
?? - ? bob
字符串
:字符串默認(rèn)不使用引號表示懊悯。
6蜓谋,SLS文件。
1)saltstack使用ymal語言將sls文件炭分,即SaLt State文件 / 配置管理文件(
SLS描述了系統(tǒng)的目標(biāo)狀態(tài)桃焕,由格式簡單的數(shù)據(jù)構(gòu)成。
)解釋成它自己識別的內(nèi)容捧毛,jinja是基于python的模板引擎观堂,sls文件可以使用jinja模板來做一些操作。
2)在使用sls之前呀忧,需要先指定環(huán)境配置的根目錄师痕。master的/etc/salt/master文件中。image.pngimage.pngimage.png
3) /srv/salt/top.sls
top.sls 是配置管理的入口文件
base標(biāo)簽開始解析而账,下一級是操作的目標(biāo)
: 正則胰坟,分組,或者grain模塊泞辐;再下一級是要執(zhí)行的state文件(無擴(kuò)展名)
子state文件webserver.slsimage.pngimage.png
4)單個sls執(zhí)行
salt '*' state.sls webserver
salt '*' state.apply webserver
highstate執(zhí)行
salt '*' state.highstate top
5)sls命名空間笔横。
webserver.sls簡稱webserver
webserver/dev.sls可寫作webserver.dev
webserver/init.sls可寫作webserver(webserver.sls比init.sls優(yōu)先級高)
7,Jinja模板
1)salt包含jinja2模板引擎铛碑,可以用在sls文件狠裹,pillar文件和其他被salt管理的文件中∑常可以使用Jinja去訪問million的configuration values涛菠,pillar data,call Salt execution modules撇吞。
2)Pillar可以用來存儲類似于用戶名和密碼等數(shù)據(jù)俗冻,或者任何其它類型的數(shù)據(jù),此數(shù)據(jù)可以在states中訪問牍颈。
8迄薄,使用returner將salt執(zhí)行返回的信息存起來
salt '*' cmd.run '/etc/init.d/duobeiyund status' --out=json --out-indent=-1
salt '*' saltutil.sync_returners
returner里面咱們定義的文件或者數(shù)據(jù)庫都是相對于minion來說。(redis等模塊需要在minion上安裝)
salt '*' cmd.run 'locale' 查看機(jī)器編碼