saltstack運(yùn)維工具

一、初識(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
  • 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行,修改masterip
      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
  • 4、管理(第一次有一個(gè)認(rèn)證的過程(手動(dòng)認(rèn)證↓,自動(dòng)認(rèn)證(配置文件)))

    主:salt-key(顯示)

    salt-key.png

    salt-key -A: 允許所有小弟受管制(一般都是-A)
    salt-key -a: 指定某個(gè)小弟受管制

    [root@master / 02:23:15]# salt-key -A
    
    The 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)
  • (Ⅰ),檢查主機(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ù)
    
  • (Ⅱ),檢查slave-1是否存活(前提是salt-minion已啟動(dòng)):salt 'slave-1' test.ping

    slave-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: 644
    

    salt文件分發(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í)行一遍即可。

  • (Ⅶ),刪除計(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ù)
  • (Ⅷ),檢索靜態(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)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容