[自動化] Saltstack服務配置詳解

Saltstack 簡介

Saltstack 是一個服務器基礎設施管理工具,它具備配置管理、遠程執行、監控等功能。Saltstack由Python語言編寫,基於 C/S 架構,即服務端 master 和客戶端 minions,Master和 Minion之間是經過 Zeromq(消息隊列)進行通訊的 ;適合大規模批量管理服務器。node

Saltstack 經常使用模塊

(1)pkg模塊:包管理,包括增刪更新linux

(2)file模塊:管理文件操做,包括同步文件、設置文件權限和所屬用戶組、刪除文件等。web

(3)cmd模塊:在Million上執行命令或者腳本。shell

(4)user模塊:管理系統帳戶操做。apache

(5)service模塊:管理系統服務操做。vim

(6)cron模塊:管理cron服務操做。bash

saltstack安裝

1.準備工做

準備三臺機器,這三臺機器都關閉selinux以及防火牆服務器

setenforcr 0
systemctl stop firewalld.service
systemctl disable firewalld.service

master服務器 (192.168.100.143)架構

minion服務器 (192.168.100.144 192.168.100.145)ide

2.編輯hosts文件(三臺都配置)

vim /etc/hosts

192.168.100.143 master.saltstack.com
192.168.100.144 web01.saltstack.com
192.168.100.145 web02.saltstack.com

3.分別修改各自的主機名

vim /etc/hostname

 master.saltstack.com   #master服務器
 web01.saltstack.com    #million服務器1
 web02.saltstack.com    #million服務器1

配置完成,重啓生效,再次關閉selinux。

4.安裝

(1)服務端

yum install -y epel-release  #安裝epel源
yum install -y salt-master

(2)客戶端

yum install -y epel-release  #安裝epel源
yum install -y salt-minion

5.配置服務端配置文件(/etc/salt/master)

vim /etc/salt/master

interface: 192.168.100.143     #第15行,修改監聽地址爲本機地址

auto_accept: True     #第215行,主服務器會自動認證被控端的認證,只要被控端在設置完主服務器的IP地址後啓動服務,主服務器就會容許被控端自動認證,以免之後每次都要運行salt-key來確認認證書信任。

file_roots:
  base:
    - /srv/sale
#第416行,去掉註釋。開啓saltstack文件根目錄位置,注意這個目錄默認沒有建立,須要本身手動建立。

nodegroups:   
  group1: 'web01.saltstack.com'
  group2: 'web02.saltstack.com'   #第710行,配置組分類

pillar_opts: True    #第552行,開啓pillar功能,同步文件功能

pillar_roots:
    base:
     - /srv/pillar  #第529行,去掉註釋,pillar的主目錄,須要本身建立

[自動化] Saltstack服務配置詳解

6.建立salt與pillar文件根目錄

mkdir /srv/salt
mkdir /srv/pillar

7.啓動salt-master服務

systemctl start salt-master
systemctl enable salt-master

8.配置million客戶端配置文件(/etc/salt/minion)

vim /etc/salt/minion

master: 192.168.100.143     ##第16行,指定master服務器的IP

id: web01.saltstack.com   #注意冒號要有空格 ##第78行,指定客戶端主機名,另外一臺是web02.saltstack.com

[自動化] Saltstack服務配置詳解

9.分別啓動兩臺客戶端服務

systemctl start salt-minion

10.測試

(1)查看在主服務器上已經被接受過的客戶端

salt-key

[自動化] Saltstack服務配置詳解
(1)測試鏈接服務端和客戶端的通訊狀態

##在主服務器端進行操做

salt '*' test.ping         

web01.saltstack.com:
  True
web02.saltstack.com:
  True

[自動化] Saltstack服務配置詳解
(2)測試遠程執行命令

##在主服務器端進行操做
salt '*' cmd.run 'hostname'    ##遠程執行命令

[自動化] Saltstack服務配置詳解

Saltstack的三大組件

1.grains

grains 是在 minion(客戶端)啓動時收集到的一些信息,好比操做系統類型、網卡ip等,它更適合作一些靜態的屬性值的數據採集 。
使用命令:

salt 'web01.saltstack.com' grains.ls            //列出全部的 grains 項目名字

[自動化] Saltstack服務配置詳解

salt 'web01.saltstack.com' grains.items      //列出全部的 grains 項目名以及值

[自動化] Saltstack服務配置詳解
grains在遠程執行命令時也很方便,示例以下:

salt -G os:CentOS cmd.run 'hostname'

[自動化] Saltstack服務配置詳解

2.pillar

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

salt 'web01.saltstack.com' pillar.items  #查看指定minion的 pillar值

[自動化] Saltstack服務配置詳解
綜上所述,若是你想定義的屬性值是常常變化的,就採用pillar:若是很固定、不易變,就採用 grains。

3.state

state組件是SaltStack的核心功能,經過預先定製好的sls文件對被控端主機進行狀態管理,如程序包、文件、網路配置、系統服務、系統用戶等。state的定義也是經過編寫sls文件進行操做的。

示例一:經過saltstack遠程安裝apache

1.建立入口文件top.sls

mkdir /srv/salt          #配置文件中須要開啓
vim /srv/salt/top.sls     #建立入口文件,入口文件的做用是定義pillar 的數據覆蓋被控主機的有效範圍
base:
  '*':
    - apache

2.建立pillar入口文件apache.sls

vim /srv/salt/apache.sls
apache:           #這裏是自定義的名稱
  pkg.installed:        #安裝包
    - names:
      - httpd
      - httpd-devel
  service.running:
    - name: httpd
    - enable: True

3.重啓服務端服務

systemctl restart salt-master

4.執行命令

salt '*' state.highstate    ##執行並刷新state配置命令

[自動化] Saltstack服務配置詳解
這樣就可遠程安裝apache服務了

示例二:文件目錄管理

一、文件管理

(1)接着編輯以前的 top.sls 文件

vim /srv/salt/top.sls   #修改成以下

base:
  'web02.saltstack.com':
    - file

(2)新建 file.sls 文件

vim /srv/salt/file.sls

file-test:     #自定義
  file.managed:
    - name: /opt/file.txt      #指定遠程客戶端要生成的文件。
    - source: salt://test/abc/1.txt #源文件
    - user: root
    - group: root
    - mode: 644

(3)新建所要測試的源文件

mkdir -p /srv/salt/test/abc/

vim /srv/salt/test/abc/1.txt
   test-test-test

(4)重啓服務端服務

systemctl restart salt-master

(5)執行命令

salt 'web02.saltstack.com' state.highstate    ##執行並刷新state配置命令

[自動化] Saltstack服務配置詳解
[自動化] Saltstack服務配置詳解

二、目錄管理

(1)接着編輯以前的 top.sls 文件

vim /srv/salt/top.sls              #修改成以下
base:
  'web02.saltstack.com':
    - dir

(2)新建 dir.sls 文件

vim /srv/salt/dir.sls
file-dir:
  file.recurse:
    - name: /opt/dir
    - source: salt://test1/a
    - user: root
    - file_mode: 644
    - dir_mode: 755
    - mkdir: True
    - clean: True

注意:clean: True 源刪除文件或目錄,目標也會跟着刪除,不然不會刪除。能夠默認設置爲 False。

(3)新建所要測試的源目錄

mkdir -p /srv/salt/test1/a
 vim /srv/salt/test1/a/0.txt
   12345678

(4)重啓服務端服務

systemctl restart salt-master

(5)執行命令

salt 'web02.saltstack.com' state.highstate    ##執行並刷新state配置命令

[自動化] Saltstack服務配置詳解
[自動化] Saltstack服務配置詳解

示例三:遠程執行

1.遠程執行命令

(1)接着編輯以前的 top.sls 文件

vim /srv/salt/top.sls              #修改成以下
base:
  'web01.saltstack.com':
    - cmd

(2)新建 cmd.sls 文件

vim /srv/salt/cmd.sls
cmd-test:  
  cmd.run:
    - onlyif: test -f /opt/123.txt
    - names:
      - touch /opt/cmdtest.txt
      - mkdir /opt/cmdtest
    - user: root

(3)在web01.saltstack.com主機上建立/opt/123.txt

touch /opt/123.txt

(4)重啓服務端服務

systemctl restart salt-master

(5)執行命令

salt 'web01.saltstack.com' state.highstate    ##執行並刷新state配置命令

[自動化] Saltstack服務配置詳解
[自動化] Saltstack服務配置詳解

2.遠程執行腳本

(1)接着編輯以前的 top.sls 文件

vim /srv/salt/top.sls              #修改成以下
base:
  'web01.saltstack.com':
    - shell

(2)新建 shell.sls 文件

vim /srv/salt/shell.sls
shell-test:  
  cmd.script:
    - source: salt://test/1.sh
    - user: root

(3)新建 1.sh 腳本文件

vim /srv/salt/test/1.sh
 #!/bin/bash
 echo "hello" > /opt/123.txt

(4)重啓服務端服務

systemctl restart salt-master

(5)執行命令

salt 'web01.saltstack.com' state.highstate    ##執行並刷新state配置命令

[自動化] Saltstack服務配置詳解
[自動化] Saltstack服務配置詳解

示例四:管理任務計劃

1.建cron計劃

(1)接着編輯以前的 top.sls 文件

vim /srv/salt/top.sls              #修改成以下
base:
  'web02.saltstack.com':
    - cron

(2)新建 cron.sls 文件

vim /srv/salt/cron.sls
cron-test:  
  cron.present:
    - name: /bin/touch /opt/111.txt
    - user: root
    - minute: '*'
    - hour: 0
    - daymonth: '*'
    - month: '3,5'
    - dayweek: '*'

(3)重啓服務端服務

systemctl restart salt-master

(4)執行命令

salt 'web02.saltstack.com' state.highstate    ##執行並刷新state配置命令

[自動化] Saltstack服務配置詳解
[自動化] Saltstack服務配置詳解

2.刪除 cron

只需修改 cron.sls 文件,
把 cron.present: 改爲 cron.absent便可。而後重啓服務,執行並刷新state配置命令。

vim /srv/salt/cron.sls
cron-test:  
  cron.absent:
    - name: /bin/touch /opt/111.txt
    - user: root
    - minute: '*'
    - hour: 0
    - daymonth: '*'
    - month: '3,5'
    - dayweek: '*'
systemctl restart salt-master
salt 'web02.saltstack.com' state.highstate    ##執行並刷新state配置命令

[自動化] Saltstack服務配置詳解

相關文章
相關標籤/搜索