4.1 Saltstack入門

1 Saltstack介紹

官網https://docs.saltstack.com/en/latest/

在這裏插入圖片描述

2.自動化運維工具

常用的自動化運維工具

  • puppet
    • 常用於傳統行業,操作較爲複雜
  • ansible
    • 無需客戶端
    • 使用ssh進行連接(ssh連接採用3次握手)
    • 不能並行執行
    • 常用於小型企業
  • saltstack
    • 需要安裝客戶端
    • 可以並行執行
    • 通過主備進行控制
    • 常用於中大型企業

3.saltstack安裝

3.1 修改主機名

1.設置master主機名爲minion01-linux.example.com
[root@130 ~]# hostnamectl set-hostname minion01-linux.example.com
[root@130 ~]# bash
[root@minion01-linux ~]# hostname
minion01-linux.example.com

2.設置客戶端minion主機名爲minion02-linux.example.com
[root@132 ~]# hostnamectl set-hostname minion02-linux.example.com
[root@132 ~]# bash
[root@minion02-linux ~]# hostname
minion02-linux.example.com

3.2 關閉防火牆及selinux

1.關閉主機minion01
[root@minion01-linux ~]# systemctl stop firewalld
[root@minion01-linux ~]# systemctl disable firewalld
[root@minion01-linux ~]# sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
[root@minion01-linux ~]# reboot

2.關閉主機minion02
[root@minion02-linux ~]# systemctl stop firewalld
[root@minion02-linux ~]# systemctl disable firewalld
[root@minion02-linux ~]# sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
[root@minion02-linux ~]# reboot

3.3 配置yum源

1.配置主機minion01
[root@minion01-linux ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@minion01-linux ~]# sed -i 's#\$releasever#7#g' /etc/yum.repos.d/CentOS-Base.repo
[root@minion01-linux ~]# curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

2.配置主機minion02
[root@minion01-linux ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@minion01-linux ~]# sed -i 's#\$releasever#7#g' /etc/yum.repos.d/CentOS-Base.repo
[root@minion01-linux ~]# curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

3.4 同步所有主機時間

1.設置時區(示例爲亞洲時區)
[root@minion01-linux ~]#  timedatectl set-timezone Asia/Shanghai

[root@minion02-linux ~]#  timedatectl set-timezone Asia/Shanghai

2.同步時間爲aliyun時間
[root@minion01-linux ~]# yum -y install ntpdate
[root@minion01-linux ~]# ntpdate time1.aliyun.com

[root@minion02-linux ~]# yum -y install ntpdate
[root@minion02-linux ~]# ntpdate time1.aliyun.com

3.檢測是否同步
[root@minion01-linux ~]# date
2020年 02月 11日 星期二 15:55:07 CST

[root@minion02-linux ~]# date
Tue Feb 11 15:55:02 CST 2020

3.5 建立緩存並下載常用工具

1.建立緩存
[root@minion01-linux ~]# yum makecache fast

[root@minion02-linux ~]# yum makecache fast

2.下載常用工具
[root@minion01-linux ~]# yum -y install wget vim

[root@minion02-linux ~]# yum -y install wget vim

3.6 主控端saltstack安裝

1.安裝主控端的salt-master和salt-minion
[root@minion01-linux ~]# yum -y install salt-master salt-minion

2.修改主控端的配置文件
[root@minion01-linux ~]# sed -i '/^#master:/a master: 192.168.80.130' /etc/salt/minion
[root@minion01-linux ~]# sed -n '/^master/p' /etc/salt/minion
master: 192.168.80.130
//此步可不做,不執行此步則會使用本機名進行認證,id一般設置爲本機IP地址,便於管理
[root@minion02-linux salt]# sed -i '/^#id:/a id: 192.168.80.130' /etc/salt/minion
[root@minion02-linux salt]# sed -n '/^id/p' /etc/salt/minion
id: 192.168.80.130

3.啓動主控端的salt-master和salt-minion,並設置開機自啓
[root@minion01-linux salt]# systemctl start salt-master
[root@minion01-linux salt]# systemctl start salt-minion
[root@minion01-linux salt]# systemctl enable salt-master
Created symlink from /etc/systemd/system/multi-user.target.wants/salt-master.service to /usr/lib/systemd/system/salt-master.service.
[root@minion01-linux salt]# systemctl enable salt-minion
Created symlink from /etc/systemd/system/multi-user.target.wants/salt-minion.service to /usr/lib/systemd/system/salt-minion.service.

[root@minion01-linux salt]# ss -anlt
State      Recv-Q Send-Q Local Address:Port               Peer Address:Port              
LISTEN     0      128           *:22                        *:*                  
LISTEN     0      100           *:4505                      *:*                  
LISTEN     0      100    127.0.0.1:25                        *:*                  
LISTEN     0      100           *:4506                      *:*                  
LISTEN     0      128          :::22                       :::*                  
LISTEN     0      100         ::1:25                       :::*

3.7 在被控機安裝salt-minion客戶端

1.安裝salt-minion客戶端
[root@minion02-linux ~]# yum -y install salt-minion

2.修改被控端的配置文件
[root@minion02-linux salt]# sed -i '/^#master:/a master: 192.168.80.130' /etc/salt/minion
[root@minion02-linux salt]# sed -n '/^master/p' /etc/salt/minion
master: 192.168.80.130

//此步可不做,不執行此步則會使用本機名進行認證,id一般設置爲本機IP地址,便於管理
[root@minion02-linux salt]# sed -i '/^#id:/a id: 192.168.80.132' /etc/salt/minion
[root@minion02-linux salt]# sed -n '/^id/p' /etc/salt/minion
id: 192.168.80.132

3.啓動被控端的salt-minion並設置開機自啓
[root@minion02-linux salt]# systemctl start salt-minion          
[root@minion02-linux salt]# systemctl enable salt-minion
Created symlink from /etc/systemd/system/multi-user.target.wants/salt-minion.service to /usr/lib/systemd/system/salt-minion.service.

4.saltstack配置文件

saltstack的配置文件在/etc/salt目錄

saltstack配置文件說明:

配置文件 說明
/etc/salt/master 主控端(控制端)配置文件
/etc/salt/minion 受控端配置文件

配置文件/etc/salt/master默認的配置就可以很好的工作,故無需修改此配置文件。

配置文件/etc/salt/minion常用配置參數

  • master:設置主控端的IP
  • id:設置受控端本機的唯一標識符,可以是ip也可以是主機名或自取某有意義的單詞

在日常使用過程中,經常需要調整或修改Master配置文件,SaltStack大部分配置都已經指定了默認值,只需根據自己的實際需求進行修改即可。下面的幾個參數是比較重要的

  • max_open_files:可根據Master將Minion數量進行適當的調整
  • timeout:可根據Master和Minion的網絡狀況適當調整
  • auto_accept和autosign_file:在大規模部署Minion時可設置自動簽證
  • master_tops和所有以external開頭的參數:這些參數是SaltStack與外部系統進行整合的相關配置參數

5.SaltStack認證機制

saltstack主控端是依靠openssl證書來與受控端主機認證通訊的,受控端啓動後會發送給主控端一個公鑰證書文件,在主控端用salt-key命令來管理證書。
salt-minion與salt-master的認證過程:

  • minion在第一次啓動時,會在/etc/salt/pki/minion/下自動生成一對密鑰,然後將公鑰發給master
  • master收到minion的公鑰後,通過salt-key命令接受該公鑰。此時master的/etc/salt/pki/master/minions目錄將會存放以minion id命名的公鑰,然後master就能對minion發送控制指令了
    salt-key常用選項
    -L      //列出所有公鑰信息
    -a minion    //接受指定minion等待認證的key
    -A      //接受所有minion等待認證的key
    -r minion    //拒絕指定minion等待認證的key
    -R      //拒絕所有minion等待認證的key
    -f minion   //顯示指定key的指紋信息
    -F      //顯示所有key的指紋信息
    -d minion   //刪除指定minion的key
    -D      //刪除所有minion的key
    -y      //自動回答yes

示例

//查看當前證書情況
[root@minion01-linux salt]# salt-key -L
Accepted Keys:
Denied Keys:
Unaccepted Keys:
192.168.80.130
192.168.80.132
Rejected Keys:

//接受指定minion的新證書
[root@minion01-linux salt]# salt-key -ya 192.168.80.130
The following keys are going to be accepted:
Unaccepted Keys:
192.168.80.130
Key for minion 192.168.80.130 accepted.
[root@minion01-linux salt]# salt-key -L
Accepted Keys:
192.168.80.130
Denied Keys:
Unaccepted Keys:
192.168.80.132
Rejected Keys:

//接受所有minion的新證書
[root@minion01-linux salt]# salt-key -yA
The following keys are going to be accepted:
Unaccepted Keys:
192.168.80.132
Key for minion 192.168.80.132 accepted.
[root@minion01-linux salt]# salt-key -L
Accepted Keys:
192.168.80.130
192.168.80.132
Denied Keys:
Unaccepted Keys:
Rejected Keys:

6. SaltStack遠程執行

6.1 測試所有受控端是否存活

[root@minion01-linux salt]# salt '*' test.ping
192.168.80.132:
    True
192.168.80.130:
    True

6.2 測試指定網段受控端是否存活

[root@minion01-linux salt]# salt '192.168.80*' test.ping
192.168.80.132:
    True
192.168.80.130:
    True

6.3 測試指定受控端192.168.80.132是否存活

[root@minion01-linux salt]# salt '192.168.80.132' test.ping
192.168.80.132:
    True

7. salt命令使用

語法:salt [options] ‘<target>’ <function> [arguments]
常用的options

    --version       //查看saltstack的版本號
    --versions-report   //查看saltstack以及依賴包的版本號
    -h      //查看幫助信息
    -c CONFIG_DIR   //指定配置文件目錄(默認爲/etc/salt/)
    -t TIMEOUT      //指定超時時間(默認是5s)
    --async     //異步執行
    -v      //verbose模式,詳細顯示執行過程
    --username=USERNAME     //指定外部認證用戶名
    --password=PASSWORD     //指定外部認證密碼
    --log-file=LOG_FILE     //指定日誌記錄文件

常用target參數

    -E      //正則匹配
    -L      //列表匹配 
    -S      //CIDR匹配網段
    -G      //grains匹配
    --grain-pcre    //grains加正則匹配
    -N      //組匹配
    -R      //範圍匹配
    -C      //綜合匹配(指定多個匹配)
    -I      //pillar值匹配

示例:

1.正則表達式匹配
[root@minion01-linux salt]# salt -E '132$' test.ping
192.168.80.132:
    True
    
2.列表匹配
[root@minion01-linux salt]# salt -L 192.168.80.130,192.168.80.132 test.ping
192.168.80.130:
    True
192.168.80.132:
    True
    
3.CIDR匹配網段
[root@minion01-linux salt]# salt -S '192.168.80.0/24' test.ping
192.168.80.130:
    True
192.168.80.132:
    True
    
4.grains匹配

5.組匹配(組匹配需在master中定義nodegroups參數,爲其添加組)
[root@minion01-linux salt]# salt -N linux test.ping
192.168.80.132:
    True
    
6.綜合匹配

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章