自动化运维工具saltstack详解

saltstack详解

学习指南

saltstack简介

  • Saltstack是基于Python开发的一套C/S架构,具备Puppet、Ansible功能于一身的配置管理工具,功能十分强大,各模块融合度及复用性极高;使用号称世界上最快的消息队列ZeroMQ使得Saltstack能够秒级在数万台服务器上进行各种操作,而且使用RAS Key方式确认身份,传输采用AES加密,安全性能更高;

  • Saltstack不仅仅是一款配置管理工具,还是一款做云计算和数据中心架构编排利器。目前Salt-cloud项目也已经合并到Saltstack主项目里,Saltstack已经支持Docker相关模块,在友好地支持各大云平台之后,配合Saltstack的Mine实现各云平台业务自动扩展。

saltstack的核心特点:

  • 使用命令发送到远程系统是并行的而不是串行的

  • 使用安全加密的协议

  • 使用最小最快的网络载荷 提供简单的编程接口,设备轻量级

  • SaltStack作用于仆从和主拓扑。SaltStack与特定的命令结合使用可以在一个或多个下属执行

什么是zmq消息队列?

引用官方的说法: “ZMQ(以下ZeroMQ简称ZMQ)是一个简单好用的传输层,像框架一样的一个socket library,他使得Socket编程更加简单、简洁和性能更高。是一个消息处理队列库,可在多个线程、内核和主机盒之间弹性伸缩。ZMQ的明确目标是“成为标准网络协议栈的一部分,之后进入Linux内核”。

与其他自动化管理工具对比

在这里插入图片描述

服务端口

  • 4505对应的是ZMQ的PUB system,用来发送消息
  • 4506对应的是REP system,是来接受消息的。
  • salt客户端程序不监听端口,客户端启动后,会主动连接master端注册,然后一直保持该TCP连接,master通过这条TCP连接对客户端控制;
  • 如果连接断开,master对客户端就无能为力了。当然,客户端若检查到断开后会定期的一直连接master端的。

salt的安装与部署

实验说明:

server角色ip
server1master172.25.3.1
server2minion172.25.3.2
server3minion172.25.3.3

在server1

(1)搭建salt yum源

vim /etc/yum.repos.d/salt.repo

[salt]
name=salt
baseurl=http://repo.saltstack.com/yum/redhat/7.3/x86_64/2019.2/
gpgcheck=0

(2)下载salt-master

[root@server1 yum.repos.d]# yum install -y salt-master

为了方便查看salt节点部署,下载lsof

[root@server1 yum.repos.d]# yum install -y lsof  


[root@server1 yum.repos.d]# systemctl start salt-master  ##启动salt-master服务
[root@server1 yum.repos.d]# lsof -i  :4505    ##4505服务端口信息
COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
salt-mast 2379 root   15u  IPv4  25380      0t0  TCP *:4505 (LISTEN)
[root@server1 yum.repos.d]# lsof -i  :4506    ##4506服务端口信息
COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
salt-mast 2386 root   23u  IPv4  25428      0t0  TCP *:4506 (LISTEN)

在这里插入图片描述
查看salt节点授权信息

[root@server1 yum.repos.d]# salt-key -L   ##salt授权信息,此时没有可授权主机,也无授权信息
Accepted Keys: ##允许授权主机
Denied Keys:  ##授权失败主机
Unaccepted Keys:  ##未授权主机
Rejected Keys:   ##拒绝授权主机

在这里插入图片描述

在server2 (server3设置相同)

(1)与server1相同,搭建salt yum源

vim /etc/yum.repos.d/salt.repo
 
[salt]
name=salt
baseurl=http://repo.saltstack.com/yum/redhat/7.3/x86_64/2019.2/
gpgcheck=0

(2)下载salt-minion

[root@server2 yum.repos.d]# yum install -y salt-minion

(3)配置客户端minion

[root@server2 yum.repos.d]# vi /etc/salt/minion

 16 master: 172.25.3.1   ##salt-master为 172.25.3.1

[root@server2 yum.repos.d]# systemctl start salt-minion  ##启动salt-minion服务

授权处理
授权命令salt-key 常用参数

参数作用
-L查看授权列表
-A对所有主机授权
-a指定主机授权

此时再次查看master端授权信息列,可以看到已有可授权主机出现

[root@server1 yum.repos.d]# salt-key -L
Accepted Keys:
Denied Keys:
Unaccepted Keys:
server2
server3
Rejected Keys:

对salt-minion端授权

[root@server1 yum.repos.d]# salt-key -A

授权成功

在这里插入图片描述

salt连通测试:

利用test.ping (test模块下的ping方法)测试连通性

[root@server1 yum.repos.d]# salt server? test.ping ##表示测试server所有主机

在这里插入图片描述

salt配置路径

主配置文件存放路径

  • (1)master端:
[root@server1 srv]# cd /etc/salt/
[root@server1 salt]# ls
cloud           cloud.profiles.d   minion     proxy
cloud.conf.d    cloud.providers.d  minion.d   proxy.d
cloud.deploy.d  master             minion_id  roster
cloud.maps.d    master.d           pki
[root@server1 salt]# vim master  ##master主配置文件

需要注意的是:当我们修改主机名后需要将minion_id 删除后重启服务,否则可能会发生错误

  • (2)minion端:
 /etc/salt/minion

服务路径
创建base目录 以/src/salt为根 (该路径不存在,需要自行建立)

在这里插入图片描述

[root@server1 salt]# mkdir -p /srv/salt

数据存放

master端:
master端的密码数据以及minion端信息数据都存放在目录/etc/salt/pki下
在这里插入图片描述
在这里插入图片描述

minion端:

sls任务执行过程:
是salt-master端在推送sls文件时,是直接将sls任务下发至minion端,也就是说master端通过命令下放的sls任务文件在minion端也一定存在;都存放在 /var/cache/salt目录之下

在这里插入图片描述
在这里插入图片描述

.sls文件语法

(1).sls文件本质上是python嵌套字典(键值对),由salt-master以广播的形式传递给salt-minion,通过sls文件告知使用哪个模块的哪个函数,参数有哪些,在salt-minion一侧进行函数调用

(2)冒号’:’ 用来分隔键和值, 冒号:与后面的单词如果在一行,一定要有一个空格, 一个单词后面是否有冒号:取决于这个单词是否是key, 后面是否有值或者是嵌套的内容

(3)短横杠 - 表示这项是个列表项, 短横杠与后面的单词有一个空格

(4)缩进: 本层与下一层要有缩进, 缩进不能用tab, 一般是两个空格. 相同的缩进表示相同的层级

saltstack任务简单示例

  • 以apache服务的部署为例
[root@server1 salt]# pwd
/srv/salt
[root@server1 salt]# mkdir apache  ##创建任务角色
[root@server1 salt]# cd apache/
[root@server1 apache]# pwd
/srv/salt/apache
[root@server1 apache]# vim apache.sls  ##编写.sls任务
apache-install: ##唯一性声明
  pkg.installed: ##调用模块
    - pkgs:
      - httpd-tools
      - httpd
  file.managed:  ##配置文件修改
    - name: /etc/httpd/conf/httpd.conf
    - source: salt://apache/files/httpd.conf

  service.running:
    - name: httpd
    - reload: true
    - watch:  ##检测这项任务是否发生改变 发生改变reload服务
      - file: apache-install

[root@server1 apache]# mkdir files
root@server1 apache]# ls
apache.sls  files
[root@server1 apache]# cd files/
[root@server1 files]# ls
httpd.conf

或者

[root@server1 apache]# vim apache.sls 
apache-install: ##唯一性声明
httpd:
  pkg.installed ##调用模块

saltstack中的sls写法比较灵活,两种方式都是可以的

执行推送:

[root@server1 apache]# salt server3 state.sls apache.apache

或者写顶级sls文件进行全局推送

[root@server1 salt]# vi top.sls  
base:
  'server3':
    - apache.apache

[root@server1 apache]# salt '*' state.highstate
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值