SaltStack配置管理
上一篇:SaltStack遠程執行
配置管理使用YAML標記語言
YAML
YAML是“YAML不是一種記語言”的外語縮寫 [1] (見前方參考資料原文內容);但為了強調這種語言以數據做為中心,而不是以置標語言為重點,而用返璞詞重新命名。它是一種直觀的能夠被電腦識別的數據序列化格式,是一個可讀性高並且容易被人類閱讀,容易和腳本語言交互,用來表達資料序列的編程語言。
格式
數據結構可以用類似大綱的縮排方式呈現,結構通過縮進來表示,連續的項目通過減號“-”來表示,map結構裏面的key/value對用冒號“:”來分隔。樣例如下:
house: family: name: Doe parents: - John - Jane children: - Paul - Mark - Simone address: number: 34 street: Main Street city: Nowheretown zipcode: 12345
註意:
- 字串不一定要用雙引號標識;
- 在縮排中空白字符的數目並不是非常重要,只要相同階層的元素左側對齊就可以了(不過不能使用TAB字符);
- 允許在文件中加入選擇性的空行,以增加可讀性;
- 在一個檔案中,可同時包含多個文件,並用“——”分隔;
- 選擇性的符號“...”可以用來表示檔案結尾(在利用串流的通訊中,這非常有用,可以在不關閉串流的情況下,發送結束訊號)。
三個規則
縮進:默認兩個空格,不能使用Tab鍵
冒號:冒號後面必須有一個空格,類似於Python的key和value
有兩種寫法
my_key: my_value my_key: my_value
短橫線:後面有一個空格,表示列表,列出多個(比如需要安裝多個軟件包)
寫一個配置
修改master配置文件/etc/salt/master定義路徑(實際生產有測試,開發,生產等目錄)
新建這幾個文件夾
mkdir -p /srv/salt/{base,dev,test,prod}
重啟master
systemctl restart salt-master
PS:file_roots下面base文件夾是必備的
進入文件夾cd /srv/salt/base/寫配置文件,為了區分不同的軟件可以在此處新建一個web文件夾
mkdir web cd web/
寫一個安裝apache的狀態(後綴必須是sls結尾)/srv/salt/base/web/apache.sls
apache-install: pkg.installed: - name: httpd apache-service: service.running: - name: httpd - enable: True
apache-install和apache-service是key也可以叫ID唯一標識符,不能重復
pkg是一個狀態模塊使用裏面的方法installed安裝包
sevice是一個狀態模塊使用裏面的running運行方法
name是安裝的包名稱或者管理的服務的名稱
enable是設置開機自動啟動
PS:salt從上往下讀取執行,讀取到安裝包的命令不同的操作系統使用的命令不同,CentOS使用yum安裝,ubuntu使用apt-get安裝。(這裏是一個虛擬的配置文件salt會根據不同的系統執行的命令不同)
執行前先看
master定義的路徑是
配置文件的路徑是
執行
salt ‘linux-node2.example.com‘ state.sls web.apache
往linux-node2.example.com主機執行,state是模塊,sls是執行方法默認執行是從base目錄下面執行,只需要寫執行的配置文件名,不需要加後綴sls
PS:加入需要執行master設置的其他目錄下面的模塊比如需要執行prod目錄下面的配置文件加參數,saltenv=prod就是從prod下面開始執行了
可以看到node2上面已經啟動了httpd
停止了httpd然後再次在master執行剛剛的命令
所以saltstack除了配置管理也可以狀態管理
SaltStack配置管理