目录
一、Job缓存
1、master在下发指令任务时,会附带上产生的jid(Jid:%Y%m%d%H%M%S%f)。
2、minion在接收到指令开始执行时,会在本地的/var/cache/salt/minion/proc 目录下产生该jid命名的文件,用于在执行过程中master查看当前任务的执行 情况。指令执行完毕将结果传送给master后,删除该临时文件。
3、master端Job的缓存目录:/var/cache/salt/master/jobs/
3、Job缓存默认保存24小时。
4、官方文档:http://docs.saltstack.cn/topics/jobs/external_cache.html
二、Job管理
1、查看所有minion当前正在运行的Jobs:salt-run jobs.active
2、列出当前master jobs cache中所有job:salt-run jobs.list_job
3、从master jobs cache中查询指定jid的运行结果:salt-run jobs.lookup_jid <jid>
二、两种模式
1、配置外部作业缓存后,数据会像往常一样返回Salt Master上的默认缓存位置,然后再用Salt Minion上的Salt返回器将结果发送到外部作业缓存(数据库)。
优点:存储数据时不会在Salt Master上增加额外负载。
缺点:每个Salt Minion都连接到外部作业缓存,这可能会导致大量连接。 还需要额外的配置才能在所有Salt Minions上获得返回者模块设置。
【注】为了让数据长久存储,我们统一将返回的数据存入数据库中。
##server1部署数据库:
[root@server1 jobs]# yum install -y mariadb-server.x86_64
[root@server1 jobs]# systemctl start mariadb
[root@server1 my.cnf.d]# mysql_secure_installation ##数据库安全初始化
[root@server1 my.cnf.d]# mysql -u root -p ##登录数据库
##查看数据库内容
MariaDB [(none)]> SHOW databases;
##建立测试文档,进行数据导入
[root@server1 mnt]# vim SalkStack.sql
[root@server1 mnt]# mysql -p < SalkStack.sql
##测试文档内容:https://download.csdn.net/download/qq_41056224/20642682
##指定用户授权
MariaDB [(none)]> grant all on salt.* to salt@'%' identified by 'salt';
##登录数据库,查看数据库中内容
MariaDB [(none)]> SHOW databases;
MariaDB [(none)]> USE salt
MariaDB [salt]> SHOW tables;
【说明】第一次安装数据库的安全性设置
##server2--minion端部署
##安装MySQL-python.x86_64(进行数据之间交互的依赖性),若建立类型一的交互通信,则所有minion端都需要安装该软件
[root@server2 html]# yum install -y MySQL-python.x86_64
##编写主从配置
[root@server2 html]# vim /etc/salt/minion
##配置文件内容:
894 master_job_cache: mysql
895 mysql.host: '192.168.1.11'
896 mysql.port: 3306
897 mysql.user: 'salt'
898 mysql.pass: 'salt'
899 mysql.db: 'salt'
##重启服务配置:
[root@server2 html]# systemctl restart salt-minion.service
MySQL-python.x86_64主要用于minion端将数据写入数据库中,是一个依赖包文件,任意一minion端想写入数据都需要安装此包。
配置文件:指定数据库地址,已经登录过程中的用户,密码,端口等。
##server1 上进行数据测试:
[root@server1 salt]# salt server2 test.ping --return mysql
[root@server1 salt]# salt server2 mydisk.df --return mysql
##登录数据库查看
[root@server1 mnt]# mysql -u root -p
MariaDB [(none)]> show databases;
MriaDB [(none)]> use salt;
MariaDB [salt]> show tables;
MariaDB [salt]> select * from salt_returns;
运行测试命令,让产生的返回内容,发一份给指定的数据库。
数据库结果查看:
2、Salt Minions像往常一样将数据发送到默认作业缓存,然后Salt Master使用在Salt Master上运行的Salt返回器模块将数据发送到外部系统。
优点:外部系统需要单个连接。 这对于数据库和类似系统来说是首选。
缺点:在Salt Master上增加额外负载
##在server1的msater端:
##编辑配置文件:/etc/salt/master
##文件内容:
1308 master_job_cache: mysql
1309 mysql.host: 'localhost'
1310 mysql.user: 'salt'
1311 mysql.pass: 'salt'
1312 mysql.db: 'salt'
1313 mysql.port: 3306
##重启服务:
[root@server1 salt]# systemctl restart salt-master
##安装写入的依赖包:MySQL-python.x86_64
[root@server1 salt]# yum install -y MySQL-python.x86_64
##登录数据库,给本相应的写入权限
MariaDB [(none)]> grant all on salt.* to salt@'localhost' identified by 'salt';
##测试:
[root@server1 salt]# salt '*' test.ping
##查看数据库:
[root@server1 salt]# mysql -u root -p
MariaDB [(none)]> use salt;
MariaDB [salt]> select * from salt_returns \G;
编写master端配置文件,所有内容都在master上完成,不需要在minion上进行任何配置!
配置完成,重启服务,进行配置更新。同时安装依赖性包,这里只要通过写入,就需要那幢该依赖性的包。
运行完测试命令,查看数据的缓存内容:
上述两种模式都完成的将临时存储的Job,存放到数据库中,如果前端人员需要查看时,只需要从数据库中调取相应的信息即可。
同时在生产环境中,为了避免操作每一台minion造成额外的内存浪费,一般情况下,直接在Master端进行部署即可,提高使用效率。