Saltstack

1.1、Salt单个命令执行

必Salt底层基于ZeroMQ PUB- SUB
pattern, Master/Minions通信高效传递及扩展

image-20210512172216110

Salt部署
安装Salt
Master配置
Minion配置
Key管理
Hello World

安装Salt
CentOS下安装master&minion
Ubuntu下安装master&minion
Windows下安装minion
其他操作系统安装



CentOS下安装master&minion
-------------------------
查看epel
# rpm -qal grep epel

必添加EPEL repo (for CentOS 6)
rpm - ivh http://dl.fedoraproiect.org/pub/epel/8/x86/epel-release-6-8.noarch.rpm

安装master
yum install salt master    #安装salt master
chckconfig salt master on  #配置salt master开机启动
service salt-master start  #启动salt master 

安装minion 
yum install salt -minion   #安装salt minion
sed -i '/#master: salt/a\master: 192.168.3.31\' /etc/salt/minion
                           #配置master ip
chkconfig salt-minion on   #配置salt minion开机启动
service salt-minion start  #启动salt minion

✧注意:
EPEL 5中,zeromq版本为2.1.9版本, 存在keepalive bug, 需要升级到zeromq 3+版本


1.2、saltstack 配置基础

172.31.7.101  master                                                  
172.31.7.102  salt01
172.31.7.103  salt02
172.31.7.104  salt03
172.31.7.105  salt04

172.31.7.101  master
---------------------
配置个主机解析
# vim /etc/hosts
172.31.7.101  master                                                  
172.31.7.102  salt01
172.31.7.103  salt02
172.31.7.104  salt03
172.31.7.105  salt04

给个主机联通
D:\和彩云同步文件夹\scripte file\key-验证各主机联通省密码\ssh-key-push.sh
# bash ssh-key-push.sh

下载rpm包
rpm --import https://repo.saltstack.com/yum/redhat/7/x86_64/latest/SALTSTACK-GPG-KEY.pub

配置yum源
vim /etc/yum.repos.d/saltstack.repo
[saltstack-repo]
name=SaltStack repo for RHEL/CentOS $releasever
baseurl=https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest
enabled=1
gpgcheck=1
gpgkey=https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest/SALTSTACK-GPG-KEY.pub

清除缓存
sudo yum clean expire-cache
sudo yum update

安装master
yum install salt-master

修改配置文件
# sed -ri '/^#master:/c\master: master' /etc/salt/minion

发送主机解析文件到各个主机中
# for i in {1..4};do scp -r /etc/hosts salt0$i:/etc/;done

启动master服务
# systemctl --now enable salt-master



172.31.7.102  salt01   172.31.7.103  salt02
172.31.7.104  salt03   172.31.7.105  salt04
============================================
测试ping,172.31.7.101 master
# ping  master

下载slave节点的包
# yum install -y salt-minion

修改配置文件
# sed -ri '/^#master:/c\master: master' /etc/salt/minion

启动master服务
# systemctl --now enable  salt-minion



172.31.7.101-master
====================
# salt-key                #查看已连接的key主机
Accepted Keys:
Denied Keys:             
Unaccepted Keys:
salt01
salt02
salt03
salt04
Rejected Keys:

查看salt-key使用帮助
# salt-key --help
-a ACCEPT, --accept=ACCEPT                      #指的是接收某个key
-A, --accept-all    Accept all pending keys.
-R, --reject-all    Reject all pending keys.    #拒绝所有key
-D, --delete-all    Delete all keys.

把salt04加入到key中
# salt-key -a salt04

接受全部的key
# salt-key -A -y

测试所有主机能否ping通
# salt '*' test.ping

使用模块cmd.run在全部主机上执行命令
# salt '*'  cmd.run 'touch zhgedu.txt'
# salt '*'  cmd.run 'rm -f  zhgedu.txt'

使用模块cmd.run在单个主机上执行命令
# salt 'salt02*'  cmd.run 'uptime'       #正则比配后面有的内容
# salt 'salt02'  cmd.run 'uptime'

使用模块cmd.run在多台个主机上执行命令
-L                list                   
# salt -L 'salt02,salt03'  cmd.run 'df -h'         #-L使用列表查询

ip地址的子网范围进行匹配
# salt -S '172.31.7.0/24'  cmd.run 'df -h'        #-S使用子网来执行

配置全局角色
vim /etc/salt/master
  file_roots:                                                         
    base:                                    #开启全局环境
      - /srv/salt/
#   dev:                                     #开发环境
#     - /srv/salt/dev/services
#     - /srv/salt/dev/states
#   prod:                                    #生产环境使用
#     - /srv/salt/prod/services
#     - /srv/salt/prod/states

创建全局角色
# mkdir   /srv/salt -p 

重新启动服务
#  systemctl restart salt-master

统一安装httpd、mod_ssl
---------------------
创建剧本角色的配置文件
# cd /srv/salt  &&  vim top.sls           
# cat apache.sls 
apache-pkg:
  pkg.installed:
    - names:
      - httpd
      - mod_ssl

apache-service:                 
  service.running:              
    - name:  httpd
    - enable: True

查看配置文件
# cat top.sls 
base:
  '*':                              #所有主机执行
    - apache 

测试剧本是否产生语法错误,并没有执行
# salt '*'  state.highstate  test=Ture

启动剧本,其他主机按照剧本中指定的按照服务
#  salt '*'  state.highstate


统一安装vsftpd
--------------
创建全局执行配置文件
# cat top.sls 
base:
  '*':                              
    - apache 
    - vsftpd
创建执行配置文件 
# vim vsftpd.sls 
vsftpd-service:                                         
  pkg.installed:
    - names:
      - vsftpd
测试剧本是否产生语法错误,并没有执行
# salt '*'  state.highstate  test=Ture

启动剧本,其他主机按照剧本中指定的按照服务
#  salt '*'  state.highstate


统一启动http服务
----------------
# cat apache.sls 
apache-pkg:
  pkg.installed:
    - names:
      - httpd
      - mod_ssl

apache-service:                 
  service.running:              
    - name:  httpd
    - enable: True
[root@master salt]# 

# cat top.sls             #此文件不变
base:
  '*':
    - apache
    - vsftpd

执行服务
# salt '*'  state.highstate  test=Ture
# salt '*'  state.highstate

1.3、Saltstack Grains

数据系统Grains
Minion收集信息,Master用于并匹配Target
Minion端设置,提供给Master端

Grains里面收集了minion启动时候的所有系统信息,存储在minion端。

测试所有主机能否ping通
# salt '*' test.ping

列出主机所有项目
# salt 'salt04*' grains.ls
# salt 'salt04*' grains.items                  #获取所有项目的具体项

获取项目中具体值 
# salt 'salt04*' grains.item ipv4               #查看到主机的ip地址

使用版本进行匹配执行
# salt -G 'osrelease:7.9.2009'  test.ping       #同一版本的主机会立即响应


172.31.7.102  salt01   172.31.7.103  salt02
172.31.7.104  salt03   172.31.7.105  salt04
============================================
设置机柜存储位置
# vim /etc/salt/minion
salt01
------
grains:                                                 
  roles:
    - webserver
    - dbserver
  deployment: datacenter1    #数据中心1
  cabinet: 13                #13号机柜   
  cab_u: 14-15               #14-15U位置   

salt02
-------
grains:
  roles:
    - webserver
    - dbserver
  deployment: datacenter1
  cabinet: 13
  cab_u: 17-18   

salt03
-------
grains:
  roles:
    - ftpserver                #角色发生改变
    - memcache                 #连接的数据库位memcahe
  deployment: datacenter4      #数据中心4
  cabinet: 12                  #存放在12号机柜   
  cab_u: 14-15                 #14-15U位置                          

salt04
-------
grains:
  roles:
    - ftpserver
    - memcache
  deployment: datacenter4
  cabinet: 13                                           
  cab_u: 14-15

重新启动服务
# systemctl restart salt-minion.service

执行在1号数据中心的机器
# salt -G 'deployment:datacenter1' cmd.run 'uptime'
# salt -G 'deployment:datacenter4' cmd.run 'uptime'

通过角色区匹配机器
# salt -G 'roles:webserver'  cmd.run 'uptime'
# salt -G 'roles:ftpserver'  cmd.run 'uptime'

1.4、Saltstack Pillar

数据系统Pillar
Master端设置,提供给Minion端

Pillar在SaltStack中主要作用是存储和定义配置管理中需要的一些数据,比如软件版本号、用户名密码等信息,它的存储格式跟Grains类似,都是YAML格式。

172.31.7.102  salt01   172.31.7.103  salt02
172.31.7.104  salt03   172.31.7.105  salt04    
============================================   
全部注释
# vim /etc/salt/minion
salt01  
------
#grains:                                                
#  roles:
#    - webserver
#    - dbserver
#  deployment: datacenter1
#  cabinet: 13
#  cab_u: 14-15

salt02
------
#grains:                                                
#  roles:
#    - webserver
#    - dbserver
#  deployment: datacenter1
#  cabinet: 13
#  cab_u: 17-18

salt03
------
#grains:                                                
#  roles:
#    - ftpserver
#    - memcache
#  deployment: datacenter4
#  cabinet: 12
#  cab_u: 14-15

salt04
------
#grains:                                                
#  roles:
#    - ftpserver
#    - memcache
#  deployment: datacenter4
#  cabinet: 13
#  cab_u: 14-15

重新启动服务
# !s
#  systemctl restart salt-minion.service

172.31.7.101  master
--------------------
开启此几行
vim /etc/salt/master
file_roots:
  base:
    - /srv/salt/

重新启动服务
# !s
# systemctl restart  salt-master.service



172.31.7.101  master
====================
取消注释piller服务
# vim /etc/salt/master
pillar_roots:                                           
  base:
    - /srv/pillar

创建文件目录
# mkdir /srv/pillar

重新启动服务
# !s
#  systemctl restart  salt-master.service

添加角色
env.salt01.sls
--------------
# vim env.salt01.sls
roles:
  - webserver
  - dbserver
deployment: datacenter1                                 
cabinet: 13
cab_u: 14-15

env.salt02.sls
--------------
# vim env.salt02.sls
roles:
  - webserver
  - dbserver
deployment: datacenter1
cabinet: 13
cab_u: 17-18    

env.salt03.sls
--------------
# vim env.salt03.sls
roles:
  - ftpserver
  - dbserver
deployment: datacenter4
cabinet: 12
cab_u: 14-15  

env.salt04.sls
--------------
# vim env.salt04.sls
roles:
  - ftpserver
  - dbserver
deployment: datacenter4                                 
cabinet: 13
cab_u: 14-15

创建pillar入口文件
# vim  /srv/pillar/top.sls
base:
  'salt01':                    #此值为各主机名
    - env_salt01
  'salt02':
    - env_salt02 
  'salt03':
    - env_salt03
  'salt04':
    - env_salt04 
    
刷新模块pillar
# salt '*' saltutil.refresh_pillar

执行角色参数
# salt -I 'roles:ftpserver'  cmd.run 'uptime'

posted @   Jackiezhu  阅读(21)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示