一、初識(shí)運(yùn)維
-
運(yùn)維都做哪些事?
- 1.機(jī)房設(shè)備上下架
- 2.系統(tǒng)初始化
- 3.應(yīng)用環(huán)境初始化
- 4.應(yīng)用的部署 調(diào)試 配置 --->saltstack
- 5.代碼的發(fā)部 ---> jenkins
- 6.服務(wù)監(jiān)控(應(yīng)用監(jiān)控,系統(tǒng)監(jiān)控(CPU 內(nèi)存 硬盤))
- 7.數(shù)據(jù)備份...
-
自動(dòng)化發(fā)展階段
- 1,標(biāo)準(zhǔn)化,環(huán)境的統(tǒng)一(軟件一致,版本一致,位置一致)
- 2,文檔化,(比如宕機(jī),通過文檔操作)
- 3,工具化,(執(zhí)行腳本,1,2,3(流程可能亂))
- 4,web 化,(按固定流程執(zhí)行)
- 5,平臺(tái)化,(運(yùn)維平臺(tái),API接口(拿日志等),圖表形式展示(直觀))
- 6,服務(wù)化
- 7,智能化,(換硬盤-->機(jī)械手臂換)
二、初識(shí)saltstack
saltstack(管理工具)
并行機(jī)制,python開發(fā),API接口-
主要功能
- 1,遠(yuǎn)程執(zhí)行(命令)
- 2,配置管理(配置安裝nginx)
- 3,云管理(此處不研究)
-
運(yùn)行方式
- 1,Local(自己管自己)
- 2,Master、Minion(主從)<-----> 最常見
- 3,Salt SSH
支持系統(tǒng)
CentOS Redhat Fedora Gentoo Debian MAC OS
ubuntu suse freebsd......
Windows(只有Minion,只能被管)運(yùn)行依賴包,yum安裝,一鍵搞定依賴關(guān)系
python
zeromq(saltstack基于RPC模式完成通信,用到的消息中間件就是zeromq)
pyzmp
pycrypto(saltstack信息使用AES方式加密解密,需要用到pycrypto包)
msgpack-python
yaml
jinja2
三、saltstack操作
-
1、安裝,提前準(zhǔn)備兩臺(tái)虛擬機(jī),一主一從,提前配好epel源
主(master):yum install salt-master -y
從(minion):yum install salt-minion -y
(Ubuntu執(zhí)行):sudo apt-get install salt-minion
-
2、設(shè)為開機(jī)啟動(dòng)
參看鏈接:https://blog.csdn.net/qq_16743379/article/details/51325587
主:systemctl enable salt-master
從:systemctl enable salt-minion
-
3、配置
主:
- 1,
vim /etc/salt/master - 2,搜索
file_roots(輸入斜杠進(jìn)行搜索) - 3,將下面的注釋打開(注意空格,2個(gè),4個(gè))
file_roots:(在416行) base: - /srv/salt - 4,搜索
pillar_roots - 5,將下面注釋打開
pillar_roots:(在529行) base: - /srv/pillar - 6,保存退出,啟動(dòng):
systemctl start salt-master
從:(Ubuntu系統(tǒng)編輯內(nèi)容相同,方式不同)
- 1,
vi /etc/salt/minion - 2,
:set nu,找到行號(hào),大概在16行,修改master的ip
master: 192.168.122.1冒號(hào)后一個(gè)空格 - 3,搜索
#id(沒有修改過的),大概在78行。為id做個(gè)標(biāo)識(shí),名字隨便起,方便管理。
id: slave-1冒號(hào)后一個(gè)空格 - 4,保存退出啟動(dòng):
systemctl start salt-minion
- 1,
-
4、管理(第一次有一個(gè)認(rèn)證的過程(手動(dòng)認(rèn)證↓,自動(dòng)認(rèn)證(配置文件)))
主:
salt-key(顯示)
salt-key.pngsalt-key -A: 允許所有小弟受管制(一般都是-A)
salt-key -a: 指定某個(gè)小弟受管制[root@master / 02:23:15]# salt-key -AThe following keys are going to be accepted: Unaccepted Keys: slave-1 Proceed? [n/Y] Y Key for minion slave-1 accepted. -
5、命令組成
命令 :salt
目標(biāo) : '*'(支持正則)模塊 : -->命令
方法 : -->參數(shù)返回
-
6、官網(wǎng)
- saltstack 命令官網(wǎng):saltstack命令
- saltstack 模塊官網(wǎng):saltstack-models
-
(Ⅰ),檢查主機(jī)是否存活:
salt '*' test.ping
(*目標(biāo),所有)(test,模塊)(ping,方法) slave-1: True (返回)- 查看test其他命令:
salt '*' sys.list_functions test -
salt --help#即可查看salt幫助
[root@master 192.168.199.155 ~]$salt --help Usage: salt [options] '<target>' <function> [arguments] salt命令 參數(shù) 目標(biāo) salt模塊的函數(shù) 遠(yuǎn)程執(zhí)行的參數(shù) - 查看test其他命令:
-
(Ⅱ),檢查slave-1是否存活(前提是salt-minion已啟動(dòng)):
salt 'slave-1' test.pingslave-1: Minion did not return. [No response] (slave關(guān)機(jī),測(cè)試結(jié)果) -
(Ⅲ),執(zhí)行命令,返回結(jié)果【
cmd.run】
salt '*' cmd.run 'df -h':執(zhí)行'df -h'命令,交互式辦不到,只能執(zhí)行可以返回結(jié)果的
salt控制執(zhí)行cmd命令 .png -
(Ⅳ),同步配置文件【文件的分發(fā)(
配置文件+命令/salt-cp)】
4.1,配置文件(yaml語法),接下來執(zhí)行命令先創(chuàng)建一個(gè)文件:
mkdir /srv/{salt,pillar}
進(jìn)入到/srv/salt下
創(chuàng)建sls文件vim host_file.sls(文件名隨便,后綴必須是sls)
寫入:(注意空格,一定手寫,不要復(fù)制粘貼)/etc/hosts:(文件路徑) file.managed:(file模塊的managed方法) - source: salt://files/hosts(指定本地文件的路徑) - user: root - group: root - mode: 644salt文件分發(fā)配置.png
????????進(jìn)入:cd /srv/salt
????????創(chuàng)建:mkdir files
????????進(jìn)入:cd files
????????copy:cp /etc/hosts .
?????????4.2,執(zhí)行命令,同步文件配置:salt '*' state.sls host_file
?????????4.3,或者執(zhí)行,同樣有效(此命令也可執(zhí)行文件分發(fā)):salt-cp '*' /etc/hosts /etc/
???????????????返回值:{'slave-1': {'/etc/hosts': True}}
?????????4.4,檢測(cè):分別查看主機(jī)和從機(jī)的hosts文件:cat /etc/hosts,如果兩者一致,證明文件分發(fā)成功。
- (Ⅴ),軟件的安裝【安裝nginx】
5.1,
cd /srv/salt(進(jìn)入到salt文件夾)5.2,
vim nginx_install.sls(寫配置文件,命名無所謂,后綴必須為sls)-
5.3,寫入下面內(nèi)容:
salt下載軟件配置.png
salt下載軟件并啟動(dòng)完整配置.png 5.4,執(zhí)行命令,
salt '*' state.sls nginx_install(注意下劃線和中劃線)
因?yàn)樾枰螺d,所以會(huì)很慢。-
5.5,驗(yàn)證,訪問一下:
curl -I 10.0.0.11
返回200即成功,如果失敗,檢查sls文件、命令、網(wǎng)絡(luò)是否正常。
salt執(zhí)行下載nginx失敗.png
也可以使用
salt '*' pkg.install nginx(只是下載)
??????????????????salt '*' service.start nginx(啟動(dòng))
-
(Ⅵ),計(jì)劃任務(wù)(每一個(gè)用戶都有自己的計(jì)劃任務(wù))
查看:salt '*' cron.list_tab root(用戶)- 6.1,進(jìn)入到salt里,
vim crontab.sls - 6.2,寫入以下內(nèi)容
前提是從機(jī)里有ntpdate文件(沒有需自創(chuàng)),按路徑寫入↓
/usr/sbin/ntpdate times.aliyun.com >>/dev/null: cron.present: - user: root(注意空格,否則報(bào)錯(cuò)) - minute: '*/5'(分:minute 時(shí):hour 日:daymonth 月:month 周:dayweek)-
6.3,執(zhí)行:
salt '*' state.sls crontab
salt執(zhí)行定時(shí)任務(wù)失敗.png
salt執(zhí)行定時(shí)任務(wù)成功.png 6.4,驗(yàn)證:主機(jī)執(zhí)行
salt '*' cron.list_tab root或者 從機(jī)執(zhí)行crontab -l查看任務(wù)6.5,修改任務(wù),直接修改文件,再執(zhí)行一遍即可。
- 6.1,進(jìn)入到salt里,
-
(Ⅶ),刪除計(jì)劃任務(wù)
- 7.1,進(jìn)入到salt里,
vim del_cron.sls - 7.2,寫入一下內(nèi)容
/usr/sbin/ntpdate times.aliyun.com >>/dev/null: cron.absent: - name: /usr/sbin/ntpdate times.aliyun.com >>/dev/null- 7.3,執(zhí)行:
salt '*' state.sls del_cron - 7.4,驗(yàn)證:主機(jī)執(zhí)行
salt '*' cron.list_tab root或者 從機(jī)執(zhí)行crontab -l查看任務(wù)
- 7.1,進(jìn)入到salt里,
(Ⅷ),檢索靜態(tài)信息數(shù)據(jù)
salt '*' grains.items:(以鍵值形式展示)
salt '*' grains.item fqdn_ip4:(只顯示某一個(gè)數(shù)據(jù))
salt '*' grains.item fqdn_ip4 os id:(顯示多個(gè)數(shù)據(jù))(Ⅸ),其他
查看salt版本:salt-run manage.versions
四、windows安裝salt-minion
- 1,下載,安裝(自動(dòng)添加環(huán)境變量)
官網(wǎng)安裝:https://repo.saltstack.com/#windows - 2,按提示操作(在文件所在位置打開cmd窗口執(zhí)行):
提示:Salt-Minion-2018.3.3-Py2-AMD64-Setup.exe /S /master=yoursaltmaster /minion-name=yourminionname
操作:Salt-Minion-2018.3.3-Py3-AMD64-Setup.exe /S /master=10.0.0.10 /minion-name=192.168.0.109
(安裝,啟動(dòng)(會(huì)在服務(wù)自動(dòng)開啟,如果沒開啟,手動(dòng)開啟)) - 3,啟動(dòng)后,查看master端(linux機(jī)):
salt-key
salt操控windows系統(tǒng).png - 4,接收,執(zhí)行命令(windows命令和linux命令不同,有些會(huì)沒有效果)。
?????分發(fā)文件(成功):salt-cp '192.168.0.109' ./test.py C:/
?????查看ip(有結(jié)果):salt '192.168.0.109' cmd.run 'ipconfig'
?????打開計(jì)算機(jī)(沒打開):salt '192.168.0.109' cmd.run 'calc'
salt給windows分發(fā)文件.png
??????查看各個(gè)salt版本:salt-run manage.versions
查看各個(gè)salt版本.png
五、連接
SaltStack 的通訊及安全機(jī)制:SaltStack 的通訊及安全機(jī)制
SaltStack 詳解:SaltStack 詳解博客
SaltStack 常用命令:SaltStack 常用命令1
SaltStack 常用命令:SaltStack 常用命令2
SaltStack 官網(wǎng):saltstack官網(wǎng)










