master在下发指令任务时,会附带上产生的jid。
minion在接收到指令开始执行时,会在本地的/var/cache/salt/minion/proc目录下产生该jid命名的文件,用于在执行过程中master查看当前任务的执行情况。
指令执行完毕将结果传送给master后,删除该临时文件。
Job缓存默认保存24小时:
vim /etc/salt/master
keep_jobs: 24
master端Job缓存目录:
/var/cache/salt/master/jobs
1.从minion主机存储数据
2.从master主机存储数据,一般选用从master端存数据,master端有所有minion的数据,方便管控
步骤:
配置/etc/salt/minion
minion端需要安装mysql-python(哪一台作为数据存储的主机,必须要安装此软件包)
编写*.sql模板导入到数据库
1.配置文件
/etc/salt/minion
systemctl retart salt-minion
3.在192.168.1.16server上安装数据库,建立salt用户
yum install -y mariadb-server
systemctl start mariadb
4.将数据库结构导入mysql
新建 vim 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`
--
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;
grant all on salt.* to salt@localhost identified by 'salt';
[root@server1 ~]# salt server2 test.ping
server2:
True
登录查看:
mysql -usalt -psalt
vim /etc/salt/master
master_job_cache: mysql
mysql.host: 'localhost'
mysql.user: 'salt'
mysql.pass: 'salt'
mysql.db: 'salt'
salt '*' cmd.run df
salt-ssh可以独立运行的,不需要minion端。
salt-ssh 用的是sshpass进行密码交互的。
以串行模式工作,性能下降。
安装salt-ssh:
yum install -y salt-ssh
配置roster文件,默认的本地路径是 /etc/salt/roster:
server2:
host: 172.25.0.2
user: root
salt-ssh '*' test.ping -i //询问密码加 -i
vim ~/.ssh/config # 免去校验
StrictHostKeyChecking no
如果大家知道zabbix proxy的话那就很容易理解了,syndic其实就是个代理,隔离master与minion。
Syndic必须要运行在master上,再连接到另一个topmaster上。
Topmaster 下发的状态需要通过syndic来传递给下级master,minion传递给master的数据也是由syndic传递给topmaster。
topmaster并不知道有多少个minion。
syndic与topmaster的file_roots和pillar_roots的目录要保持一致。
vim /etc/salt/master
order_masters: True #作为顶级master
systemctl start salt-master
salt-key -L #查看下级master的连接授权
salt-key -A
yum install -y salt-syndic
vim /etc/salt/master
syndic_master: 172.25.0.4 #指向topmaster
systemctl restart salt-master
systemctl start salt-syndic
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
yum install -y salt-api python-cherrypy
cd /etc/pki/tls/private
openssl genrsa 2048 > localhost.key
cd /etc/pki/tls/certs
make testcert
vim /etc/salt/master.d/auth.conf
external_auth:
pam
saltdev
- .*
- '@wheel'
- '@runner'
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
systemctl restart salt-master
systemctl start 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]#
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