saltstack回顾【第一篇,初步概念】

概念:

1>基于 C/S 架构的服务器基础架构集中化管理平台,通过管理端下发指令,客户端接受指令的方式进行操作,管理端称为 Master,客户端称为 Minion。
2>具备配置管理、远程执行、监控等功能
3>基于 Python 语言开发实现,结合了轻量级的消息队列软件 ZeroMQ【master和slave通过秘钥建立安全连接,通过zeromq消息队列软件建立消息发布连接】
4>服务占用端口 4505、4506 , 4505位master和minion认证通信端口,4506为master发送命令、minion执行命令返回信息

工作流程:

1.Master 与 Minion 之间通过 ZeroMq 进行消息传递,使用了 ZeroMq 的发布订阅模式,连接方式包括 TCP 和 IPC。

2.Salt 命令,将 cmd.run ls 命令从 salt.client.LocalClient.cmd_cli 发布到 master,获取一个 jodid,根据 jobid 获取命令执行结果。

3.master 接收到命令后,将要执行的命令发送给客户端 minion。

4.minion 从消息总线上接收到要处理的命令,交给 minion._handle_aes 处理。

5.minion._handle_aes 发起一个本地线程调用 cmdmod 执行 ls 命令。线程执行完 ls 后,调用 Minion._return_pub 方法,将执行结果通过消息总线返回给 master。

6.master 接收到客户端返回的结果,调用 master.handle_aes 方法将结果写的文件中。

7.salt.client.LocalClient.cmd_cli 通过轮询获取 Job 执行结果,将结果输出到终端。

转自博文:https://blog.csdn.net/SS_CC_Go/article/details/99635873

使用:


目的:通过sls文件,实现文件的传输、文件内容的修改、容器以及其他应用的搭建、java应用的发布

主机规划:

(主)master:192.168.25.130

(从)minion:192.168.25.131     192.168.25.132

1.yum安装:

服务端:安装master

[root@hdoop1 ~]# yum -y install epel-release       #安装第三方epel的yum源,有许多的跟新包
[root@hdoop1 ~]# yum -y install salt-master salt-minion       #安装saltstack的master跟minion

客户端:安装minion

[root@hdoop2 ~]# yum -y install salt-minion

[root@hdoop3 ~]# yum -y install salt-minion

2.配置:主从都需要配置

三台服务器分别:  vim /etc/salt/minion      【指定master】

master: 192.168.18.86        #16行内容,去注释,指定主机的IP   建议用IP  避免日后有业务需求将主机名修改后相互通信出现问题

3.启动:

主:

[root@hdoop1~]# systemctl start salt-master

从:2台机器

[root@hadoop2~]# systemctl start salt-minion

 [root@hadoop3~]# systemctl start salt-minion

 

salt-key的基本命令:

salt-key -L #检测当前server端所有minion端key的情况,三种:接收、等待接收和拒绝
salt-key -a hostname #指定接收某台minion的key
salt-key -A #接收Unaccepted Keys下所有的minion
salt-key -d hostname #删除已经接收的机器中指定机器minion key (Accepted Keys:)
salt-key -D #删除已经接收的所有机器(Accepted Keys:),删除后想重新连接minion,需重启一下对应机器的minion

接收后查看状态:

[root@hdoop1 erp]# salt-key
Accepted Keys:
hdoop2
hdoop3
Denied Keys:
Unaccepted Keys:
Rejected Keys:

通过sls文件自定义需求,安装服务或者采集信息:  【eg:sls文件是通过saltstate模块调用函数执行的,以yaml语言描述,层级之间要用2个空格隔开

sls文件高级方法,通过编写一个top.sls文件,指定minion去执行sls文件

[root@hdoop1 pki]# vim /etc/salt/master

搜索file_roots    base、dev、prod是你所能指定的执行环境,对应的目录是你sls文件放置目录

修改你想指定的目录跟环境(ps:base是必须有的),重启salt-master服务

到/srv/salt 目录下创建一个apache.sls文件,内容如下: 【ps:$符号是在编辑文本后显示所有字符,避免有多余空格导致格式不对运行不成功  :set list 命令显示】

apache-install:$
  pkg.installed:$          #pkg是一个内置模块,installd是一个方法,方法调用会根据你服务器系统来决定。eg:  linux 会用yum   ubuntu  会用  apt-get
    - names:$   
      - httpd$
      - httpd-devel$
$
apache-service:$    #这个名字是自己定义的,便于自己识别要用到什么功能
  service.running:$   #service  内置模块,running模块下的方法
    - name: httpd$      #注意:启动服务必须是可以通过systemctl启动的服务,如果是二进制包安装的话,需要换一种方式启动
    - enabled: True$   #enabled参数表示开机自启
    - reload: True$      #reload参数表示可以重载

远程执行:

包含三大模块  目标 、 模块 、 返回    (返回可以输出到数据库)

salt  '*'  cmd.run 'w'     #  *:指定的主机,*表示minion的标识id,也可以使用通配符去匹配     cmd.run  模块+方法   w:linux命令行命令
salt -E  'node(1|2)'  test.ping  # -E 正则表达式,表示或

top.sls中用:

base:

  'hdoop(1|2)':

    - match: pcre 

##########数据系统#############

grains:只存在minion中,minion启动时收集的系统信息,当minion所在服务器增配、或者减配,需要重启minion  否则收集到的信息还是老数据 

应用场景:minion端指定roles(指定后需重启minion),通过  grains +  sls的高级形式  指定不同的roles去匹配对应的minion,minion分别执行不同的sls文件 

pillar: 主要用于 定义变量、参数

二者差别:

出于对数据、服务安全性的问题,salt内部继承了一个控制权限模块,指定某些用户只可以执行某些命令,在master上开启:   【配置文件修改后要重启】

client_acl:          
  xiaohong:         #这个是指定的用户

    - test.ping       #授权命令

    - nework.*       #也可以通过通配符给与模块下的多个权限

 chmod 755 /var/cache/salt /var/cache/salt/master /var/cache/salt/master/jobs /var/run/salt /var/run/salt/master   ##【没有授权755会报错没有权限执行acl授予的命令】

原文地址:https://www.cnblogs.com/byfboke/p/13205948.html