自動化運維工具 SaltStack (一)(Saltstack的簡介+遠程執行+文件的幾種編寫方式)

SaltStack簡介

saltstack是一個配置管理系統,能夠維護預定義狀態的遠程節點。

saltstack是一個分佈式遠程執行系統,用來在遠程節點上執行命令和查詢數據。
saltstack是運維人員提高工作效率、規範業務配置與操作的利器。

Salt的核心功能

  • 使命令發送到遠程系統是並行的而不是串行的
  • 使用安全加密的協議
  • 使用最小最快的網絡載荷
  • 提供簡單的編程接口
  • Salt同樣引入了更加細緻化的領域控制系統來遠程執行,使得系統成爲目標不止可以通過主機名,還可以通過系統屬性。

Saltstack採用C/S模式,由master和minion構成,master是服務器端minion是客戶端。

在master上發送命令給符合條件的minion,minion就會執行相應的命令,master和minion之間是通過ZeroMQ(消息隊列進行通信的。

在這裏插入圖片描述
SaltStack的master端默認監聽4505和4406,4505爲master和minion認證通信端口,4506爲master用來發送命令或接收minion的命令執行返回信息。

當客戶端啓動後,會主動連接master端註冊,然後一直保持該TCP連接,而master通過這條TCP連接對客戶端進行控制。如果斷開連接,master對客戶端將不能進行控制。但是,當客戶端檢查到連接斷開後,會定期向master端請求註冊連接。

在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述

SaltStack的安裝

官網:https://www.saltstack.com/
設置官方YUM倉庫:
# yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest.el7.noarch.rpm
master端設置:
# yum install -y salt-master	#安裝master端
# systemctl enable salt-master	#設置master自啓動
# systemctl start salt-master	#啓動master服務
minion端配置:
# yum install -y salt-minion	#安裝minion端
# vim /etc/salt/minion
master: 172.25.0.1		#設置master主機的ip
# systemctl enable salt-minion
# systemctl start salt-minion

在這裏插入圖片描述在這裏插入圖片描述
1.配置官網得到倉庫地址,獲取最新的軟件包
在這裏插入圖片描述2.在這裏插入圖片描述或者
在這裏插入圖片描述
在這裏插入圖片描述

啓動salt-master
在這裏插入圖片描述在這裏插入圖片描述
3.ser3minion同樣建立倉庫(ser4和ser3的配置一樣,這裏以ser3爲例子)

在這裏插入圖片描述在這裏插入圖片描述4.在ser2上
在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述再次查看時
在這裏插入圖片描述在這裏插入圖片描述5.配置minion
在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述6.在這裏插入圖片描述在這裏插入圖片描述7.在master端做認證
在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述8.master和minion交換公鑰的過程
在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述
在minion端
在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述9.測試連接
在這裏插入圖片描述在這裏插入圖片描述
注意:
在這裏插入圖片描述在這裏插入圖片描述

SaltStack遠程執行

遠程執行shell命令

Salt命令由三個主要部分構成:
salt '<target>' <function> [arguments]
target: 指定哪些minion, 默認的規則是使用glob匹配minion id. 
# salt '*' test.ping
Targets也可以使用正則表達式:
# salt -E 'server[1-3]' test.ping
Targets也可以指定列表:
# salt -L 'server2,server3' test.ping
funcation是module提供的功能,Salt內置了大量有效的functions. 
# salt '*' cmd.run 'uname -a'
arguments通過空格來界定參數:
# salt 'server2' sys.doc pkg			#查看模塊文檔
# salt 'server2' pkg.install httpd
# salt 'server2' pkg.remove httpd
salt內置的執行模塊列表:
http://docs.saltstack.cn/ref/modules/all/index.html

在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述pkg模塊
在這裏插入圖片描述在這裏插入圖片描述

創建文件執行遠程命令

在這裏插入圖片描述
在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在ser3上安裝完成
在這裏插入圖片描述

編寫遠程執行模塊

創建模塊目錄:
# mkdir /srv/salt/_modules
編寫模塊文件:
# vim /srv/salt/_modules/mydisk.py
def df():
    return __salt__['cmd.run']('df -h')
同步模塊:
# salt server2 saltutil.sync_modules

在這裏插入圖片描述
1.在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述

幾種編寫文件的方式

1.在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述2.在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述3.在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述4.如何實現不同節點裝不一樣的包
在這裏插入圖片描述(1)
在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述(2)
在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述5.如何更好的對目錄進行管理
在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述

file模塊配置httpd

在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述
在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述
在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述

yaml語法與配置管理

規則一: 縮進
Salt需要每個縮進級別由兩個空格組成,不要使用tabs。
規則二: 冒號
字典的keys在YAML中的表現形式是一個以冒號結尾的字符串。
my_key: my_value
規則三: 短橫槓
想要表示列表項,使用一個短橫槓加一個空格。
  - list_value_one
  - list_value_two
創建一個sls文件:
# vim /srv/salt/apache.sls
httpd:                 	# ID聲明
  pkg:                  	# 狀態聲明
    - installed           	# 函數聲明
指定主機執行:
# salt server2 state.sls apache
準備Top文件:
# vim /srv/salt/top.sls
base:
  '*':
    - apache
批量執行:
# salt '*' state.highstate
	
Salt 狀態系統的核心是SLS,或者叫SaLt State 文件。
SLS表示系統將會是什麼樣的一種狀態,而且是以一種很簡單的格式來包含這些數據,常被叫做配置管理。
sls文件命名:
sls文件以”.sls”後綴結尾,但在調用是不用寫此後綴。
使用子目錄來做組織是個很好的選擇。
 init.sls 在一個子目錄裏面表示引導文件,也就表示子目錄本身, 所以``apache/init.sls`` 就是表示``apache``.
如果同時存在apache.sls 和 apache/init.sls,則 apache/init.sls 被忽略,apache.sls將被用來表示 apache.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章