Saltstack_salt-syndic+salt-api配置

saltstack下的salt-syndic+salt-api配置

[1].Job简介

1. Job简介

  • master在下发指令任务时,会附带上产生的jid。
  • minion在接收到指令开始执行时,会在本地的/var/cache/salt/minion/proc目录下产生该jid命名的文件,用于在执行过程中master查看当前任务的执行情况。
  • 指令执行完毕将结果传送给master后,删除该临时文件。
  • Job缓存默认保存24小时:

2. master端Job缓存目录:
/var/cache/salt/master/jobs

3. 流程图
把Job存储到数据库
Saltstack_salt-syndic+salt-api配置_第1张图片

[2].Job存储到数据库

  1. 在server4上mariadb数据库
[root@server4 ~]# yum install mariadb-server.x86_64   安装数据库
[root@server4 ~]# systemctl start mariadb.service
[root@server4 ~]# mysql_secure_installation
  1. 在server5(minion端)安装MySQL
    配置文件
[root@server5 ~]# vim /etc/salt/minion

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200613073925604.png

3.server4上测试

```sql
# cat add.sql
CREATE DATABASE  `salt`
  DEFAULT CHARACTER SET utf8
  DEFAULT COLLATE utf8_general_ci;
USE `salt`;

--
-- Table structure for table `jids`
--
DROP TABLE IF EXISTS `jids`;
CREATE TABLE `jids` (
  `jid` varchar(255) NOT NULL,
  `load` mediumtext NOT NULL,
  UNIQUE KEY `jid` (`jid`)
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- CREATE INDEX jid ON jids(jid) USING BTREE;

--
-- Table structure for table `salt_returns`
--
DROP TABLE IF EXISTS `salt_returns`;
CREATE TABLE `salt_returns` (
  `fun` varchar(50) NOT NULL,
  `jid` varchar(255) NOT NULL,
  `return` mediumtext NOT NULL,
   `id` varchar(255) NOT NULL,
  `success` varchar(10) NOT NULL,
  `full_ret` mediumtext NOT NULL,
  `alter_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  KEY `id` (`id`),
  KEY `jid` (`jid`),
  KEY `fun` (`fun`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `salt_events`
--

4. 导入数据库

[root@server4 ~]# mysql -uroot -pwestos < add.sql  导入数据库
[root@server4 ~]# mysql -uroot -pwestos
MariaDB [(none)]> grant all on salt.* to salt@localhost identified by 'salt';
Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]> grant all on salt.* to salt@'%' identified by 'salt';
Query OK, 0 rows affected (0.00 sec)

[root@server4 ~]# salt server5 cmd.run hostname
server5:
    server5

Saltstack_salt-syndic+salt-api配置_第2张图片

[3].salt-ssh简介

  • salt-ssh可以独立运行的,不需要minion端。

  • salt-ssh 用的是sshpass进行密码交互的。

  • 以串行模式工作,性能下降。

1. salt-ssh配置
停止minion端服务

[root@server5 ~]# systemctl stop salt-minion.service

安装salt-ssh:

[root@server4 ~]# yum install -y ssh-salt
[root@server4 ~]# cat /etc/salt/roster 
# Sample salt-ssh config file
#web1:
#  host: 192.168.42.1 # The IP addr or DNS hostname
#  user: fred         # Remote executions will be executed as user fred
#  passwd: foobarbaz  # The password to use for login, if omitted, keys are used
#  sudo: True         # Whether to sudo to root, not enabled by default
#web2:
#  host: 192.168.42.2
server5:
  host: 172.25.254.5
  user: root
  passwd: westos

server6:
  host: 172.25.254.6
  user: root
  passwd: westos

测试:
Saltstack_salt-syndic+salt-api配置_第3张图片

salt-syndic简介

  • syndic其实就是个代理,隔离master与minion。
  • Syndic必须要运行在master上,再连接到另一个topmaster上。
  • Topmaster 下发的状态需要通过syndic来传递给下级master,minion传递给master的数据也是由syndic传递给topmaster。
  • topmaster并不知道有多少个minion。
  • syndic与topmaster的file_roots和pillar_roots的目录要保持一致

原理:
Saltstack_salt-syndic+salt-api配置_第4张图片

1. salt-syndic配置

server4   172.25.254.4   salt-master
server5   172.25.254.5   salt-minion
server6   172.25.254.6   salt-minion
server7   172.25.254.7   salt-master(中心master)

测试:
Saltstack_salt-syndic+salt-api配置_第5张图片

[5].salt-api配置

1. salt-api配置
SaltStack 官方提供有REST API格式的 salt-api 项目,将使Salt与第三方系统集成变得尤为简单。
官方链接:https://docs.saltstack.com/en/latest/ref/netapi/all/index.html#all-netapi-modules
官方提供了三种api模块:

  • rest_cherrypy
  • rest_tornado
  • rest_wsgi

2. salt-api配置过程
安装

[root@server4 ~]# yum install -y salt-api  python-cherrypy

生成证书
Saltstack_salt-syndic+salt-api配置_第6张图片
创建用户认证文件

[root@server4 master.d]# vim auth.conf 
external_auth:
  pam:
    saltdev:
     - .*
      - '@wheel'
      - '@runner'
      - '@jobs'

创建用户

[root@server4 master.d]# useradd saltdev  
[root@server4 master.d]# passwd saltdev   
Changing password for user saltdev.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.

激活rest_cherrypy模块

[root@server4 master.d]# vim cert.conf  
[root@server4 master.d]# cat  cert.conf
rest_cherrypy:
  port: 8000
  ssl_crt: /etc/pki/tls/certs/localhost.crt
   ssl_key: /etc/pki/tls/private/localhost.key
[root@server4 master.d]# systemctl restart salt-master  重启
[root@server4 master.d]# systemctl start salt-api  启动

3. 获取认证token

[root@server4 master.d]# curl -sSk https://localhost:8000/login \
> -H 'Accept: application/x-yaml' \  
> -d username=saltdev \
> -d password=westos \
> -d eauth=pam
return:
- eauth: pam
  expire: 1591767118.761024
  perms:
  - .*
  - '@wheel'
  - '@runner'
  - '@jobs'
  - start: 1591723918.761023
  token: bc00b70cb788756454e0db7eddf7fd4b47a3bb30
  user: saltdev

在这里插入图片描述
推送任务

  [root@server4 master.d]# curl -sSk https://localhost:8000  \
  > -H 'Accept: application/x-yaml' \
  > -H 'X-Auth-Token:  bc00b70cb788756454e0db7eddf7fd4b47a3bb30' \ token值是上面命令获取的toekn值 
  > -d client=local  \
  > -d tgt='*'  \
  > -d fun=test.ping

你可能感兴趣的:(Saltstack_salt-syndic+salt-api配置)