自動化運維saltstack(資源)

簡介

      SaltStack是一個服務器基礎架構集中化管理平臺,具有配置管理、遠程執行、監控等功能,通常能夠理解爲簡化版的puppet和增強版的func。SaltStack基於Python語言實現,結合輕量級消息隊列(ZeroMQ)與Python第三方模塊(Pyzmq、PyCrypto、Pyjinjia二、python-msgpack和PyYAML等)構建。 經過部署SaltStack環境,咱們能夠在成千上萬臺服務器上作到批量執行命令,根據不一樣業務特性進行配置集中化管理、分發文件、採集服務器數據、操做系統基礎及軟件包管理等,SaltStack是運維人員提升工做效率、規範業務配置與操做的利器。html

      SaltStack是一種全新的基礎設施管理方式,部署輕鬆,在幾分鐘內能夠運行起來,擴展性好,很容易管理上萬臺服務器,速度夠快,服務器之間秒級通信。python

       Saltstack能夠實現雲計算與數據中心架構編排,Saltstack能夠由zabbix監控事件調用,經過Saltstack的salt-cloud實現對docker和openstack等雲平臺的支持,配合saltstack的mine實時發現功能就能夠實現各類雲平臺業務自動擴展;Saltstack能夠與CMDB相結合實現運維平臺化、自動化和智能化。linux

      Saltstack在企業中實現服務器部署的自動化運維,saltstack是基於python開發的一套C/S架構配置管理工具,它的底層使用zeroMQ消息隊列pub/sub方式通訊,使用SSL證書籤發的方式進行認證管理。nginx

      salt咱們選擇了0.16.0版,該版中加入了multi-masterr 特性,在這種架構下全部的minion將鏈接到全部配置的master上去。當一個master出現故障可使用其他的master繼續提供服務,不會影響咱們的正常使用。web

優缺點分析:優勢是可使用簡單的配置模塊或複雜的腳本,Web界面能夠看到運行和監控的工做狀態、事件日誌,擴展能力極強,缺點是缺乏生成深度報告的能力。redis

實現標準化 運維       : mongodb

        第一步是物理基礎設施的標準化,例如,識別物理對像服務器、交換機、機櫃等硬件;識別這些物理對像的屬性,服務器的序列號、ip地址、廠商等信息;識別這些對像之間的關係,服務器所在的機櫃、接入哪一個交換機的哪一個接口了等信息。docker

        第二步是應用的標準化,應用服務、中間件,數據庫等;例如,數據庫的表、視圖、存儲過程的標準化,表的字段名、值,索引等,表和視圖之間的關聯關係等。shell

       第三步是流程標準化,如備份、軟件升級、殺毒,新業務上線等流程的標準化,數據庫

saltstack架構以下圖:

 

 

特性

        (1)、部署簡單、方便;

        (2)、支持大部分UNIX/Linux及Windows環境;

        (3)、主從集中化管理;

        (4)、配置簡單、功能強大、擴展性強;

        (5)、主控端(master)和被控端(minion)基於證書認證,安全可靠;

        (6)、支持API及自定義模塊,可經過Python輕鬆擴展。

Master與Minion認證

(1)、minion在第一次啓動時,會在/etc/salt/pki/minion/(該路徑在/etc/salt/minion裏面設置)下自動生成minion.pem(private key)和 minion.pub(public key),而後將 minion.pub發送給master。

(2)、master在接收到minion的public key後,經過salt-key命令accept minion public key,這樣在master的/etc/salt/pki/master/minions下的將會存放以minion id命名的 public key,而後master就能對minion發送指令了。

四、Master與Minion的鏈接

(1)、SaltStack master啓動後默認監聽4505和4506兩個端口。4505(publish_port)爲saltstack的消息發佈系統,4506(ret_port)爲saltstack客戶端與服務端通訊的端口。若是使用lsof 查看4505端口,會發現全部的minion在4505端口持續保持在ESTABLISHED狀態。

 

Saltstack在企業中的部署步驟:

一、肯定saltstack軟件依賴關係是否知足要求:saltstack要求python的版本大於2.6或小於3.0,還須要檢查如下的庫,包括msgpack-python、yaml、jinja二、markupsafe、apache-libcloud、requests等。

三、建立一個master服務的備份節點並複製主master節點的key到備節點:

默認的master的private key是在目錄: /etc/salt/pki/master. 將該目錄下的master.pem拷貝到備master節點的同一位置,對master的public key文件master.pub作一樣的操做,啓用備master節點,在備節點接受key。

四、重啓minions:配置完成後,minion將會對主master和備master進行覈對,而且兩個master都對minion有操做權限。

注:minion能夠自動檢測失敗的master,而且嘗試重連到一個更快的master,將minion端的參數master_alive_interval 設置爲true,便可開啓該功能。

五、saltstack狀態文件的編寫,saltstack上線後,運維工做從複雜的重複的服務器部署和配置工做轉移到saltstack狀態文件的編寫和維護,狀態文件的編寫要考慮模塊化和通用性,在大批量部署以前要通過測試,沒有問題後再部署,如下是一些常常用到的測試命令:

(1)、查詢網絡鏈接狀況--是否能鏈接到客戶端

(2)、查詢網卡ip

(3)、查詢磁盤空間

還有不少常常用到的命令在此就不一一列舉了,Saltstack能夠實現雲計算與數據中心架構編排,Saltstack能夠由zabbix監控事件調用,經過Saltstack的salt-cloud實現對docker和openstack等雲平臺的支持,配合saltstack的mine實時發現功能就能夠實現各類雲平臺業務自動擴展;Saltstack能夠與CMDB相結合實現運維平臺化、自動化和智能化。

 

 

自動化運維系列

    一、cobbler實現自動裝機

    二、saltstack實現工程自動化配置

    三、kubernetes實現容器自動化編排

    四、zabbix實現自動化監控

    五、elastic實現應用日誌自動化收集

    六、jenkins實現開發持續化交付

    七、自動化運維是基於流程化的框架

            

使用自動化運維的緣由

•傳統運維效率低,大多工做人爲完成

•傳統運維工做繁瑣,容易出錯

•傳統運維每日重複作相同的事情

•傳統運維沒有標準化流程

•傳統運維的腳本繁多,不能方便管理

•自動化運維就是要解決上面全部問題

• Puppet (www.puppetlabs.com)
基於rubby開發,c/s架構,支持多平臺,可管理配置文件、用戶、cron任務、軟件包、系統服務等。 分爲社區版(免費)和企業版(收費),企業版支持圖形化配置。

• Saltstack(官網 https://saltstack.com,文檔docs.saltstack.com )
基於python開發,c/s架構,支持多平臺,比puppet輕量,在遠程執行命令時很是快捷,配置和使用比puppet容易,能實現puppet幾乎全部的功能。

• Ansible (www.ansible.com )
更saltstack安裝加簡潔的自動化運維工具,不須要在客戶端上安裝agent,基於python開發。能夠實現批量操做系統配置、批量程序的部署、批量運行命令。

ITIL即信息技術基礎架構庫(Information Technology Infrastructure Library),主要適用於IT服務管理(ITSM)。ITIL爲企業的IT服務管理實踐提供了一個客觀、嚴謹、可量化的標準和規範。ITIL已經成爲了IT服務管理的國際標準,而CMDB配置管理數據庫(Configuration Management Database)則是實現ITIL最重要的內容。

已個新業務上線須要的操做  : DNS變動、LVS變動、OS初始化、自動化測試、持續部署、持續反饋、監控、業務調用關係配置等等。

企業自動化運維整體規劃圖:

 

 

Saltstack簡介

  SaltStack是一個服務器基礎架構集中化管理平臺,具有配置管理、遠程執行、監控等功能,基於Python語言實現。

     安裝SaltStack後咱們就能夠在成千萬臺服務器上作到批量執行命令,根據不一樣業務進行配置集中化管理、傳送文件、修改配置,採集數據、啓停程序及命令執行等,SaltStack是運維工程人員提升工做效率、規範業務配置與操做的利器。

如圖所示,管理員經過salt的主控端master節點上的4505,4506端口服務對安裝了minion的被控端進行管理。結合被控端的業務分組和YAML規範的sls文件定義,實現被控主機狀態管理。

Saltstack簡化版安裝配置

測試環境:

master:     192.168.1.101

minion1:   192.168.1.102

minion2:   192.168.1.103

master安裝

yum install -y https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm
yum install salt-master -y

minion安裝

yum install -y https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm
yum install salt-minion -y

master配置

#綁定master通訊IP
interface: 192.168.1.101
#自動認證,避免手動運行salt-key來確認證書信任
auto_accept: True
#指定文件根目錄位置
file_roots: 
  base:
   - /srv/salt/

minion配置

#制定master通訊ip
master: 192.168.1.101
#修改被控端主機識別id,建議使用操做系統主機名來配置
id: server2   #192.168.1.103上配置server3

master服務啓動

systemctl start salt-master
systemctl enable salt-master

minion服務啓動

systemctl start salt-minion
systemctl enable salt-minion

 

Saltstack功能測試

利用Saltstack遠程執行命令,命令格式爲:

   salt ‘<操做目標>’  <方法>   [參數]

 

一、在server2上執行free -m命令查看內存

salt ‘server2’   cmd.run 'free -m'

二、在全部機器上執行df -k命令磁盤使用狀況

salt  '*'   cmd.run 'df -k'

三、將主控機配置的主目錄下的文件test.txt複製到全部機器的/tmp下

salt '*'  cp.get_file salt://test.txt  /tmp

四、在server2上配置定時任務

salt server2 cron.set_job root '*' '*' '*' '*' 1 /usr/bin/weekly

                                                  說明   

                               master須要開啓4505,4506端口

 

saltstack安裝

SaltStack是一個服務器基礎架構集中化管理平臺,具有配置管理、遠程執行、監控等功能,基於Python語言實現。

• saltstack介紹https://docs.saltstack.com/en/latest/topics/index.html

• 可使用salt-ssh遠程執行,相似ansible,

• 也支持c/s模式,下面咱們將講述該種模式的使用,須要準備兩臺機器

• 133.130爲服務端,133.132爲客戶端

• 設置hostname以及hosts,aming-01,aming-02

• 兩臺機器所有安裝saltstack yum源

• yum install -y https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm

• 130上執行 yum install -y salt-master salt-minion

• 132上執行 yum install -y salt-minion

實例:

設置主機名:wang -01,wang-02

• 133.130服務端操做

[root@localhost 01]# vi /etc/hosts
192.168.133.130 wang-01           #增長下面兩行
192.168.133.132 wang-02

[root@localhost 01]# cd /usr/local/src
[root@localhost src]# yum install -y yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm 

[root@localhost 01]# vi /etc/hosts
192.168.133.130 wang-01           #增長下面兩行
192.168.133.132 wang-02

[root@localhost 01]# yum install -y salt-master salt-minion
[root@localhost 01]# yum list | grep salit           #橘黃色的是yum安裝的
[root@localhost 01]#

133.132客戶端上操做

[root@localhost 02]# vi /etc/hosts
192.168.133.130 wang-01           #增長下面兩行
192.168.133.132 wang-02

[root@localhost 01]# cd /usr/local/src
[root@localhost src]# yum install -y yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm 

[root@localhost 02]#  yum install -y salt-minion
[root@localhost 02]# yum list | grep salit           # 羅列出salt有關的包

擴展 -------給多臺服務器設置主機名

一。準備工做

1.全部服務器操做系統root帳戶密碼須要一致,且網絡互通

2.pssh工具:能夠實現批量執行命令,發送文件等等,詳細能夠關注我另外博文《Linux批量操做pssh工具》

3.ssh密鑰同步:即先生成ssh-key,並經過pscp工具發送至每一臺服務器/root/.ssh上,實現服務器之間ssh免密碼登陸,詳細能夠關注我另外博文《Linux免密碼登陸》

4.設計好每臺服務器IP與主機名Hostname對應關係 /root/host例如:

192.168.225.128 server1

192.168.225.129 server2

192.168.225.130 server3

192.168.225.131 server4

192.168.225.132 server5

192.168.225.133 server6

192.168.225.134 server7

192.168.225.135 server8

192.168.225.136 server9

 

二。批量修改主機名

1.添加hostname.sh文件

[aliyunzixun@xxx.com ~]# vim hostname.sh

ip=`ifconfig eth0 | grep 'inet ' | awk '{print $2}'`

hostname=`cat /root/host | grep $ip | awk '{print $2}'`

echo $ip

echo $hostname

hostnamectl set-hostname --static $hostname

hostname $hostname

注意:我們是經過服務器IP地址來修改主機名的,上面接口必定要對應準確,命令較爲簡單。

2.把生成的這兩個文件(host與hostname.sh)經過pscp工具發送到全部的服務器上任意的同一目錄下

pscp -h iplist /root/host /root/hostname.sh /root/# iplist是全部服務器IP,若是不會使用,請看準備工做第二點。

3.經過pssh工具,批量給予hostname.sh這個文件的可執行權限

pssh -h iplist -i 'chmod +x /root/hostname.sh' # iplist是全部服務器IP,若是不會使用,請看準備工做第二點。

4.經過pssh工具,批量執行hostname.sh文件

pssh -h iplist -i 'sh /root/hostname.sh'

三。其餘

這種批量修改方法比較簡單,合適我們這種不常用腳本的人,另外以上操做系統爲centos7以上,

 

啓動salt相關服務

• 130上編輯配置文件

• vi /etc/salt/minion //增長

• master: aming-01

• 啓動服務systemctl start salt-master; systemctl start salt-minion

實例:

130上編輯配置文件

[root@localhost 01]# vi /etc/salt/minion //增長
把#master:salt   修改爲  master: aming-01     #master的主機名

[root@localhost 01]# systemctl start salt-master 啓動服務
[root@localhost 01]# ps aux | grep salt          #查看salt啓動成功沒

注意:minion不監聽端口,master監聽
[root@localhost 01]# netstat -lntp              master監聽的端口
[root@localhost 01]# systemctl start salt-minion   #若是啓動不了。更換成02,在02中安裝salt-master



[root@localhost 02]#
[root@localhost 02]#

 

• 132上編輯配置文件

• vi /etc/salt/minion //增長

• master: aming-01

• 啓動服務systemctl start salt-minion

• 服務端監聽4505和4506兩個端口,4505爲消息發佈的端口,4506爲和客戶端通訊的端口

實例:

 

[root@localhost 02]# vi /etc/salt/minion //增長
把#master:salt   修改爲  master: aming-02     #master的主機名


[root@localhost 02]# systemctl start salt-minion 
[root@localhost 02]# ps aux | grep salt          #查看salt啓動成功沒
[root@localhost 02]#
[root@localhost 02]#

 

saltstack配置認證

• master端和minion端通訊須要創建一個安全通道,傳輸過程須要加密,因此得配置認證,也是經過密鑰對來加密解密的

• minion在第一次啓動時會在/etc/salt/pki/minion/下生成minion.pem和minion.pub,其中.pub爲公鑰,它會把公鑰傳輸給master

• master第一次啓動時也會在/etc/salt/pki/master下生成密鑰對,當master接收到minion傳過來的公鑰後,經過salt-key工具接受這個公鑰,一旦接受後就會在/etc/salt/pki/master/minions/目錄裏存放剛剛接受的公鑰,同時客戶端也會接受master傳過去的公鑰,把它放在/etc/salt/pki/minion目錄下,並命名爲minion_master.pub

• 以上過程須要藉助salt-key工具來實現

• 執行以下命令 salt-key -a aming-01// -a後面跟主機名,能夠認證指定主機

• salt-key -a aming-02

實例:

[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 0]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#

 

salt-key命令用法

• -a  後面跟主機名,認證指定主機

• -A 認證全部主機

• -r  跟主機名,拒絕指定主機

• -R  拒絕全部主機

• -d 跟主機名,刪除指定主機認證

• -D 刪除所有主機認證

• -y 省略掉交互,至關於直接按了y

 

saltstack遠程執行命令

• salt '*' test.ping //這裏的*表示全部已經簽名的minion端,也能夠指定一個

• salt 'aming-01' test.ping

• salt '*' cmd.run "hostname"

• 說明: 這裏的*必須是在master上已經被接受過認證的客戶端,能夠經過salt-key查到,一般是咱們已經設定的id值。關於這部份內容,它支持通配、列表以及正則。 好比兩臺客戶端aming-01,aming-02, 那咱們能夠寫成salt 'aming-*', salt 'aming-0[12]'  salt -L 'aming-01,aming-02'   salt -E 'aming-(01|02)'等形式,使用列表,即多個機器用逗號分隔,並且須要加-L,使用正則必需要帶-E選項。 它還支持grains,加-G選項,pillar 加-I選項,下面會介紹到。

saltstack - grains

• grains是在minion啓動時收集到的一些信息,好比操做系統類型、網卡ip、內核版本、cpu架構等。

• salt 'aming-02' grains.ls 列出全部的grains項目名字

• salt 'aming-02' grains.items 列出全部grains項目以及值

• grains的信息並非動態的,並不會實時變動,它是在minion啓動時收集到的。

• 咱們能夠根據grains收集到的一些信息,作配置管理工做。

• grains支持自定義信息。

 

saltstack – 自定義grains

• minion上:

• vim /etc/salt/grains  //添加:

• role: nginx

• env: test

• 重啓minion服務

• systemctl restart salt-minion

• master上:

• 獲取grains:

• salt '*' grains.item role env

• 能夠藉助grains的一些屬性信息來執行

• salt -G role:nginx cmd.run 'hostname'

實例:

[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 0]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#

 

saltstack – pillar

• pillar和grains不同,是在master上定義的,而且是針對minion定義的一些信息。像一些比較重要的數據(密碼)能夠存在pillar裏,還能夠定義變量等。

• 配置自定義pillar

• vim  /etc/salt/master

• 找到以下配置://去掉前面的警號

•pillar_roots:

•  base: #此行前面有兩個空格

•    - /srv/pillar #此行前面有4個空格

• mkdir /srv/pillar

• vim /srv/pillar/test.sls  //內容以下

• conf: /etc/123.conf

• vi /srv/pillar/top.sls  //內容以下

•base:

•  'aming-02': #此行前面有兩個空格

•    - test #此行前面有4個空格

• 重啓master

• systemctl  restart salt-master

• 當更改完pillar配置文件後,咱們能夠經過刷新pillar配置來獲取新的pillar狀態:

• salt '*' saltutil.refresh_pillar

• 驗證:salt  '*' pillar.item conf

• pillar一樣能夠用來做爲salt的匹配對象。好比 salt  -I 'conf:/etc/123.conf'  test.ping

實例:

[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 0]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#

 

 

saltstack – 安裝配置httpd

• master上 vi /etc/salt/master //搜索找到file_roots

• 打開以下內容的註釋:

•file_roots:

•  base: #前面有兩個空格

•    - /srv/salt #前面有4個空格

• mkdir  /srv/salt ; cd /srv/salt

• vi /srv/salt/top.sls  //加入以下內容

•base:

•  '*':  #前面有兩個空格

•    - httpd #前面有4個空格

• 意思是,在全部的客戶端上執行httpd模塊

• 重啓 systemctl restart salt-master

•master上vi /srv/salt/httpd.sls  //加入以下內容,這個就是httpd模塊的內容

•httpd-service:

•  pkg.installed:

•    - names:    //這裏若是隻有一個服務,那麼就能夠寫成 –name: httpd 不用再換一行了。

•      - httpd

•      - httpd-devel

•  service.running:

•    - name: httpd

•    - enable: True

• 說明: httpd-service是id的名字,自定義的。pkg.installed 爲包安裝函數,下面是要安裝的包的名字。service.running也是一個函數,來保證指定的服務啓動,enable表示開機啓動。

• 執行: salt 'aming-02' state.highstate//執行過程會比較慢,由於客戶端上在yum install httpd httpd-devel

實例:

[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 0]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#

 

saltstack – 配置管理文件

•master上vi /srv/salt/test.sls  //加入以下內容

•file_test:

•  file.managed:

•    - name: /tmp/aminglinux.com

•    - source: salt://test/123/1.txt

•    - user: root

•    - group: root

•    - mode: 600

•說明:第一行的file_test爲自定的名字,表示該配置段的名字,能夠在別的配置段中引用它,source指定文件從哪裏拷貝,這裏的salt://test/123/1.txt至關因而/srv/salt/test/123/1.txt

• mkdir /srv/salt/test/123

• cp /etc/passwd /srv/salt/test/123/1.txt

• vi /srv/salt/top.sls //改成以下內容

•base:

•  '*':

•    - test

• 執行: salt 'aming-02' state.highstate

• 檢查aming-02上是否有/tmp/aminglinux.com,檢查內容以及權限

實例:

[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 0]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#

 

saltstack – 配置管理目錄

• master上vi /srv/salt/test_dir.sls  //加入以下內容

•file_dir:

•  file.recurse:

•    - name: /tmp/testdir

•    - source: salt://test/123

•    - user: root

•    - file_mode: 640

•    - dir_mode: 750

•    - mkdir: True

•    - clean: True //加上它以後,源刪除文件或目錄,目標也會跟着刪除,不然不會刪除

• 修改top.sls, vi /srv/salt/top.sls //改成以下內容

•base:

•  '*':

•    - test_dir

• 執行: salt 'aming-02' state.highstate

• 檢查aming-02上是否有/tmp/testdir,檢查裏面的目錄、文件以及權限

• 說明:這裏有一個問題,若是source對應的目錄裏有空目錄的話,客戶端上不會建立該目錄

實例:

[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 0]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#

 

saltstack – 配置管理遠程命令

• master上vi /srv/salt/shell_test.sls  //加入以下內容

• shell_test:

•  cmd.script:

•    - source: salt://test/1.sh

•    - user: root

• vi /srv/salt/test/1.sh //加入以下內容

•#!/bin/bash

•touch /tmp/111.txt

•if [ ! -d /tmp/1233 ]

•then

•    mkdir /tmp/1233

•fi

• 更改top.sls內容

•base:

•  '*':

•    - shell_test

• 執行: salt 'aming-02' state.highstate

• 檢查是否有/tmp/111.txt和/tmp/1233

實例:

[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 0]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#

 

saltstack – 配置管理任務計劃

• master上vi /srv/salt/cron_test.sls  //加入以下內容

•cron_test:

•  cron.present:

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

•    - user: root

•    - minute: '*'

•    - hour: 20

•    - daymonth: '*'

•    - month: '*'

•    - dayweek: '*

• 注意,*須要用單引號引發來。固然咱們還可使用file.managed模塊來管理cron,由於系統的cron都是以配置文件的形式存在的。想要刪除該cron,須要增長:

•cron.absent:

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

• 二者不能共存,要想刪除一個cron,那以前的present就得去掉。

• 更改top.sls

•base:

•  '*':

•    - cron_test

• 執行: salt 'aming-02' state.highstate

• 到aming-02上檢查cron,會看到提示# Lines below here are managed by Salt, do not edit

• 咱們不能隨意改動它,不然就無法刪除或者修改這個cron了。

實例:

[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 0]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#

 

saltstack – 其它可能會用到的命令

• cp.get_file 拷貝master上的文件到客戶端

• salt '*' cp.get_file salt://test/1.txt  /tmp/123.txt

• cp.get_dir 拷貝目錄

• salt '*' cp.get_dir salt://test/conf /tmp/ //會自動在客戶端建立conf目錄,因此後面不要加conf,若是寫成 /tmp/conf/  則會在/tmp/conf/目錄下又建立conf

• salt-run manage.up  顯示存活的minion

• salt '*' cmd.script salt://test/1.sh  命令行下執行master上的shell腳本

實例:

[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 0]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#

 

salt-ssh使用

• salt-ssh不須要對客戶端作認證,客戶端也不用安裝salt-minion,它相似pssh/expect

• 安裝很簡單yum install -y https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm

• yum install -y salt-ssh

• vi /etc/salt/roster //增長以下內容

•aming-01:

•  host: 192.168.133.130

•  user: root

•  passwd: lishiming

•aming-02:

•  host: 192.168.133.132

•  user: root

•  passwd: lishiming

• salt-ssh --key-deploy '*' -r 'w' //第一次執行的時候會自動把本機的公鑰放到對方機器上,而後就能夠把roster裏面的密碼去掉

實例:

[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 0]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#
[root@localhost 01]#

 

 

常見問題:

 

 

 

參考連接    :   

企業級自動化運維方案設計及Saltstack、Ansible等5種工具比較分析   : https://mp.weixin.qq.com/s/srAH0odplNG31oKGwLfuCQ

 

 

 

連接:

自動化運維工具SaltStack           :  https://blog.csdn.net/sinat_37757403/article/details/78224960

第一天salt stack 筆記  : http://blog.51cto.com/xiaoluoge/1597889

saltstack 系列: http://outofmemory.cn/saltstack/

SaltStack經常使用命令  :  http://www.voidcn.com/article/p-tbrslplu-zv.html

saltstack一些經常使用模塊和api調用方法  :  http://blog.51cto.com/xiaoluoge/1615905

寫一個基於saltstack的自動化運維平臺   :  http://blog.51cto.com/xiaoluoge/1613992

salt-api 使用  :  http://blog.51cto.com/xiaoluoge/1613353

saltstack grains模塊自定義  :  http://blog.51cto.com/xiaoluoge/1612681

saltstack return數據實時返回收集  :  http://blog.51cto.com/xiaoluoge/1612133

持久性session鏈接之memcached高可用方案  :  http://blog.51cto.com/xiaoluoge/1595971

一次腳本和crond引起的系統故障     薦                   :  http://blog.51cto.com/xiaoluoge/1595759

web服務器time_wait值太高解決方案  : http://blog.51cto.com/xiaoluoge/1588666

原  [Saltstack]-{install,open of web}[一]   :  https://blog.csdn.net/u012402276/article/details/51840875

原  [Saltstack]-{grains,pillar}[二]     :  https://blog.csdn.net/u012402276/article/details/51852435

CentOS 7.2 部署Saltstack            :          http://blog.51cto.com/zlyang/1854875

saltstack 基礎入門文檔    :   http://blog.51cto.com/zlyang/1854835

Saltstack快速部署             :  http://blog.51cto.com/zlyang/1792638

saltstack經常使用命令            :      http://blog.51cto.com/liangey/1731438

關於saltstack mine自定義收集minion狀態及應用場景 薦       : http://blog.51cto.com/rfyiamcool/1433843

監控開發之用munin來自定義插件監控redis和mongodb 薦     :   http://blog.51cto.com/rfyiamcool/1426130

 

nginx lua redis解決saltstack下發傳輸文件慢的問題思路 薦   :   http://blog.51cto.com/rfyiamcool/1388127

saltstack event配合websocket客戶端實時推送結果 薦  : http://blog.51cto.com/rfyiamcool/1418208

借用subprocess和gevent、multiprocessing解決saltstack超時不許的問題 薦   :  http://blog.51cto.com/rfyiamcool/1377429 

 

部署SaltStack及批量安裝httpd服務薦    :        http://blog.51cto.com/13630803/2155031

集羣管理系統 Saltstack的資源配置及性能測試 薦      : http://blog.51cto.com/rfyiamcool/1262537

用Saltstack的returners實現批量監控和數據存儲 薦    :   http://blog.51cto.com/rfyiamcool/1264438

用Saltstack的modules和grains實現實時監控平臺      :   http://blog.51cto.com/rfyiamcool/1266437

經過python和websocket構建實時通訊系統[擴展saltstack監控] 薦          : http://blog.51cto.com/rfyiamcool/1269232

關於Saltstack halite 配置管理及二次開發ui [原salt-ui] 薦       :      http://blog.51cto.com/rfyiamcool/1275443

saltstack的rest接口salt-api開發使用指南 薦            :       http://blog.51cto.com/rfyiamcool/1362979

用saltstack cp模塊實現文件管理、拉取和回滾下發 薦   : http://blog.51cto.com/rfyiamcool/1360468

運維平臺化saltstack和jinja2模板構建高可用集羣配置平臺 薦  :   http://blog.51cto.com/rfyiamcool/1351068

利用saltstack的api接口和modules實現實時監控 薦      :    http://blog.51cto.com/rfyiamcool/1345518

利用saltstack的salt-ssh進行集羣管理【無客戶端下】 薦       :  http://blog.51cto.com/rfyiamcool/1305710

使用Saltstack的ssh模塊實現key的集中式管理 [salt.modules.ssh]   :   http://blog.51cto.com/rfyiamcool/1300204

saltstack基於pillar統一配置iptables防火牆實戰       :  http://blog.51cto.com/dyc2005/2178969

跟我學 Saltstack 經常使用模塊及 API :https://mp.weixin.qq.com/s/oKhpKm5f2yNvsNphk3rdqA

如何在 Saltstack 組件下收集被控主機的信息? :https://mp.weixin.qq.com/s/kIm2FpoZ86hl2D3JL_-mRg

如何經過 Saltstack pillar組件定義與被控主機相關的任何數據?  :https://mp.weixin.qq.com/s/KtysK7vog5PHC_SMDiPgMw

 

 

運維資產管理系統cmdb對實施自動化運維的重要性 薦     :   http://blog.51cto.com/rfyiamcool/1370928

相關文章
相關標籤/搜索