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輕鬆擴展。
(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要求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是一個服務器基礎架構集中化管理平臺,具有配置管理、遠程執行、監控等功能,基於Python語言實現。
安裝SaltStack後咱們就能夠在成千萬臺服務器上作到批量執行命令,根據不一樣業務進行配置集中化管理、傳送文件、修改配置,採集數據、啓停程序及命令執行等,SaltStack是運維工程人員提升工做效率、規範業務配置與操做的利器。
如圖所示,管理員經過salt的主控端master節點上的4505,4506端口服務對安裝了minion的被控端進行管理。結合被控端的業務分組和YAML規範的sls文件定義,實現被控主機狀態管理。
測試環境:
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遠程執行命令,命令格式爲:
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是一個服務器基礎架構集中化管理平臺,具有配置管理、遠程執行、監控等功能,基於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以上,
• 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]#
• 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]#
• -a 後面跟主機名,認證指定主機
• -A 認證全部主機
• -r 跟主機名,拒絕指定主機
• -R 拒絕全部主機
• -d 跟主機名,刪除指定主機認證
• -D 刪除所有主機認證
• -y 省略掉交互,至關於直接按了y
• 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選項,下面會介紹到。
• grains是在minion啓動時收集到的一些信息,好比操做系統類型、網卡ip、內核版本、cpu架構等。
• salt 'aming-02' grains.ls 列出全部的grains項目名字
• salt 'aming-02' grains.items 列出全部grains項目以及值
• grains的信息並非動態的,並不會實時變動,它是在minion啓動時收集到的。
• 咱們能夠根據grains收集到的一些信息,作配置管理工做。
• 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]#
• 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]#
• 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]#
•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]#
• 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]#
• 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]#
• 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]#
• 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-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
連接:
第一天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