saltstack--job管理,salt-ssh,salt-syndic,salt-api

文章目录

  • 1.job管理
    • 1.1 Job简介
    • 1.2 Job cache
    • 1.3数据存入数据库有两种方式
      • 实验一.minion端存储job数据到数据库
      • 实验二.master端存储job数据到数据库
  • 2.salt-ssh
    • salt-ssh简介
    • salt-ssh配置
  • 3.salt-syndic
    • 3.1 salt-syndic简介
    • 3.2 salt-syndic配置
      • 3.21.topmaster端:
      • 3.2.2.下级master端:
  • 4.salt-api
    • 4.1 salt-api简介
    • 4.2 安装salt-api
    • 4.3 生成证书:
    • 4.4 创建用户认证文件:
    • 4.5激活rest_cherrypy模块
    • 4.6 salt-api使用

1.job管理

1.1 Job简介

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

1.2 Job cache

Job缓存默认保存24小时:

vim /etc/salt/master
keep_jobs: 24

master端Job缓存目录:

/var/cache/salt/master/jobs

在这里插入图片描述

1.3数据存入数据库有两种方式

1.从minion主机存储数据

saltstack--job管理,salt-ssh,salt-syndic,salt-api_第1张图片
2.从master主机存储数据,一般选用从master端存数据,master端有所有minion的数据,方便管控
saltstack--job管理,salt-ssh,salt-syndic,salt-api_第2张图片

实验一.minion端存储job数据到数据库

步骤:
配置/etc/salt/minion
minion端需要安装mysql-python(哪一台作为数据存储的主机,必须要安装此软件包)
编写*.sql模板导入到数据库

1.配置文件

/etc/salt/minion

saltstack--job管理,salt-ssh,salt-syndic,salt-api_第3张图片

systemctl retart salt-minion

2.minion端安装mysql-python
在这里插入图片描述

3.在192.168.1.16server上安装数据库,建立salt用户

yum install -y mariadb-server
systemctl start mariadb

saltstack--job管理,salt-ssh,salt-syndic,salt-api_第4张图片

4.将数据库结构导入mysql

新建 vim add.sql

官网复制内容到add.sql文件
saltstack--job管理,salt-ssh,salt-syndic,salt-api_第5张图片

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`
--

DROP TABLE IF EXISTS `salt_events`;
CREATE TABLE `salt_events` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`tag` varchar(255) NOT NULL,
`data` mediumtext NOT NULL,
`alter_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`master_id` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
KEY `tag` (`tag`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

注释掉这一行
在这里插入图片描述
在这里插入图片描述
查看是否导入:
saltstack--job管理,salt-ssh,salt-syndic,salt-api_第6张图片
建立salt用户并开通权限

grant all on salt.* to salt@localhost identified by 'salt';

在这里插入图片描述
5.测试
创建数据:

[root@server1 ~]# salt server2 test.ping
server2:
    True

登录查看:

mysql -usalt -psalt

saltstack--job管理,salt-ssh,salt-syndic,salt-api_第7张图片

实验二.master端存储job数据到数据库

vim /etc/salt/master

master_job_cache: mysql
mysql.host: 'localhost'
mysql.user: 'salt'
mysql.pass: 'salt'
mysql.db: 'salt'

安装mysql-python
saltstack--job管理,salt-ssh,salt-syndic,salt-api_第8张图片
测试:

salt '*' cmd.run df

saltstack--job管理,salt-ssh,salt-syndic,salt-api_第9张图片
saltstack--job管理,salt-ssh,salt-syndic,salt-api_第10张图片

2.salt-ssh

salt-ssh简介

salt-ssh可以独立运行的,不需要minion端。
salt-ssh 用的是sshpass进行密码交互的。
以串行模式工作,性能下降。
安装salt-ssh:

yum install -y salt-ssh

salt-ssh配置

配置roster文件,默认的本地路径是 /etc/salt/roster:

server2:

host: 172.25.0.2

user: root

saltstack--job管理,salt-ssh,salt-syndic,salt-api_第11张图片
测试:

salt-ssh '*' test.ping -i		//询问密码加 -i

saltstack--job管理,salt-ssh,salt-syndic,salt-api_第12张图片

vim ~/.ssh/config # 免去校验

StrictHostKeyChecking no

3.salt-syndic

3.1 salt-syndic简介

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

3.2 salt-syndic配置

saltstack--job管理,salt-ssh,salt-syndic,salt-api_第13张图片
*

3.21.topmaster端:

 vim /etc/salt/master
order_masters: True			#作为顶级master
systemctl start salt-master

salt-key -L #查看下级master的连接授权

salt-key -A

saltstack--job管理,salt-ssh,salt-syndic,salt-api_第14张图片

3.2.2.下级master端:

yum install -y salt-syndic
 vim /etc/salt/master
syndic_master: 172.25.0.4		#指向topmaster

saltstack--job管理,salt-ssh,salt-syndic,salt-api_第15张图片

 systemctl restart salt-master
 systemctl start salt-syndic

saltstack--job管理,salt-ssh,salt-syndic,salt-api_第16张图片

测试
saltstack--job管理,salt-ssh,salt-syndic,salt-api_第17张图片
saltstack--job管理,salt-ssh,salt-syndic,salt-api_第18张图片

4.salt-api

4.1 salt-api简介

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

4.2 安装salt-api

 yum install -y salt-api  python-cherrypy

4.3 生成证书:

 cd /etc/pki/tls/private
 openssl genrsa 2048 > localhost.key

saltstack--job管理,salt-ssh,salt-syndic,salt-api_第19张图片

 cd /etc/pki/tls/certs
 make testcert

saltstack--job管理,salt-ssh,salt-syndic,salt-api_第20张图片

4.4 创建用户认证文件:

在这里插入图片描述

vim /etc/salt/master.d/auth.conf
external_auth:

  pam
    saltdev
      - .*
      - '@wheel'
      - '@runner'

saltstack--job管理,salt-ssh,salt-syndic,salt-api_第21张图片

4.5激活rest_cherrypy模块

vim /etc/salt/master.d/api.conf
rest_cherrypy:
  host: 192.168.1.16
  port: 8000
  ssl_crt: /etc/pki/tls/certs/localhost.crt
  ssl_key: /etc/pki/tls/private/localhost.key

saltstack--job管理,salt-ssh,salt-syndic,salt-api_第22张图片
重启服务:

systemctl restart salt-master
 systemctl start salt-api

建立用户及密码
saltstack--job管理,salt-ssh,salt-syndic,salt-api_第23张图片

4.6 salt-api使用

[root@server1 salt]# curl -sSk https://192.168.1.16:8000/login \
> -H 'Accept: application/x-yaml' \
> -d username=saltdev \
> -d password=westos \
>  -d eauth=pam
return:
- eauth: pam
  expire: 1591745453.429819
  perms:
  - .*
  - '@wheel'
  - '@runner'
  start: 1591702253.429818
  token: f903d14c7fd4708825376d62d3521be062fea9a2
  user: saltdev
[root@server1 salt]# 

saltstack--job管理,salt-ssh,salt-syndic,salt-api_第24张图片
推送任务:

curl -sSk https://192.168.1.16:8000 \
 -H 'Accept: application/x-yaml' \
 -H 'X-Auth-Token: f903d14c7fd4708825376d62d3521be062fea9a2'\
 -d client=local\
 -d tgt='*' \
 -d fun=test.ping

在这里插入图片描述

你可能感兴趣的:(saltstack--job管理,salt-ssh,salt-syndic,salt-api)