SaltStack-job管理

一、salt执行结果默认返回给master端

1、job cache

存放位置

# Directory to store job and cache data:
# This directory may contain sensitive data and should be protected accordingly.
#
#cachedir: /var/cache/salt/master

# Set the number of hours to keep old job information in the job cache:
#keep_jobs: 24

# The number of seconds to wait when the client is requesting information
# about running jobs.
#gather_job_timeout: 10

2、将cache存入数据库

(1)安装数据库连接模块

安装连接mysql的模块MySQL-python
yum install -y MySQL-python

(2)配置数据库连接

在master上配置连接

直接在master的配置文件后面追加内容
vim /etc/salt/master

master_job_cache: mysql
mysql.host: ‘192.168.56.11‘
mysql.user: ‘salt‘
mysql.pass: ‘123456‘
mysql.db: ‘salt‘
mysql.port: 3306

(3)重启salt-master

systemctl restart master

(4)验证是否写入数据库

执行如下命令
[[email protected] /srv/salt/prod/bbs]# salt ‘*‘ cmd.run ‘whoami‘
linux-node2.example.com:
    root
linux-node1.example.com:
    root
登录数据库
mysql -h 192.168.56.11 -usalt -p123456
MariaDB [(none)]> use salt;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

*************************** 9. row ***************************
       fun: cmd.run
       jid: 20161109091010973295
    return: "root"
        id: linux-node2.example.com
   success: 1
  full_ret: {"fun_args": ["whoami"], "jid": "20161109091010973295", "return": "root", "retcode": 0, "success": true, "cmd": "_return", "_stamp": "2016-11-09T01:10:11.064745", "fun": "cmd.run", "id": "linux-node2.example.com"}
alter_time: 2016-11-09 09:10:11
*************************** 10. row ***************************
       fun: cmd.run
       jid: 20161109091010973295
    return: "root"
        id: linux-node1.example.com
   success: 1
  full_ret: {"fun_args": ["whoami"], "jid": "20161109091010973295", "return": "root", "retcode": 0, "success": true, "cmd": "_return", "_stamp": "2016-11-09T01:10:11.146238", "fun": "cmd.run", "id": "linux-node1.example.com"}
alter_time: 2016-11-09 09:10:11
10 rows in set (0.00 sec)

3、job查看

先执行一个命令,比如

salt ‘*‘ cmd.run ‘ping www.baidu.com‘

在执行job查看命令

[[email protected] ~]# salt ‘*‘ saltutil.running
linux-node2.example.com:
    |_
      ----------
      arg:
          - ping www.baidu.com
      fun:
          cmd.run
      jid:
          20161109091517283293
      pid:
          6049
      ret:
      tgt:
          *
      tgt_type:
          glob
      user:
          root
linux-node1.example.com:
    |_
      ----------
      arg:
          - ping www.baidu.com
      fun:
          cmd.run
      jid:
          20161109091517283293
      pid:
          6269
      ret:
      tgt:
          *
      tgt_type:
          glob
      user:
          root

停止job,可以使用如下方法

[[email protected] ~]# salt ‘*‘ saltutil.kill_job 20161109091517283293
linux-node2.example.com:
    Signal 9 sent to job 20161109091517283293 at pid 6049
linux-node1.example.com:
    Signal 9 sent to job 20161109091517283293 at pid 6269
[[email protected] ~]# salt ‘*‘ saltutil.running
linux-node2.example.com:
linux-node1.example.com:

4、master端cache

存放位置

[[email protected] /var/cache/salt/master]# ls
file_lists  jobs  minions  proc  queues  roots  syndics  tokens
[[email protected] /var/cache/salt/master]# pwd
/var/cache/salt/master
[[email protected] /var/cache/salt/master]# tree
.
├── file_lists
│   └── roots
│       ├── base.p
│       └── prod.p
├── jobs
│   ├── 6c
│   │   └── 9f646ec75df0bd0ec29760ef0dee7a
│   │       ├── jid
│   │       └── linux-node1.example.com
│   │           └── return.p
│   ├── 90
│   │   └── d3646e58dd82e103973eb889af96d1
│   │       └── jid
│   ├── d4
│   │   └── 74a5b7f1ebf41c84c714d2ad8fda85
│   │       ├── jid
│   │       └── linux-node1.example.com
│   │           └── return.p
│   └── e3
│       └── d2ffbc8e72a923205126c07c9e1e55
│           ├── jid
│           └── linux-node1.example.com
│               └── return.p

二、jobs管理组件

一个方便管理jobs的系统:runners.jobs

列出job cache中的job
[[email protected] /var/cache/salt/master]# salt-run jobs.list_jobs
[WARNING ] /usr/lib/python2.7/site-packages/salt/grains/core.py:1493: DeprecationWarning: The "osmajorrelease" will be a type of an integer.

20161109090923312794:
    ----------
    Arguments:
        - whoami
    Function:
        cmd.run
    StartTime:
        2016, Nov 09 09:09:23.312794
    Target:
        *
    Target-type:
        glob
    User:
        root

查看某个job的返回

[[email protected] ~]# salt-run jobs.lookup_jid 20161109093137760714

linux-node1.example.com:
    PING www.a.shifen.com (119.75.218.70) 56(84) bytes of data.
    64 bytes from 119.75.218.70: icmp_seq=1 ttl=128 time=9.78 ms
    64 bytes from 119.75.218.70: icmp_seq=2 ttl=128 time=4.65 ms
    64 bytes from 119.75.218.70: icmp_seq=3 ttl=128 time=8.26 ms
    
    --- www.a.shifen.com ping statistics ---
    3 packets transmitted, 3 received, 0% packet loss, time 2010ms
    rtt min/avg/max/mdev = 4.657/7.569/9.786/2.150 ms

可以使用salt-run查看当前up和down的minion

[[email protected] ~]# salt-run manage.status
down:
up:
    - linux-node1.example.com
    - linux-node2.example.com
时间: 2024-10-11 05:16:42

SaltStack-job管理的相关文章

Saltstack 用户管理

最近测试组来了一大波,最为公司测试那必须要有qa环境,测试组老大跟我关系很好,他们组不少人对Linux也很了解,平时弄个东西啥的也能自己搞定,软磨硬泡加上最近真的很忙给他们配置了jenkins和开了qa环境用户权限,说下saltstack的用户管理吧. 简单一个小例子,记录下.对于用户管理模块的各个函数以及参数可以看看官网or源码. 需求是这样的4个不同的用户,统一的密码,家目录啥的随便,这对于salt来说,简直TM 太简单了 我们用到了pillar [email protected] /srv

saltstack(六) saltstack Job管理

一,简介 Jid: job id 格式为%Y%m%d%H%M%S%f master在下发指令消息时,会附带上产生的jid,minion在接收到指令开始执行时,会在本地的cachedir(默认是/var/cache/salt/minion) 下的proc目录产生已该jid命名的文件,用于在执行过程中master查看当前任务的执行情况,指令执行完毕将结果传送给master后,删除该 临时文件 master将minion的执行结果存放在本地/var/cache/salt/master/jobs目录,默

saltstack主机管理项目【day23】:主机管理项目需求分析-设计

本节内容 一. 主机管理项目需求分析 二 .主机管理项目架构设计 三.主机管理项目初始构建 四. 主机管理项目编写插件基类 五 .主机管理项目命令分发器 一. 主机管理项目需求分析 配置管理: 1.装上nginx,mysql 2.nginx用我指定的配置文件 3.mysql用户 4.设置一个默认的数据库访问权限 5.启动mysql and nginx 问题: 1.脚本执行出错 2.客户端环境,不相同 3.重复脚本内容 4.无法实现状态管理和检测 解决: 1.标准化 2.客户端最好有个守护进程 二

saltstack主机管理项目【day39】:主机管理项目开发

项目目标 salt state.apply -h "ubuntu,centos" -g "ubuntu,centos" -f "ubuntu,centos" 文件目录规划 配置文件详解 步骤一:创建一个salt salt配置文件 #!/usr/bin/env python # -*- coding:utf-8 -*- # Author:Alex Li import os,sys if __name__ == "__main__"

ATsystem 使用介绍   --saltstack web 管理平台

ATsystem 的使用方法,目前系统的功能: dashboard 主页面 用户管理模块 用户组管理模块 minions 客户机列表模块 minions group 客户机组管理模块 后台任务管理模块 系统前端显示是我在网上找的一个模板,有些按钮或者链接目前没有添加功能,可以忽略掉,下面就根据上面列出的模块逐一进行介绍. 一.dashboard主页面. 在用户权限上面分为管理员和普通用户,所以主界面的显示也不同,普通用户只有 用户管理模块 用户组管理模块 这两个模块的使用权限. 主页面左边是模块

ATsystem   --saltstack web 管理平台

该平台是自己变学习python和django 边写的,不足之处,请各位不吝赐教,谢谢! 一.系统环境 centos6.4 x64  操作系统,python2.7.10  ,django1.8.1,mysql,saltstack2015.5.5-1(使用过程中 salt低版本有些功能不支持) 二.安装部署 1.先把mysql服务装上. yum -y  install  mysql-server mysql-devel  mysql 配置my.cnf 文件 [mysqld] character-se

SaltStack状态管理

1.状态模块 描述格式:YAML格式,文件以.sls结尾 理解YAML https://www.unixhot.com/docs/saltstack/topics/yaml/index.html YAML三板斧 第一:缩进. 注意,必须是两个空格.缩进代表层级关系. 第二:冒号. 与空格结合表示缩进. 冒号第二种用法是表示键值对 第三: 短横线 表示列表. 短横线后面都有空格 [[email protected] /srv/hehe/salt/base]# cat top.sls  base:

saltstack主机管理项目:计主机管理项目命令分发器(三)

四.主机管理项目命令分发器 开发 命令格式如下: 01.salt.py 只是一个入口,没干什么事情 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #!/usr/bin/env python # -*- coding:utf-8 -*- # Author:luoahong import os,sys if __name__ == "__main__":     os.environ.setdefault("DJANGO_SETTINGS_MODULE&

saltstack主机管理项目:编写插件基类-获取主机列表-提取yaml配置文件(四)

一.编写插件基类 1.目录结构 1.我是如何获知我有多少种系统? 当客户端第一连接过来的时候,我就已经把这些文件存下来了 ,存在到哪里了?存到数据库了 每次对主机发送命令的动作时,我从库里把数据取出来,我去判断有几种就可以,每个模块执行之前都要这样的判断, 直接把用户分配给了不同的模块,这就变成我了我每个模块都要写一边(重复劳动) 写一个公共的类,就是提取这些,你一定要有一个公共的类,他的作用是为了规范其他的模块 2.运行结果截图 cmd和state只要一执行就会自动去提取主机 二.获取主机列表

SaltStack 批量管理任务计划

这里演示如何使用 salt-master 对多台 salt-minion 批量添加任务计划,步骤如下: [[email protected] ~]$ cat /srv/salt/top.sls # 先定义入口配置文件 base: '*': - cron [[email protected] ~]$ cat /srv/salt/cron.sls # 定义要加载的sls文件 add_cron: # add_cron只是一个标识,方便我们查看这个文件的作用 cron.present: # cron.p