Saltstack 安裝配置詳解

一、簡介

Saltstack 比 Puppet 出來晚幾年饱苟,是基于Python 開發(fā)的炊邦,也是基于 C/S 架構(gòu)编矾,服務(wù)端 master 和客戶端 minions ;Saltstack 和 Puppet 很像馁害,可以說 Saltstatck 整合了 Puppet 和 Chef 的功能窄俏,更加強(qiáng)大,更適合大規(guī)模批量管理服務(wù)器碘菜,并且它比 Puppet 更容易配置裆操。

三大功能: 遠(yuǎn)程命令執(zhí)行,配置管理(服務(wù)炉媒,文件踪区,cron,用戶吊骤,組)缎岗,云管理。

支持系統(tǒng):大多數(shù)都支持白粉,windows 上不支持安裝 master传泊。

二、安裝配置

1鸭巴、準(zhǔn)備工作

準(zhǔn)備兩臺機(jī)器眷细,這兩臺機(jī)器都關(guān)閉 selinux,清空 iptables 規(guī)則并保存鹃祖。

master:192.168.0.109

slaver:192.168.0.110

2溪椎、編輯 hosts 文件

兩臺都設(shè)置,若機(jī)器太多,可以通過搭建 DNS校读,則不用在每臺機(jī)器上設(shè)置這個

# vim /etc/hosts192.168.0.109? master.test.com192.168.0.110slaver.test.com

3沼侣、設(shè)置 hostname

在 master 上

[iyunv@master ~]# vim /etc/sysconfig/network

HOSTNAME=master.test.com


在 slaver 上

[iyunv@slaver ~]# vim /etc/sysconfig/network

HOSTNAME=slaver.test.com


4、安裝

1)服務(wù)端安裝

[iyunv@master ~]#yuminstall-y epel-release

[iyunv@master ~]#yuminstall-y salt-master salt-minion

2)客戶端安裝

[iyunv@slaver ~]#yuminstall-y epel-release

[iyunv@slaver ~]#yuminstall-y salt-minion


5歉秫、配置

服務(wù)端和客戶端都要配置 master

# vim /etc/salt/minion?????????????????? //在第16行添加蛾洛,冒號后有一個空格

master: 192.168.0.109


6、啟動服務(wù)

1)服務(wù)端

[iyunv@master ~]# /etc/init.d/salt-master start

Starting salt-master daemon:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [確定]

[iyunv@master ~]# /etc/init.d/salt-minion start

Starting salt-minion daemon:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [確定]


2)客戶端

[iyunv@slaver ~]# /etc/init.d/salt-minion start

Starting salt-minion daemon:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [確定]

三雁芙、配置認(rèn)證

1)在服務(wù)端上操作

[iyunv@master ~]# salt-key -a? slaver.test.com

[iyunv@master ~]# salt-key -a? master.test.com

[iyunv@master ~]# salt-key

說明:-a :accept 轧膘,-A:accept-all,-d:delete兔甘,-D:delete-all扶供。可以使用 salt-key 命令查看到已經(jīng)簽名的客戶端裂明。此時我們在客戶端的 /etc/salt/pki/minion 目錄下面會多出一個minion_master.pub 文件椿浓。

2)測試驗(yàn)證

示例1: salt '*' test.ping? ?? ?? ?? ?? ?? ?//檢測通訊是否正常,也可以指定其中一個 'slaver.test.com'

示例2:??salt '*' cmd.run? ?'df -h'? ?? ???//遠(yuǎn)程執(zhí)行命令

說明: 這里的 * 必須是在 master 上已經(jīng)被接受過的客戶端闽晦,可以通過 salt-key 查到扳碍,通常是我們已經(jīng)設(shè)定的 id 值。關(guān)于這部分內(nèi)容仙蛉,它支持通配笋敞、列表以及正則。 比如兩臺客戶端 web10荠瘪、web11夯巷, 那我們可以寫成??salt 'web*'? ? salt 'web1[02]'??salt -L 'web10,web11'? ?salt -E 'web(10|11)' 等形式,使用列表哀墓,即多個機(jī)器用逗號分隔趁餐,而且需要加-L,使用正則必須要帶-E選項(xiàng)篮绰。 它還支持 grains 和 pillar后雷,分別加 -G 和 -I 選項(xiàng),下面會介紹到吠各。

四臀突、grains 和 pillar

下面來介紹 grains 和 pillar

1、grains

grains 是在 minion(客戶端)啟動時收集到的一些信息贾漏,比如操作系統(tǒng)類型候学、網(wǎng)卡ip等辑畦。

使用命令:

[iyunv@master ~]# salt'slaver.test.com'grains.ls//列出所有的 grains 項(xiàng)目名字[iyunv@master ~]# salt'slaver.test.com'grains.items//列出所有的 grains 項(xiàng)目名以及值

grains的信息并不是動態(tài)的傅事,并不會時時變更眷唉,它只是在 minion 啟動時收集到的暗赶。grains 也可以做配置管理陨收。

下面我們來自定義 grains

1)客戶端上配置

[iyunv@slaver ~]# vim /etc/salt/grains//添加如下笼蛛,注意冒號后有空格role: nginxenv: test

myname: tpp

或者

[iyunv@slaver ~]# vim /etc/salt/minion//在最下面添加或更改grains:

? role:

? ? - nginx

? env:

? ? - test

? myname:

? ? - tpp

重啟minion服務(wù)

[iyunv@slaver ~]# /etc/init.d/salt-minion restart

2)服務(wù)端獲取 grains

[iyunv@master ~]# salt'slaver.test.com'grains.item roleenvmyname//列出多個

[iyunv@master ~]# salt'slaver.test.com'grains.get myname//列出單個

注意:grains 在遠(yuǎn)程執(zhí)行命令時很方便奴艾。我們可以按照 grains 的一些指標(biāo)來操作橄妆。比如把所有的 web 服務(wù)器的 grains 的 role 設(shè)置為 nginx硕盹,那這樣我們就可以批量對 nginx 的服務(wù)器進(jìn)行操作了:

[iyunv@master ~]# salt -G role:nginx cmd.run'hostname'[iyunv@master ~]# salt -G os:CentOS cmd.run'hostname'

2符匾、pillar

pillar 和 grains 不一樣,是在 master 上定義的瘩例,并且是針對 minion 定義的一些信息啊胶。像一些比較重要的數(shù)據(jù)(密碼)可以存在 pillar 里,還可以定義變量等垛贤。

查看指定minion的 pillar 值:

[iyunv@master ~]# salt'slaver.test.com'pillar.items

1)服務(wù)端自定義配置 pillar

[iyunv@master ~]# vim /etc/salt/master//找到如下內(nèi)容焰坪,去掉#號pillar_roots:

? base:

? ? - /srv/pillar

[iyunv@master ~]#mkdir/srv/pillar

[iyunv@master ~]# vim /srv/pillar/test.sls//自定義配置文件,內(nèi)容如下conf: /etc/123.conf

myname: tpp

[iyunv@master ~]# vim /srv/pillar/top.sls//總?cè)肟谖募傅耄瑑?nèi)容如下base:

? 'slaver.test.com':

? ? - test

重啟master

[iyunv@master ~]# /etc/init.d/salt-master restart

注意:當(dāng)更改完 pillar 配置文件后某饰,我們可以通過刷新 pillar 配置來獲取新的 pillar 狀態(tài):

[iyunv@master ~]# salt'*'saltutil.refresh_pillar

2)驗(yàn)證:

[iyunv@master ~]# salt'slaver.test.com'pillar.items

[iyunv@master ~]# salt'slaver.test.com' pillar.item conf

[iyunv@master ~]# salt'slaver.test.com'pillar.item myname

pillar 同樣可以用來作為 salt 的匹配對象。比如:

[iyunv@master ~]# salt -I'conf:/etc/123.conf'test.ping[iyunv@master ~]# salt -I'conf:/etc/123.conf'cmd.run'w'

五善绎、配置管理安裝Apache

下面進(jìn)行的演示是遠(yuǎn)程通過 yum 方式安裝 Apache黔漂。步驟如下:

1、配置

[iyunv@master ~]# vim /etc/salt/master//打開如下內(nèi)容的注釋file_roots:

? base:

? ? - /srv/salt

注意:環(huán)境: base禀酱、dev(開發(fā)環(huán)境)炬守、test(測試環(huán)境)、prod(生產(chǎn)環(huán)境)剂跟。

[iyunv@master ~]#mkdir/srv/salt

[iyunv@master ~]# vim /srv/salt/top.sls

base:

? 'slaver.test.com':

? ? - apache

注意:若換成 '*'减途,則表示在所有的客戶端執(zhí)行 apache 模塊。

[iyunv@master ~]# vim /srv/salt/apache.sls

apache-service:

? pkg.installed:

? ? - names://如果只有一個服務(wù)曹洽,那么就可以寫成 –name: httpd 不用再換一行- httpd

? ? ? - httpd-devel

? service.running:

? ? - name: httpd

? ? - enable: True


注意:apache-service 是自定義的 id 名鳍置。pkg.installed 為包安裝函數(shù),下面是要安裝的包的名字送淆。service.running 也是一個函數(shù)墓捻,來保證指定的服務(wù)啟動,enable 表示開機(jī)啟動坊夫。

2砖第、重啟服務(wù)

[iyunv@master ~]# /etc/init.d/salt-master restart

3、執(zhí)行命令

[iyunv@master ~]# salt'slaver.test.com'state.highstate//執(zhí)行時間比較長环凿,因?yàn)橐惭bhttpd

如上圖所示梧兼,說明 Apache 遠(yuǎn)程安裝已成功。

六智听、文件目錄管理

1羽杰、文件管理

1)服務(wù)端配置

接著編輯之前的 top.sls 文件

[iyunv@master ~]# vim /srv/salt/top.sls//修改為如下base:

? 'slaver.test.com':

? ? - filetest

新建 filetest.sls 文件

[iyunv@master ~]# vim /srv/salt/filetest.slsfile-test:

? file.managed:

? ? - name: /tmp/filetest.txt

? ? - source: salt://test/123/1.txt- user: root

? ? - group: root

? ? - mode:644

注意:第一行的 file-test 為自定的名字渡紫,表示該配置段的名字,可以在別的配置段中引用它考赛;source指定文件從哪里拷貝惕澎,這里的 test 目錄相當(dāng)于是 /srv/salt/test 目錄;name指定遠(yuǎn)程客戶端要生成的文件颜骤。

新建所要測試的源文件

[iyunv@master ~]#mkdir-p /srv/salt/test/123/[iyunv@master ~]# vim /srv/salt/test/123/1.txt

msiyuetian.blog.iyunv.com

執(zhí)行命令:

[iyunv@master ~]# salt'slaver.test.com'state.highstate

2)客戶端驗(yàn)證

2唧喉、目錄管理

1)服務(wù)端配置

接著編輯之前的 top.sls 文件

[iyunv@master ~]# vim /srv/salt/top.sls//修改為如下base:

? 'slaver.test.com':

? ? - filedir

新建 filedir.sls 文件

[iyunv@master ~]# vim /srv/salt/filedir.slsfile-dir:

? file.recurse:

? ? - name: /tmp/testdir

? ? - source: salt://test1/234- user: root

? ? - file_mode:644- dir_mode:755-mkdir: True

? ? - clean: True

注意:clean: True 源刪除文件或目錄,目標(biāo)也會跟著刪除忍抽,否則不會刪除八孝。可以默認(rèn)設(shè)置為 False鸠项。

新建所要測試的源目錄

[iyunv@master ~]#mkdir-p /srv/salt/test1/234[iyunv@master ~]# vim /srv/salt/test1/234/2.txt

msiyuetian.blog.iyunv.com

執(zhí)行命令:

[iyunv@master ~]# salt'slaver.test.com'state.highstate

2)客戶端驗(yàn)證

3)測試增刪功能

在服務(wù)端新建 mydir 目錄以及 testdir.add 文件干跛,刪除 2.txt 文件:

[iyunv@master ~]#mkdir/srv/salt/test1/234/mydir

[iyunv@master ~]#touch/srv/salt/test1/234/mydir/111.txt

[iyunv@master ~]#touch/srv/salt/test1/234/testdir.add

[iyunv@master ~]#rm-rf /srv/salt/test1/234/2.txt

執(zhí)行命令:

[iyunv@master ~]# salt'slaver.test.com'state.highstate

客戶端驗(yàn)證

注意:由上圖可知,成功在客戶端 /tmp/testdir/ 目錄下創(chuàng)建了 mydir 目錄以及 testdir.add 文件祟绊,并刪除 2.txt 文件楼入。這里值得注意的是要成功創(chuàng)建 mydir 目錄,前提是 mydir 目錄下要有文件牧抽,如這里的111.txt 文件浅辙,如若沒有,客戶端是不會創(chuàng)建 mydir 目錄的阎姥。

七记舆、遠(yuǎn)程執(zhí)行

前面提到遠(yuǎn)程執(zhí)行命令 test.ping,cmd.run呼巴,點(diǎn)前面的是模塊泽腮,點(diǎn)后面的是函數(shù);這樣總歸是不太規(guī)范化衣赶,下面詳細(xì)介紹怎么遠(yuǎn)程執(zhí)行命令和腳本府瞄。

1秆撮、遠(yuǎn)程執(zhí)行命令

1)服務(wù)端配置

接著編輯之前的 top.sls 文件

[iyunv@master ~]# vim /srv/salt/top.sls//修改為如下base:

? 'slaver.test.com':

? ? - cmdtest

新建 cmdtest.sls 文件

[iyunv@master ~]# vim /srv/salt/cmdtest.sls

cmd-test:

cmd.run:

- onlyif: test -f /tmp/123.txt

? ? - names:

? ? ? -touch/tmp/cmdtest.txt

? ? ? -mkdir/tmp/cmdtest

? ? - user: root

注意:條件 onlyif 表示若 /tmp/123.txt 文件存在,則執(zhí)行后面的命令;可以使用 unless黎侈,兩者正好相反休吠。

執(zhí)行命令:

[iyunv@master ~]# salt'slaver.test.com'state.highstate

2)客戶端驗(yàn)證

2巷燥、遠(yuǎn)程執(zhí)行腳本

1)服務(wù)端配置

接著編輯之前的 top.sls 文件

[iyunv@master ~]# vim /srv/salt/top.sls//修改為如下base:

? 'slaver.test.com':

? ? - shelltest

新建 shelltest.sls 文件

[iyunv@master ~]# vim /srv/salt/shelltest.sls

shell-test:

? cmd.script:

? ? - source: salt://test/1.sh- user: root

新建 1.sh 腳本文件

[iyunv@master ~]# vim /srv/salt/test/1.sh#!/bin/bashtouch/tmp/shelltest.txtif[ -d /tmp/shelltest ]thenrm-rf /tmp/shelltestelsemkdir/tmp/shelltestfi

執(zhí)行命令:

[iyunv@master ~]# salt'slaver.test.com'state.highstate

2)客戶端驗(yàn)證

注意:通過上面的例子僵驰,我們實(shí)現(xiàn)了遠(yuǎn)程執(zhí)行腳本喷斋;如果我們想一鍵遠(yuǎn)程安裝 LAMP 或者 LNMP唁毒,那么只需把本例中的 1.sh 腳本替換成 一鍵安裝的腳本就行。

八星爪、管理任務(wù)計(jì)劃

1浆西、建立 cron

1)服務(wù)端配置

編輯 top.sls 文件

[iyunv@master ~]# vim /srv/salt/top.sls//修改為如下base:

? 'slaver.test.com':

? ? - crontest

編輯 crontest.sls 文件

[iyunv@master ~]# vim /srv/salt/crontest.sls

cron-test:

? cron.present:

? ? - name: /bin/touch/tmp/111.txt

? ? - user: root

? ? - minute:'*'- hour:20- daymonth:1-10- month:'3,5'- dayweek:'*'

注意,*需要用單引號引起來顽腾。當(dāng)然我們還可以使用 file.managed 模塊來管理 cron近零,因?yàn)橄到y(tǒng)的 cron都是以配置文件的形式存在的。

執(zhí)行命令:

[iyunv@master ~]# salt'slaver.test.com'state.highstate

2)客戶端驗(yàn)證

2抄肖、刪除 cron

1)服務(wù)端配置

我們只需修改 crontest.sls 文件

[iyunv@master ~]# vim /srv/salt/crontest.sls

把 cron.present: 改成 cron.absent:

注意:兩者不能共存久信,要想刪除一個 cron,那之前的 present 就得替換掉或者刪除掉漓摩。

執(zhí)行命令:

[iyunv@master ~]# salt'slaver.test.com'state.highstate

2)客戶端驗(yàn)證

[iyunv@slaver ~]# crontab -l//可查看到該任務(wù)計(jì)劃已刪除

九裙士、Saltstack 常用命令

1、拷貝文件到客戶端

[iyunv@master ~]# salt'slaver.test.com'cp.get_file salt://apache.sls /tmp/cp.txtslaver.test.com:

? ? /tmp/cp.txt

2管毙、拷貝目錄到客戶端

[iyunv@master ~]# salt'slaver.test.com'cp.get_dir salt://test /tmpslaver.test.com:

? ? - /tmp/test/1.sh- /tmp/test/123/1.txt

3腿椎、顯示存活的客戶端

[iyunv@master ~]# salt-run manage.up

4、命令下執(zhí)行服務(wù)端的腳本

[iyunv@master ~]# vim /srv/salt/test/shell.sh#! /bin/bashecho"msiyuetian.blog.iyunv.com"> /tmp/shell.txt

[iyunv@master ~]# salt'slaver.test.com'cmd.script salt://test/shell.sh

客戶端查看

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末夭咬,一起剝皮案震驚了整個濱河市啃炸,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌卓舵,老刑警劉巖南用,帶你破解...
    沈念sama閱讀 222,000評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異掏湾,居然都是意外死亡裹虫,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評論 3 399
  • 文/潘曉璐 我一進(jìn)店門忘巧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來恒界,“玉大人,你說我怎么就攤上這事砚嘴∈ǎ” “怎么了?”我有些...
    開封第一講書人閱讀 168,561評論 0 360
  • 文/不壞的土叔 我叫張陵际长,是天一觀的道長耸采。 經(jīng)常有香客問我,道長工育,這世上最難降的妖魔是什么虾宇? 我笑而不...
    開封第一講書人閱讀 59,782評論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮如绸,結(jié)果婚禮上嘱朽,老公的妹妹穿的比我還像新娘旭贬。我一直安慰自己,他們只是感情好搪泳,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,798評論 6 397
  • 文/花漫 我一把揭開白布稀轨。 她就那樣靜靜地躺著,像睡著了一般岸军。 火紅的嫁衣襯著肌膚如雪奋刽。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,394評論 1 310
  • 那天艰赞,我揣著相機(jī)與錄音佣谐,去河邊找鬼。 笑死方妖,一個胖子當(dāng)著我的面吹牛狭魂,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播吁断,決...
    沈念sama閱讀 40,952評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼趁蕊,長吁一口氣:“原來是場噩夢啊……” “哼坞生!你這毒婦竟也來了仔役?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,852評論 0 276
  • 序言:老撾萬榮一對情侶失蹤是己,失蹤者是張志新(化名)和其女友劉穎又兵,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體卒废,經(jīng)...
    沈念sama閱讀 46,409評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡沛厨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,483評論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了摔认。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片逆皮。...
    茶點(diǎn)故事閱讀 40,615評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖参袱,靈堂內(nèi)的尸體忽然破棺而出电谣,到底是詐尸還是另有隱情,我是刑警寧澤抹蚀,帶...
    沈念sama閱讀 36,303評論 5 350
  • 正文 年R本政府宣布剿牺,位于F島的核電站,受9級特大地震影響环壤,放射性物質(zhì)發(fā)生泄漏晒来。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,979評論 3 334
  • 文/蒙蒙 一郑现、第九天 我趴在偏房一處隱蔽的房頂上張望湃崩。 院中可真熱鬧荧降,春花似錦、人聲如沸攒读。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽整陌。三九已至拗窃,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間泌辫,已是汗流浹背随夸。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留震放,地道東北人宾毒。 一個月前我還...
    沈念sama閱讀 49,041評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像殿遂,于是被迫代替她去往敵國和親诈铛。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,630評論 2 359

推薦閱讀更多精彩內(nèi)容