首页 > 其他分享 >Saltstack

Saltstack

时间:2024-03-08 11:56:01浏览次数:11  
标签:minion sls master Saltstack 172.31 salt salt04

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'

标签:minion,sls,master,Saltstack,172.31,salt,salt04
From: https://www.cnblogs.com/zikang/p/18060677

相关文章

  • 通过 saltstack 批量更新 SSL 证书
    哈喽大家好,我是咸鱼。之前写过两篇关于SSL过期巡检脚本的文章:SSL证书过期巡检脚本SSL证书过期巡检脚本(Python版)这两篇文章都是讲如何通过脚本去自动检测SSL过期时间的,当我们发现某一域名的SSL证书过期之后,就要及时更换。如果这个域名下有很多服务器,我们一台一台......
  • saltstack的使用
    1.安装https://docs.saltproject.io/salt/install-guide/en/latest/topics/overview.html1.1linux使用Bootstrapinstallation安装#下载文件bootstrap-salt.shcurl-obootstrap-salt.sh-Lhttps://bootstrap.saltproject.io#添加权限chmod+xbootstrap-salt.sh#安装#F......
  • 自动化运维工具【SaltStack】
    SaltStack管理工具允许管理员对多个操作系统创建一个一致的管理系统,包括VMwarevSphere环境。SaltStack作用于仆从和主拓扑。SaltStack与特定的命令结合使用可以在一个或多个下属执行。主要用的语言为python二、SaltStack的配置使用自动化软件,实现在server1中显示server2中执......
  • 第三方调用saltstack
    pythonapi使用实例及工作原理解析指定target函数,命令等等,就可以可以了。[root@mcw01~]#pythonPython2.7.5(default,Aug42017,00:39:18)[GCC4.8.520150623(RedHat4.8.5-16)]onlinux2Type"help","copyright","credits"or"license&quo......
  • SaltStack 常用的一些命令
      以下是SaltStack常用的一些命令:查看帮助信息:salt--help检查Salt支持的操作系统:salt'*'test.ping查看Minion的版本号:salt'*'test.version执行命令:salt'*'cmd.run'command'安装软件包:salt'*'pkg.install'package_name'升级软件包:salt&......
  • saltstack使用
     saltstack中salt-key的用法介绍:saltstack中master和minion是依靠证书来进行加密通信的。在saltstack中salt-key命令是用来管理证书的用法:salt-key[options]常用参数:-L,--list-all          #显示已经或未认证的被控端id-aACCEPT,--accept......
  • SaltStack部署应用
    1.rpm-ivhhttps://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpmyumcleanallyuminstall-yepel-releasesalt-mastervim/etc/salt/master修改以下内容:interface:192.168.1.10auto_accept:Truesystemctlstartsalt-mastersystemctlenablesalt-maste......
  • 运维管理工具的对比Puppet、Chef、Ansible和SaltStack、Fabric
    我们发现分布式是一个发展的趋势,无论是大型网站的负载均衡架构还是大数据框架部署,以及云存储计算系统搭建都离不开多台服务器的连续部署和环境搭建。当我们的基础架构是分散式或者基于云的,并且我们经常需要处理在大部分相同的服务器上频繁部署大致相同的服务时,我们就应该考虑自动化......
  • 自动化运维工具Saltstack详细介绍
         Saltstack是一个新的基础设施管理工具。目前处于快速发展阶段,可以看做是pssh+弱化的Puppet的组合。间接的反映出了saltstack的两大功能:远程执行和配置管理。  Saltstack使用Python开发,是一个非常简单易用和轻量级的管理工具。由Master和Minion构成,通过ZeroMQ进......
  • 运维工具SaltStack之一安装部署
    一、概述salt是一个异构平台基础设置管理工具,使用轻量级的通讯器ZMQ,用Python写成的批量管理工具,完全开源,遵守Apache2协议,与Puppet,Chef功能类似,有一个强大的远程执行命令引擎,也有一个强大的配置管理系统,通常叫做SaltStateSystem。 二、基本原理采用C/S模式,server端就是salt的mas......