OpsGrat 文档

目录:

安装文档

解压安装

一、服务器要求

  • 操作系统:CentOS 7或Red Hat 7
  • CPU: >= 4 Core
  • 内存:>= 8 GB
  • 磁盘:>= 40 GB

二、安装包

安装包为:opsgrat-all-in-one.tar.gz

三、部署OpsGrat

1、将安装包上传到服务器 /opt 目录下
2、进入/opt目录执行解压:tar -zxvf opsgrat-all-in-one.tar.gz
3、进入/opt/opsgrat目录执行setup.sh脚本进行服务部署和启动:cd /opt/opsgrat && sh setup.sh

四、登录SSO

1、登录SSO,地址为:http://ip:8001/ (将ip替换为opsgrat服务器的ip地址)
2、默认用户为:admin,默认密码为:admin

五、配置OpsGrat和SSO的访问路径

访问SSO系统的“菜单管理”中“子系统管理”菜单,如下图所示
_images/sub_system.png
将上图中OpsGrat和SSO的路径中ip地址该为OpsGrat部署机器的ip地址

六、导入License

打开OpsGrat:http://ip:8000/ (将ip替换为opsgrat服务器的ip地址)
第一次进入OpsGrat页面如下:
_images/license_one.png
点击“导入”按钮,选择License文件导入License
_images/import.png
Lincense导入成功后即可开始使用

系统配置

目标:

OpsGrat采用All In One解压安装,默认情况下不需要做任何配置修改即可使用

本文将对OpsGrat的配置文件、日志以及启动方式作详细说明,以便帮助使用人员更好的对OpsGrat进行维护

环境:

  • OS:CentOS 7/Red Hat 7
  • Python: 3.7.4
  • MySQL: 5.7
  • Redis:主流版本
  • RabbitMQ:主流版本
  • Nginx:主流版本

一、OpsGrat配置文件

配置文件路径为:/opt/opsgrat/opsgrat/conf/opsgrat.yml

OpsGrat默认配置如下图所示:
_images/opsgrat_config.png

字段含义:

字段 数据类型 是否必须 说明
DB_NAME String OpsGrat数据库名称
DB_USER String OpsGrat数据库用户账号名
DB_PASSWORD String OpsGrat数据库密码
DB_HOST String OpsGrat数据库主机名、ip地址或域名
DB_PORT String OpsGrat数据库端口
REDIS: Dict Redis配置
  • HOST
String Redis主机名、ip或域名
  • PORT
String Redis端口
  • PASSWORD
String Redis密码
RABBIT_MQ: Dict Rabbitmq配置
  • HOST
String RABBIT_MQ主机名、ip或域名,空表示使用redis
  • PORT
String RABBIT_MQ端口
  • USER
String RABBIT_MQ用户名
  • PASSWORD
String RABBIT_MQ密码
SYSTEM_NAME String 系统名称,与SSO中OpsGrat的子系统名称对应
LOG String OpsGrat系统日志路径
DEBUG String 是否开启debug模式
LICENSE String License文件路径

二、SSO配置文件

配置文件路径为:/opt/opsgrat/sso/conf/sso.yml

SSO默认配置如下图所示:
_images/sso_config.png

字段含义:

字段 数据类型 是否必须 说明
DB_NAME String SSO数据库名称
DB_USER String SSO数据库用户账号名
DB_PASSWORD String SSO数据库密码
DB_HOST String SSO数据库主机名、ip地址或域名
DB_PORT String SSO数据库端口
REDIS: Dict Redis配置
  • HOST
String Redis主机名、ip或域名
  • PORT
String Redis端口
  • PASSWORD
String Redis密码
RABBIT_MQ: Dict Rabbitmq配置
  • HOST
String RABBIT_MQ主机名、ip或域名,空表示使用redis
  • PORT
String RABBIT_MQ端口
  • USER
String RABBIT_MQ用户名
  • PASSWORD
String RABBIT_MQ密码
SYSTEM_NAME String 系统名称,与SSO中OpsGrat的子系统名称对应
LOG String OpsGrat系统日志路径
DEBUG String 是否开启debug模式
LICENSE String License文件路径

三、异步任务配置

OpsGrat和SSO的异步任务配置在 /opt/opsgrat/etc/supervisor/conf.d 目录中

任务进程描述:

配置文件 说明
opsgratd.ini OpsGrat自动化作业进程,默认进程数为10(按8Core*16G服务器配置)
notification.ini OpsGrat通知进程,用于发送作业执行结果通知,默认进程数为5
opsgratbeat.ini OpsGrat定时任务进程,用于生成计划任务作业
ssod.ini SSO异步任务进程,用于执行AD用户同步等异步任务,默认进程数为2
ssobeat.ini SSO定时任务进程,用于生成计划任务作业
注:opsgratd.ini中--concurrency参数表示进程数量,需要根据服务器实际配置进行调整,一般配置为服务器CPU核数+1

四、web配置

默认端口为:7500
默认进程数为:4
supervisor配置为:/opt/opsgrat/etc/supervisor/conf.d/opsgrat-web.ini
默认端口为:7501
默认进程数为:4
supervisor配置为:/opt/opsgrat/etc/supervisor/conf.d/sso-web.ini

五、nginx配置

OpsGrat nginx配置文件路径为:/opt/opsgrat/nginx/etc/nginx/conf.d/opsgrat.conf
OpsGrat默认web访问端口为8000,可以在配置文件中修改该端口

SSO nginx配置文件路径为:/opt/opsgrat/nginx/etc/nginx/conf.d/sso.conf
SSO默认web访问端口为8001,可以在配置文件中修改该端口

六、日志

OpsGrat日志:

OpsGrat日志文件路径为:/opt/opsgrat/var/log/opsgrat/

opsgrat-worker.log为OpsGrat自动化作业的日志,可以看到OpsGrat自动化作业的执行情况以便进行作业追踪和调试

notification-worker.log为OpsGrat通知进程的日志

opsgrat_error.log和opsgrat.log是OpsGrat web后台的日志

SSO日志:

SSO日志文件路径为:/opt/opsgrat/var/log/sso/

sso-worker.log为sso异步任务的日志

sso.log和sso_error.log是SSO web后台的日志

supervisor日志:

supervisor的日志路径为:/opt/opsgrat/var/log/supervisor/

supervisor日志可以看到OpsGrat和SSO各个进程的启动和运行情况以便排除进程无法启动等问题

七、启动&停止命令

supervisord进程:

supervisord进程默认为开机启动
启动命令:systemctl start supervisord
停止命令:systemctl stop supervisord
重启命令:systemctl restart supervisord
开机启动:systemctl enable supervisord
取消开机启动:systemctl disable supervisord

OpsGrat和SSO进程:

OpsGrat和SSO的进程默认使用supervisor进行管理
启动命令:supervisorctl -c /opt/opsgrat/etc/supervisor/supervisord.conf start all
停止命令:supervisorctl -c /opt/opsgrat/etc/supervisor/supervisord.conf stop all
重启命令:supervisorctl -c /opt/opsgrat/etc/supervisor/supervisord.conf restart all
查看进程:supervisorctl -c /opt/opsgrat/etc/supervisor/supervisord.conf

nginx进程:

nginx提供OpsGrat和SSO web访问服务,nginx进程默认为开机启动
启动命令:systemctl start nginx
停止命令:systemctl stop nginx
重启命令:systemctl restart nginx
开机启动:systemctl enable nginx
取消开机启动:systemctl disable nginx

MySQL进程:

MySQL默认为开机启动
启动命令:service mysql start
停止命令:service mysql stop
重启命令:service mysql restart
开机启动:systemctl enable mysql
取消开机启动:systemctl disable mysql

Redis进程:

Redis作为celery异步任务执行结果缓存以及OpsGrat作业日志缓存,Redis默认为开机启动
启动命令:systemctl start redis
停止命令:systemctl stop redis
重启命令:systemctl restart redis
开机启动:systemctl enable redis
取消开机启动:systemctl disable redis

RabbitMQ进程:

rabbitmq作为celery异步任务broker进程,rabbitmq默认为开机启动
启动命令:systemctl start rabbitmq-server
停止命令:systemctl stop rabbitmq-server
重启命令:systemctl restart rabbitmq-server
开机启动:systemctl enable rabbitmq-server
取消开机启动:systemctl disable rabbitmq-server

使用手册

快速入门

说明

  • 通过例子引导OpsGrat的配置和使用

一、基础设置

1.1 SSO子系统设置
先设置SSO,实现基础配置,再管理设备
首先,进入SSO
_images/sso.png
点击页面左侧菜单栏中“菜单管理”下的“子系统管理”进入子系统管理页面
修改OpsGrat和SSO的路径,改成实际的访问路径
_images/navigation.png
1.2 ldap设置
如果不使用ldap认证可以跳过该步骤
_images/settings_ldap.png
1.3 opsgrat导入License
点击左上角opsgrat图标,进入opsgrat系统
如果未导入License,会自动进入License导入界面
_images/Licenseno.png
点击导入按钮,导入申请时,通过邮件获取的License.txt文件
_images/License.png
1.4 添加用户
点击“用户管理”下的“用户管理”菜单,进入用户管理页面。
如果配置了ldap则在“新增”按钮后面会有一个“AD”按钮,如下图。点击“AD”按钮会从ldap获取用户
如果没有配置ldap则需要手工为自己添加用户,是否管理员设置为“是”
然后使用新的用户重新登录SSO
_images/sso_user.png
点击“新增”按钮,新增一个deploy用户
_images/add.png
退出登录,使用deploy用户进行操作
_images/in.png

二、资源管理

2.1 添加ssh登录凭据
点击右上方“OpsGrat”导航栏,跳转到OpsGrat系统
点击左侧菜单“资源管理”下的“凭据管理”菜单
_images/pingju1.png
点击“新增”按钮,新增凭据类型为ssh的凭据
_images/ssh_pj.png
2.2 添加git的凭据
点击“新增”按钮,新增凭据类型为“用户名和密码”的git凭据
_images/git_yhm.png
2.3 添加项目
点击左侧菜单“资源管理”下的“项目管理”菜单
_images/management.png
点击“新增”按钮,新增凭据类型为git项目的凭据
_images/git_xm.png
2.4 添加主机清单
点击左侧菜单“资源管理”下的“主机清单”菜单
_images/inventory1.png
点击“新增”按钮,添加主机清单
主机清单内容可直接填写ip地址
_images/quick_inventory_1.png _images/quick_inventory_2.png _images/quick_inventory_3.png _images/quick_inventory_4.png _images/quick_inventory_5.png _images/quick_inventory_6.png _images/quick_inventory_7.png _images/quick_inventory_9.png

三、通知管理

3.1 添加邮件设置
点击左侧菜单“通知管理”下的“渠道设置”菜单,点击邮件设置
_images/channel_email.jpg
点击“新增”按钮,新增邮件
_images/channel_email_add.jpg
3.2 添加通知设置
点击左侧菜单“通知管理”下的“通知设置”菜单
_images/notification.jpg
点击“新增”按钮,选择类型为邮件的渠道
_images/notification_add1.jpg

四、模板管理

4.1 添加作业模板
点击左侧菜单“模板管理”下的“作业模板”菜单
_images/template.jpg
点击“新增”按钮,添加作业模板
_images/template_addupdate.jpg
假设添加的main.yml的内容为:
---
# 创建用户

- hosts: all
  tasks:
   - name: Create group
     group:
       name: "{{ group_name }}"
       state: present

   - name: Create user
     user:
       name: "{{ user_name }}"
       groups: "{{ group_name }}"
       state: present

   - name: Create .ssh
     file:
       path: "/home/{{ user_name }}/.ssh"
       owner: "{{ user_name }}"
       group: "{{ group_name }}"
       mode: 0700
       state: directory


   - name: Deploy authorized_keys
     copy:
       src: authorized_keys
       dest: "/home/{{ user_name }}/.ssh/authorized_keys"
       owner: "{{ user_name }}"
       group: "{{ group_name }}"
       mode: 0600
在扩展参数里填入main.yml需要的参数,如:
_images/template_addupdateadda.jpg
4.2 设置通知方式
点击通知设置图标,进入通知设置
_images/template_sz.jpg _images/templatetzsz.jpg
点击新增,选择通知方式,如邮件通知
_images/method_to.jpg
4.2 执行作业模板
点击执行图标,执行作业模板
_images/template_hj2.jpg
通过显示的执行日志页面,可以看到执行过程
_images/template_hjadd.jpg

五、自动化管理

5.1 快速命令执行
点击左侧菜单“自动化管理”下的“批量命令”菜单,填写数据后,点击“执行命令”按钮
_images/32.jpg
批量执行
_images/33.jpg
5.2 查看作业日志
点击左侧菜单“自动化管理”下的“作业管理”菜单,点击“查看日志”图标,查看作业日志
_images/job.jpg
作业日志:
_images/job_zy.jpg
5.3 设置计划任务
点击左侧菜单“自动化管理”下的“计划任务”菜单
_images/schedule.jpg
点击“新增”按钮,设置计划任务
_images/schedule_add.jpg

Dashboard

一、仪表图查看

1.1 仪表图查看
打开Opsgrat,点击页面左侧菜单栏中“首页”进入仪表盘查看页面,
在该页面最上方可以查看正在运行的作业、失败的作业、即将运行作业、和错误主机的数量,
其次可以看到操作日志,可以自己切换的每日或每周的作业趋势图,
以及可以看到作业任务的散点图和最后面的今日作业。
_images/dashboard_img.jpg
1.2 作业次数统计图查看
打开Opsgrat,点击页面左侧菜单栏中“Dashboard”下的“作业次数统计”进入作业次数统计查看页面,
在该页面可以查看作业趋势图,成功次数、失败次数和总次数的详情情况,
其次可以查看作业执行的成功率情况。
_images/dashboard_trend.jpg
1.3 模板排名统计图查看
打开Opsgrat,点击页面左侧菜单栏中“Dashboard”下的“模板排名统计”进入模板排名统计查看页面,
在该页面可以查看模板执行次数前十的模板名称以及数量,
其次可以查看模板执行时间前十的模板名称以及时间,
以及可以查看模板错误次数前十的模板名称以及数量。
_images/dashboard_template.jpg

自动化管理

一、作业管理

点击左侧菜单“自动化管理”下的“作业管理菜单”
_images/1.jpg
点击上方的内容筛选框,可以根据模糊搜索、模板、主机清单、凭据进行查询并返回结果,也可以点击旁边的高级筛选条件进行搜索查询。
_images/2.jpg
点击操作框内的日志查看按钮
_images/5.jpg
跳转到该作业的日志页面、左边部分显示该作业的信息、右边部分显示日志信息
_images/6.jpg
点击操作框内的执行按钮
_images/7.jpg
提示确认信息,确认后执行命令,跳转到该作业的日志页面
_images/8.jpg _images/9.jpg
点击操作框内的删除按钮,可以删除当前行数据
_images/10.jpg
提示确认信息,确认后进行数据删除
_images/11.jpg _images/12.jpg
点击右上角的列显示状态按钮下拉菜单,并点击要隐藏或者展示的列来获取相应列的信息
_images/13.jpg _images/14.jpg
选择一个模板的作业类型为工作流的作业,点击执行按钮,跳转到工作流图形页面
展示该工作流模板的流程图下的各个节点运行状态,可以根据右侧的状态信息进行了解
_images/15.png
在展示的流程图形页面可以点击节点上的查看按钮,会跳转到该节点下的模板任务执行情况
_images/16.png _images/17.jpg
模板类型为工作流的模板可以点击前面的加号,会展示出该ID下的子作业数据。
_images/18.jpg _images/19.jpg
同时可以对子作业进行执行、查看、删除等操作,功能与前面所介绍的类似。
说明:1、当作业类型为自动化作业或者命令,点击执行按钮跳转到作业日志页面
      2、当作业类型为工作流,点击执行按钮跳转到工作流程图形页面
      对应页面如下如:
_images/20.png _images/21.png _images/22.png _images/23.png

二、快速命令

点击左侧菜单“自动化管理”下的“快速命令菜单”
_images/25.png
添加相应的数据(像模块、登录凭据(ssh)、主机清单等下拉框值均要在相应的页面进行新增数据才可显示)具体情况如下图:
点击左侧菜单“系统管理”下的“Ansible模块”、在此页面进行新增需要的模块。
_images/24.png
点击左侧菜单“资源管理”下的“凭据管理”、在此页面进行新增需要的凭据。
_images/26.png
点击左侧菜单“资源管理”下的“主机清单”、在此页面进行新增需要的主机清单(详细步骤已在介绍主机清单说明)。
_images/27.png
最后添加数据,并点击右上角的执行命令按钮,页面进行跳转。
_images/28.png
该批量命令会跳转到该任务的日志页面,展示该批量命令运行的信息
_images/29.png

三、Playbook执行

点击左侧菜单“自动化管理”下的“Playbook执行”
_images/30.png
填写或选择相应的数据(像主机清单、登录凭据(ssh)上面以作叙述,这里不再介绍)
这里介绍如何获取tags和skip_tags、点击左侧菜单“系统管理”下的“Playbook tag”
_images/31.png
最后填写具体数据,并点击右上角的执行按钮
_images/32.png
该作业会跳转到相应的日志页面,并展示该作业运行的具体信息以及日志信息
_images/33.png

四、计划任务

点击左侧菜单“自动化管理”下的“计划任务菜单”
_images/34.png
点击页面上的新增按钮,执行方式为计划任务
_images/35.png
点击新增按钮,执行方式为固定间隔
_images/36.png
点击新增按钮,执行方式为指定时间
_images/37.png
点击授权按钮,可对数据进行权限设置,设置后该条数据获得相应的权限。
_images/49.png
点击表格列的显示与隐藏按钮。
_images/50.png _images/51.png _images/52.png
点击上方的搜索框可以根据模板以及时间进行数据查询和返回查询结果
_images/39.png _images/38.png
点击操作框内的修改按钮,可以修改当行数据
_images/40.png _images/41.png
点击操作框内的权限管理按钮,可以增加相应的权限
_images/42.png
点击权限管理按钮后进入用户权限设置以及团队权限设置两个页卡、在两个页面均可以新增、修改、查询、删除等操作。
_images/43.png _images/44.png
点击查看按钮后页面跳转到页面管理页面,并展示出该计划任务所执行的作业。
_images/45.png _images/46.png
点击删除按钮后删除此条数据。
_images/47.png _images/48.png

资源管理

一、凭据管理

1.1 查看凭据
点击“资源管理”下的“凭据管理”菜单,进入凭据管理页面,可以在该页面查看所有添加的凭据。
_images/pingju1.jpg
1.2 查询
点击搜索模态框,可以根据根据凭据名称和用户名进行搜索查询。
_images/pingju2.jpg
1.3 添加凭据
点击“新增”按钮,根据模态框新增相应得数据进行添加凭据。
_images/pingju3.jpg
1.4 修改凭据
点击操作栏下的“修改”按钮,根据模态框相应得数据进行修改凭据。
_images/pingju4.jpg
1.5 删除凭据
点击操作栏下的“删除”按钮,可以删除该凭据。
_images/pingju5.jpg
1.6.1 权限管理(授权用户)
点击操作栏下的“权限管理”按钮,可进入到授权用户界面。
_images/quanxian1.jpg
1.6.2 权限管理(授权用户)查询
点击搜索模态框,可以根据根据凭据名称和用户名进行搜索查询。
_images/quanxian2.jpg
1.6.3 权限管理(授权用户)新增
点击“新增”按钮,根据模态框新增相应得数据进行添加授权用户。
_images/quanxian3.jpg
1.6.4 权限管理(授权用户)修改
点击操作栏下的“修改”按钮,根据模态框相应得数据进行修改授权用户。
_images/quanxian4.jpg
1.6.5 权限管理(授权用户)删除
点击操作栏下的“删除”按钮,可以删除该授权用户。
_images/quanxian5.jpg
1.6.6 权限管理(授权团队)
点击上方页卡的“授权团队”按钮,可进入到授权团队界面。
_images/quanxian6.jpg
1.6.7 权限管理(授权团队)查询
点击搜索模态框,可以根据根据团队进行搜索查询。
_images/quanxian7.jpg
1.6.8 权限管理(授权团队)新增
点击“新增”按钮,根据模态框新增相应得数据进行添加授权团队。
_images/quanxian8.jpg
1.6.9 权限管理(授权团队)修改
点击操作栏下的“修改”按钮,根据模态框相应得数据进行修改授权团队。
_images/quanxian9.jpg
1.6.10 权限管理(授权团队)删除
点击操作栏下的“删除”按钮,可以删除该授权团队。
_images/quanxian10.jpg

二、项目管理

2.1 查看项目
点击“资源管理”下的“项目管理”菜单,进入项目管理页面,可以在该页面查看所有添加的项目。
_images/xiangmu1.jpg
2.2 查询
点击搜索模态框,可以根据根据项目类型、凭据、名称、描述进行搜索查询,
点击最右边的按钮,可以对相应得数据隐藏或者显示。
_images/xiangmu2.jpg
2.3 添加项目
点击“新增”按钮,根据模态框新增相应得数据进行添加项目。
_images/xiangmu3.jpg
2.4 修改项目
点击操作栏下的“修改”按钮,根据模态框相应得数据进行修改项目。
_images/xiangmu4.jpg
2.5 删除项目
点击操作栏下的“删除”按钮,可以删除该项目。
_images/xiangmu5.jpg
2.6.1 权限管理(授权用户)
点击操作栏下的“权限管理”按钮,可进入到授权用户界面。
_images/xiangmu_quanxian1.jpg
2.6.2 权限管理(授权用户)查询
点击搜索模态框,可以根据根据凭据名称和用户名进行搜索查询。
_images/xiangmu_quanxian2.jpg
2.6.3 权限管理(授权用户)新增
点击“新增”按钮,根据模态框新增相应得数据进行添加授权用户。
_images/xiangmu_quanxian3.jpg
2.6.4 权限管理(授权用户)修改
点击操作栏下的“修改”按钮,根据模态框相应得数据进行修改授权用户。
_images/xiangmu_quanxian4.jpg
2.6.5 权限管理(授权用户)删除
点击操作栏下的“删除”按钮,可以删除该授权用户。
_images/xiangmu_quanxian5.jpg
2.6.6 权限管理(授权团队)
点击上方页卡的“授权团队”按钮,可进入到授权团队界面。
_images/xiangmu_quanxian6.jpg
2.6.7 权限管理(授权团队)查询
点击搜索模态框,可以根据根据团队进行搜索查询。
_images/xiangmu_quanxian7.jpg
2.6.8 权限管理(授权团队)新增
点击“新增”按钮,根据模态框新增相应得数据进行添加授权团队。
_images/xiangmu_quanxian8.jpg
2.6.9 权限管理(授权团队)修改
点击操作栏下的“修改”按钮,根据模态框相应得数据进行修改授权团队。
_images/xiangmu_quanxian9.jpg
2.6.10 权限管理(授权团队)删除
点击操作栏下的“删除”按钮,可以删除该授权团队。
_images/xiangmu_quanxian10.jpg

三、主机清单

3.1 查看主机清单
点击“资源管理”下的“主机清单”菜单,进入项目管理页面,可以在该页面查看所有添加的主机清单。
_images/1.png
3.2 查询
点击搜索模态框,可以根据根据名称和描述进行搜索查询,点击最右边的按钮,可以对相应得数据隐藏或者显示。
_images/2.png
3.3 添加主机清单
点击“添加主机清单”按钮,跳转到添加主机清单页面,填写相应数据,点击下一步,或者取消(删除当前主机清单)。
_images/3.png _images/4.png
3.4 添加主机
点击下一步后进入添加主机页面,此页面可以添加主机或者添加主机来源,此处先说明添加主机,点击添加主机按钮,弹出的模态框内填写相应数据,然后点击保存。同时,也可以点击上一步或者取消按钮执行相应的操作。
_images/5.png _images/6.png
3.5 添加主机页面
点击上步保存后,页面进入到添加主机页面,此页面可以展示添加的主机,可以进行新增,删除,修改等操作(在弹出的模态框内可以进行相应的数据操作,然后点击保存按钮即可达到相应操作目的)。
_images/7.png _images/8.png _images/9.png _images/10.png _images/11.png
3.6 添加分组页面
点击下一步进入到添加分组页面,此页面可以新增,删除,修改等操作(在弹出的模态框内可以进行相应的数据操作,然后点击保存按钮即可达到相应操作目的)。
_images/12.png _images/13.png _images/13.png
当新增分组后下方的跳过按钮变成了下一步按钮,在新增的数据后面可以对改数据进行操作,
具体包括添加子分组,添加主机,编辑分组三个按钮。
_images/14.png
添加子分组,点击子分组按钮在弹出模态框内添加数据,然后点击提交,数据添加成功,跳转到父分组页面,可以观察子分组是否添加进去(如下第三张图表名添加成功)。
_images/151.png _images/161.png _images/17.png
添加已有子分组,点击子分组按钮在弹出模态框,然后点击添加已有子分组,进入到相关页面,此页面可以添加,移除子分组。
_images/18.png _images/19.png _images/201.png
添加主机,点击添加主机按钮弹出模态框,此页面可以添加,移除主机,当状态一栏变成已添加说明添加成功(如下第四张图表名主机添加成功),反之则该主机没有被添加(或者点击移除按钮可以将当前主机的添加状态变成未添加)。
_images/211.png _images/221.png _images/231.png _images/241.png
,点击添加主机按钮弹出模态框,此页面可以添加,移除主机,当状态一栏变成已添加说明添加成功(如下第四张图表名主机添加成功),反之则该主机没有被添加(或者点击移除按钮可以将当前主机的添加状态变成未添加)。
_images/211.png _images/221.png _images/231.png _images/241.png
,点击编辑分组按钮,在弹出的模态框内编辑所需要改变的数据,点击保存,即可修改相应数据。
_images/251.png
3.7 添加凭据页面
点击下一步按钮,进入到添加凭据页面,此页面可以为当前主机添加登录凭据,新增,删除。编辑等操作,同时也可以点击右下角的取消按钮,删除当前主机清单。
_images/261.png
点击添加凭据按钮,在弹出的模态框内添加相应的数据,然后点击保存,即可对当前主机清单添加登录凭据,然后点击下一步,进入获取主机状态展示页面。
_images/271.png _images/281.png _images/291.png
进入主机状态获取页面,可以对其进行授权,删除,查看主机等操作,同时也可以点击完成和上一步按钮进行相应的操作目的。
_images/301.png
进点授权按钮,在弹出的模态框可以进行对该主机清单的权限设置,分为用户授权,团队授权两个部分,此处先说明用户授权,在此页面可以进行查询,批量授权,删除以及编辑操作(具体操作如下图)
_images/311.png _images/321.png _images/331.png _images/341.png _images/351.png _images/361.png
点击授权团队tab页,页面切换到团队授权,在此页面可以进行查询,批量授权,删除以及编辑操作(具体操作如下图)
_images/371.png _images/381.png _images/391.png _images/401.png _images/411.png _images/421.png
返回到主机状态页面点击查看主机按钮,在弹出的模态框内展示出当前组的主机以及状态,同时在此页面可以移除当前主机。
_images/431.png _images/441.png _images/451.png
3.8 新增主机来源
在主机状态页面点击完成按钮,页面跳转到主机清单页面,再次点击添加主机按钮,进入添加主机清单页面,填入相应数据,点击下一步,进入主机选择页面,此时点击主机来源按钮,即可添加主机来源。
_images/461.png _images/471.png _images/481.png _images/491.png
添加主机来源写入相应数据后点击保存按钮,页面跳转到添加凭据页面,此页面与上面介绍的功能一样,也可以直接选择已有的凭据,然后点击使用按钮,即可为当前主机来源添加登录凭据,然后点击下一步进入主机状态获取页面,即完成了主机清单主机来源的添加全部步骤。
_images/511.png _images/521.png _images/53.png
3.9 主机清单页面功能
此页面可以进行模糊筛选,以及点击高级筛选即可进行精确筛选数据,同时也可以进行授权,删除,刷新状态,编辑,授权设置,同步等操作。
_images/55.png _images/56.png _images/57.png _images/58.png _images/59.png _images/60.png _images/61.png
在主机清单页面点击状态图标,页面可以进入状态筛选页面,可以进行模糊筛选以及高级筛选展示相应数据结果。
_images/62.png _images/63.png
在主机清单页面点击清单名称,页面跳转到该清单的分组管理和主机管理页面,此处先说明分组页面功能,可以进行模糊筛选,高进筛选,新增分组,删除,刷新状态,添加子分组,编辑分组,添加主机等操作。
_images/64.png _images/65.png _images/66.png _images/65.png _images/65.png _images/65.png
3.7.4 分组管理页面
在主机清单页面点击清单名称,页面跳转到该清单的分组管理和主机管理页面,此处先说明分组页面功能,可以进行模糊筛选,高进筛选,新增分组,删除,刷新状态,添加子分组,编辑分组,添加主机等操作。
_images/64.png _images/65.png _images/66.png _images/67.png _images/68.png _images/69.png _images/70.png _images/71.png _images/72.png _images/73.png _images/74.png _images/75.png _images/76.png _images/77.png _images/78.png _images/79.png _images/80.png _images/81.png _images/82.png
在分组管理页面,可以点击状态的图标,进入主机状态筛选页面,可以对主机状态进行筛选(模糊筛选,高级筛选)。
_images/83.png
在分组管理页面,可以对主机状态进行切换,目前有两个(启用和禁用),点击状态切换按钮即可。
_images/84.png
3.8 主机管理页面
点击主机的tab页面,页面进入主机管理页面,此页面可以进行模糊搜索,高级搜索,添加主机,删除,刷新状态和修改主机等操作。
_images/86.png _images/87.png _images/88.png _images/89.png _images/90.png _images/91.png _images/92.png
在分组管理页面,可以对主机状态进行切换,目前有两个(启用和禁用),点击状态切换按钮即可
_images/93.png
3.8 添加分组和添加主机按钮弹出的模态框逻辑说明
在分组管理页面点击添加分组,弹出的模态框有两个tab页可以进行相互切换,若当前主机清单是手动添加的主机,则默认选中添加分组,若是主机来源添加主机,则默认选中主机来源(两种情况分别如下)。
_images/95.png _images/96.png
若手动添加切换为主机来源时候会弹出一个信息提示框,若来源添加主机切换为手动时候同时也会弹出一个信息提示框(两种情况分别如下),可根据需求进行选择。
_images/98.png _images/97.png
主机管理页面的添加主机按钮也有相同的功能切换逻辑,不做赘述。
在主机管理页面,也可以点击名称字段,会跳转到该主机近期所执行的作业展示,同时可以在此页面进行数据模糊筛选,高级筛选,对执行后的作业再次执行,查看,删除等操作。
_images/99.png _images/100.png _images/101.png _images/102.png _images/103.png

模板管理

一、作业模板

点击左侧菜单“模板管理”下的“作业模板菜单”
_images/15.jpg
点击新增按钮,跳转到新增页面,并添加相应的数据(像此页面的主机清单、自动化管理、登录凭据(ssh)、tags等下拉框的值均来自于相应页面的新增数据后才可显示选择,前面章节以作相应的介绍,这里不再赘述),点击保存
_images/21.jpg
点击保存后,跳转到作业模板页面、同时可以点击上方下拉框进行主机清单、凭据、自动化项目等数据查询并返回查询结果、返回结果分别如下图:
_images/3.jpg _images/4.jpg _images/51.jpg
点击操作框内的执行按钮,跳转到该作业模板的日志页面,显示作业信息和作业日志
_images/61.jpg
点击操作框内的通知按钮,跳转到该作业模板的通知设置页面
_images/71.jpg
点击新增按钮按钮,添加相应数据并提交保存(新增时的通知字段下拉框值来自于通知管理--通知设置,要提前新增数据才可显示),具体步骤如下图:
_images/81.jpg _images/91.jpg
点击修改按钮,修改相应的数据,点击删除按钮,可以删除当前行数据、具体如下图:
_images/101.jpg _images/111.jpg _images/121.jpg
返回作业模板页面,点击修改按钮
_images/131.jpg
进入修改页面,修改相应的数据,点击修改即可保存
_images/141.jpg
返回作业模板页面,点击权限按钮,进行权限设置,跳转到授权用户和授权团队的两个页卡页面
_images/151.jpg _images/16.jpg
在授权用户页面若当前用户没有被超级管理员授权,则不可以在此页面进行新增,修改,删除等操作、具体情况如下图:
_images/171.jpg _images/181.jpg
点击新增按钮填入相应数据,点击提交按钮,此时弹出没有权限执行操作
_images/191.jpg
点击新修改按钮修改相应数据,点击提交按钮,此时弹出没有权限执行操作
_images/20.jpg
点击删除按钮删除当前行数据,点击确认后,此时弹出没有权限执行操作
_images/211.jpg
若当前用户被超级管理员授予管理权限,则可以执行新增、修改、删除等操作
_images/22.jpg
执行新增操作(新增时的用户下拉框的值来自于sso系统配置的用户)
_images/23.jpg
执行修改、删除等操作与新增一样,这里不再介绍、从以上可以看出每个用户有着不同的权限,其中超级管理员的权限最大,然而每种权限也有着不同的执行能力,其中包括:只读、执行、执行与读写、管理这四种权限类型
点击授权团队页卡按钮,进入到团队权限页面
_images/24.jpg
点击新增按钮,填入相应的数据(其中的团队名称下拉框值来自于系统管理--团队管理所新增的团队名称)
_images/25.jpg _images/26.jpg
同时可以修改和删除相应的数据
_images/27.jpg _images/28.jpg _images/29.jpg _images/30.jpg

二、工作流模板

点击左侧菜单“模板管理”下的“工作流模板菜单”
_images/31.jpg
点击新增按钮,填入相应数据
_images/321.jpg
点击操作框内的流程设计按钮,进入流程设计页面、在此页面移动鼠标至右上角将开始节点和处理节点拖拽到左侧的放置区域内,同时可以将节点之间进行连接
_images/331.jpg
对于连线有以下几点说明:
1、从开始节点开始进行连线,可以同时连接几个处理节点
2,节点之间只能进行一次连线(即每个处理节点只能执行一次)
3,最后的处理节点不可连接开始节点,否则会出现死循环
点击连线之间的修改按钮,可以对节点之间的状态进行设置
_images/34.jpg
对于连线状态之间设置说明:1、当设置为成功或失败时,此时无论前一个节点的状态如何都会去执行下一个节点 2、当设置为成功时,此时前一个节点状态若为成功则执行下一个节点,若前一个节点为失败则不会执行下一个节点 3、当设置成失败时,此时前一个节点状态若为失败则会执行下一个节点,同理若前一个节点状态为成功则不会执行下一个节点
点击节点上的修改按钮,可以编辑该节点以及点击节点上的删除按钮可以删除相关节点
_images/35.jpg
返回工作流模板页面,点击通知设置按钮
_images/36.jpg
进入到该工作流的通知设置页面,可以对其进行通知设置,在此页面可以进行新增、修改、删除等操作,此步骤在前面的(模板管理--作业模板中的通知设置一样,这里不再赘述)
对于通知设置的作用这里简单介绍一下:目前支持钉钉,邮件,企业微信这三种通知类型,设置不同的类型,当模板执行成功或者失败的时候会根据设定的通知对你进行消息通知
点击操作框内的执行按钮,可以执行该工作流,并跳转到流程图页面,展示相关信息
_images/37.jpg _images/38.jpg
同时可以点击节点上的查看按钮,跳转到该节点模板的执行状态页面
_images/39.jpg _images/40.jpg
同时可以修改以及删除相关的数据,与前面的修改和删除一样,这里不做赘述
返回工作流模板页面,点击右上角的列状态下拉菜单,可以对相应的列进行显示或者隐藏
_images/41.jpg _images/42.jpg

通知管理

一、通知设置

点击左侧的菜单“通知管理”下的“通知设置菜单”
_images/notification_settings.jpg
点击新增按钮,渠道类型选择邮件(其中通知渠道下拉框值要在通知管理--渠道设置中新增数据才可显示)、目前渠道类型有三种:钉钉,邮件,企业微信
_images/notification_add.jpg
新增渠道类型选择钉钉(其中通知渠道下拉框值要在通知管理--渠道设置中新增数据才可显示)
_images/notification_dingtalk.jpg
新增渠道类型选择企业微信(其中通知渠道下拉框值要在通知管理--渠道设置中新增数据才可显示)
_images/notification_weixin.jpg _images/notification_add_result.jpg
同时可以进行修改、查询、删除等操作,与前面所介绍的执行功能结果一样,这里不再做赘述

二、渠道设置

点击左侧菜单“通知管理”下的“渠道设置菜单”
_images/notification_channel.jpg
在钉钉页面点击新增按钮,可以添加相应数据
_images/notification_channel_add_button.jpg
在钉钉页面点击修改按钮,可以修改相应数据
_images/notification_channel_update.jpg
在钉钉页面点击删除按钮,可以删除当前行数据
_images/notification_channel_delete.jpg _images/notification_channel_delete_result.jpg
点击页面上的邮件设置页卡按钮
_images/notification_channel_email.jpg
在邮件设置页面点击修改按钮,可以修改相关数据
_images/notification_channel_email_update.jpg
在邮件设置页面点击删除按钮,可以删除当前行数据
_images/notification_channel_email_delete.jpg _images/notification_channel_email_result.jpg
点击页面上的企业微信设置按钮,跳转到企业微信设置页面
_images/notification_channel_weixin.jpg
在此页面可以进行新增、修改、删除等操作、功能与前面所介绍的钉钉设置一样,这里不再赘述

系统管理

一、作业设置

管理作业存放的目录、作业超时时间、作业无响应时间和作业保存天数
点击左侧菜单“系统管理”下的“作业设置”菜单,进入作业设置
_images/jobsettingsadd.jpg
输入内容,点击“新增”按钮,保存配置的参数
_images/jobsettings_add2.jpg
若需改变已保存的值,修改完成后,点击“修改”按钮,保存配置的参数
“删除”按钮,清空保存的值
_images/jobsettings_bc.jpg

二、团队管理

1、新增
管理授权权限时默认的团队,用于授权团队中团队名称参数选择的默认值
点击左侧菜单“系统管理”下的“团队管理”菜单
_images/team.jpg
点击“新增”按钮,新增一个名称为“演示团队管理”的团队
_images/team_add.jpg
2、修改
点击操作栏下的“修改”按钮,进入修改界面
_images/team_two.jpg
修改完相应的内容后,点击提交
_images/team_update.jpg
3、删除
批量删除:选择想要删除的团队,点击删除按钮
_images/team_delete.jpg
会有提示询问是否删除
_images/team_dalete_ts.jpg
单个删除:选择操作栏的删除图标,进行删除
_images/team_delete2.jpg
4、搜索
搜索框输入要搜索的内容,会根据团队名称和描述进行搜索
_images/team_sou1.jpg
5、添加授权
点击操作栏查看团队或者选中需要新增的数据然后点击新增成员旁边的添加成员按钮可以进行团队的成员增加(按钮是无法进行删除的,只能快速添加,删除还是需要点击操作栏进入到相应界面进行删除)
_images/team_users1.jpg
在此页面可以进行新增、修改、删除等操作、功能与前面所介绍的设置一样,这里不再赘述
_images/team_users2.jpg

三、Ansible模块

1、新增
管理作业中默认的模块,用于批量命令中模块参数选择的默认值
点击左侧菜单“系统管理”下的“模块管理”菜单
_images/module.jpg
点击“新增”按钮,新增一个“shell”模块
_images/module_add.jpg
2、修改
点击操作栏下的“修改”按钮,进入修改界面
_images/module_update.jpg
如:修改权重,权重大的会排在前面
_images/module_shell1.jpg _images/module_q.jpg
3、删除
批量删除:选择想要删除的模块,点击删除按钮
_images/module_delete.jpg
单个删除:选择操作栏的删除图标,进行删除
_images/module_de2.jpg
4、搜索
搜索框输入要搜索的内容,会根据“模块名称”和“模块描述”进行搜索
_images/module_sou.jpg

四、playbook tag

1、新增
管理playbook中默认的tag,用于作业模板中tags参数和skip_tags参数选择的默认值
点击左侧菜单“系统管理”下的“playbook tag”菜单
_images/tag.jpg
点击“新增”按钮,新增名称为“zookeeper”的tag
_images/tagadd.jpg
2、修改
点击操作栏下的“修改”按钮,进入修改界面
_images/tag_up.jpg
如:修改权重,权重大的会排在前面
_images/tag_tomcat.jpg _images/tag_qz.jpg
3、删除
批量删除:选择想要删除的模块,点击删除按钮
_images/tag_delete1.jpg
单个删除:选择操作栏的删除图标,进行删除
_images/tag_delete2.jpg
4、搜索
搜索框输入要搜索的内容,会根据“tag”和“tag描述”进行搜索
_images/tag_sou.jpg

五、环境变量

1、新增
点击左侧菜单“系统管理”下的“环境变量”菜单
_images/huanjing1.jpg
点击“新增”按钮,新增一个环境变量
_images/huanjing2.jpg
2、修改
点击操作栏下的“修改”按钮,进入修改界面
_images/huanjing3.jpg
3、删除
批量删除:选择想要删除的模块,点击删除按钮
_images/huanjing4.jpg
单个删除:选择操作栏的删除图标,进行删除
_images/huanjing5.jpg
4、搜索
搜索框输入要搜索的内容,会根据“变量名称”进行搜索
_images/huanjing6.jpg

六、语音设置

1、新增
点击左侧菜单“系统管理”下的“语音设置”菜单
_images/yuyin1.jpg
填上相应的值,然后点击“新增”按钮,新增一个语音设置
_images/yuyin2.jpg
2、修改
修改相应的数据,点击修改按钮,修改数据
_images/yuyin3.jpg
3、删除
选择删除按钮,进行删除
_images/yuyin4.jpg

七、License

1、导入
点击左侧菜单“系统管理”下的“License”菜单
_images/license.jpg
点击“导入”按钮,导入申请时邮箱收到的License.txt文件,即可激活opsgrat功能
_images/license_import.jpg
2、MAC地址
若购买时,MAC地址填写错误
_images/license_noimport.jpg
可点击“查看MAC地址”,查看本机的MAC地址
_images/license_mac.jpg

使用案例

创建系统用户

一、创建user项目

1.1、创建user目录,并进入user目录

1.2、创建main.yml文件,并写入如下内容:

---
# 创建用户

- hosts: all
  tasks:
   - name: Create group
     group:
       name: "{{ group_name }}"
       state: present

   - name: Create user
     user:
       name: "{{ user_name }}"
       groups: "{{ group_name }}"
       state: present

   - name: Create .ssh
     file:
       path: "/home/{{ user_name }}/.ssh"
       owner: "{{ user_name }}"
       group: "{{ group_name }}"
       mode: 0700
       state: directory


   - name: Deploy authorized_keys
     copy:
       src: authorized_keys
       dest: "/home/{{ user_name }}/.ssh/authorized_keys"
       owner: "{{ user_name }}"
       group: "{{ group_name }}"
       mode: 0600

1.3、创建files目录,并将公钥文件authorized_keys放入其中

1.4、将user上传到GitLab中,假设为:http://10.12.155.111:8090/test/user.git

二、配置凭据

2.1、打开OpsGrat,点击左侧“资源管理”菜单下的“凭据管理”,进入凭据管理页面:

_images/pingju.png

2.2、添加主机登录凭据,点击新增按钮,“凭据类型”选择“ssh“,添加登录主机的ssh凭据:

ssh凭据可以设置通过用户名密码登录也可以配置通过ssh私钥登录
本文假设通过用户名密码登录,则填写内容如图所示
_images/pingju_ssh.png

2.3、添加GitLab凭据,点击新增按钮,“凭据类型”选择“用户名密码”

GitLab用户密码只支持http的用户密码
_images/pingju_gitlab.png

三、配置GitLab项目

3.1、点击左侧“资源管理”菜单下的“项目管理”菜单,进入项目管理页面:

_images/project.png

3.2、添加git项目,点击新增按钮,在新增表单中填写如下内容:

名称:创建系统用户并配置免密登录
项目类型:选择“git”
凭据:选择步骤2.3中添加的“测试环境GitLab账号”
项目地址:步骤1.4中上传的GitLab项目http地址
分支/Tag:master
_images/project_user.png

四、配置主机清单

4.1、点击“主机清单”菜单,进入主机清单管理页面:

_images/inventory.png

4.2、添加主机清单,点击新增按钮,在新增表单中填写如下内容:

名称:测试环境主机
主机清单内容:
             10.100.12.45
             10.100.10.244
_images/inventory_hosts.png

五、配置作业模板

5.1、点击“模板管理”菜单下的“作业模板”菜单,进入作业模板管理页面:

_images/template.png

5.2、添加作业模板,点击新增按钮,进入新增表单,填写如下内容:

模板名称:新增deploy用户配置免密
主机清单:选择步骤4.2添加的“测试环境主机清单”
自动化项目:选择步骤3.2添加的“创建系统用户并配置免密登录”
playbook:填写为步骤1.2的playbook文件名称“main.yml”
登录凭据:选择步骤2.2添加的“测试环境主机登录凭据”
扩展参数:设置playbook需要的参数user_name和group_name,yaml格式的,内容如下:
          user_name: deploy
          group_name: deploy

注:创建其他用户只要修改扩展参数中user_name和group_name参数即可
_images/template_user.png

5.3、添加成功后在“作业模板”页面点击执行按钮

_images/template_user_run.png

5.4、点击“确认”执行后会打开执行日志页面,可以看到作业的执行过程

_images/job_user_log.png

安装Tomcat

一、创建安装Tomcat playbook

1.1、创建tomcat-install目录,并在tomcat-install目录中创建roles目录

1.2、下载tomcat roles

1. 打开Ansible Galaxy(https://galaxy.ansible.com)并搜索tomcat
2. 在搜索结果中点击第一个roles(tomcat-ansible-role)
3. 到tomcat-ansible-role的github中下载roles
_images/tomcat-roles.png _images/tomcat-roles-main.png

1.3、将下载到的tomcat-ansible-role-master.zip解压到tomcat-install/roles目录中,并改名为tomcat

1.4、进入tomcat-install目录,创建main.yml文件,并添加如下内容

---
# Install Tomcat

- hosts: all

  roles:
  - tomcat

  tags:
  - tomcat

1.5、创建好后项目的目录结构如下图所示

_images/tomcat-tree.png

1.6、将tomcat-install上传到GitLab中,假设其GitLab仓库地址为:http://10.12.155.111:8090/test/tomcat-install.git

二、配置凭据

  • 如果已经配置过主机登录凭据和GitLab凭据则跳过此步骤

2.1、打开OpsGrat,点击左侧“资源管理”菜单下的“凭据管理”,进入凭据管理页面:

_images/pingju.png

2.2、添加主机登录凭据,点击新增按钮,“凭据类型”选择“ssh“,添加登录主机的ssh凭据:

ssh凭据可以设置通过用户名密码登录也可以配置通过ssh私钥登录
本文假设通过用户名密码登录,则填写内容如图所示
_images/pingju_ssh.png

2.3、添加GitLab凭据,点击新增按钮,“凭据类型”选择“用户名密码”

GitLab用户密码只支持http的用户密码
_images/pingju_gitlab.png

三、添加安装tomcat项目

3.1、点击左侧“资源管理”菜单下的“项目管理”菜单,进入项目管理页面:

_images/project.png

3.2、添加git项目,点击新增按钮,在新增表单中填写如下内容:

名称:安装Tomcat
项目类型:选择“git”
凭据:选择步骤2.3中添加的“测试环境GitLab账号”
项目地址:步骤1.6中上传的GitLab项目http地址
分支/Tag:master
_images/project-tomcat.png

四、配置主机清单

4.1、点击“主机清单”菜单,进入主机清单管理页面:

_images/inventory.png

4.2、添加主机清单,点击新增按钮,在新增表单中填写如下内容:

名称:测试环境Tomcat主机
主机清单内容:
             10.100.12.45
             10.100.10.244
_images/inventory_tomcat.png

五、配置作业模板

5.1、点击“模板管理”菜单下的“作业模板”菜单,进入作业模板管理页面:

_images/template.png

5.2、添加作业模板,点击新增按钮,进入新增表单,填写如下内容:

模板名称:安装Tomcat模板
主机清单:选择步骤4.2添加的“测试环境Tomcat主机”
自动化项目:选择步骤3.2添加的“安装Tomcat”
playbook:填写为步骤1.2的playbook文件名称“main.yml”
登录凭据:选择步骤2.2添加的“测试环境主机登录凭据”
扩展参数:tomcat_version: 8.5.42

          # Here are variables related to the Tomcat installation

          http_port: 8080
          https_port: 8443

          # This will configure a default manager-gui user:

          admin_username: admin
          admin_password: admin

          tomcat_downloadURL: http://mirror.bit.edu.cn/apache
_images/template-tomcat.png

5.3、添加成功后在“作业模板”页面点击执行按钮,可以进行tomcat安装

5.4、点击“确认”按钮,即可进行执行作业,作业执行完成后日志内容如下

_images/job-tomcat-log.png

安装python3

一、创建安装python3 playbook

1.1、创建python3-install目录,并在python3-install目录中创建多级子目录roles/python3/tasks

1.2、在python3-install/roles/python3/tasks目录中创建main.yml文件,并添加如下内容

---
# This role will install python3.6.

- name: Install Python3.6 Source.
  yum: name={{ item }} state=present
  with_items:
   - epel-release
   - https://centos7.iuscommunity.org/ius-release.rpm

- name: Install Python3.6 and pip3.6.
  yum: name={{ item }} state=present
  with_items:
   - python36u
   - python36u-devel
   - python36u-pip

- name: Create python3 link.
  file: src=/bin/python3.6 dest=/bin/python3 state=link

- name: Create pip3 link.
  file: src=/bin/pip3.6 dest=/bin/pip3 state=link

1.3、在tomcat-install目录中创建main.yml文件,并添加如下内容

---
# Install python3

- hosts: all

  roles:
  - python3

  tags:
  - python3

1.4、创建好后项目的目录结构如下图所示

_images/python3-tree.png

1.5、将python3-install上传到GitLab中,假设其GitLab仓库地址为:http://10.12.155.111:8090/test/python3-install.git

二、配置凭据

  • 如果已经配置过主机登录凭据和GitLab凭据则跳过此步骤

2.1、打开OpsGrat,点击左侧“资源管理”菜单下的“凭据管理”,进入凭据管理页面:

_images/pingju.png

2.2、添加主机登录凭据,点击新增按钮,“凭据类型”选择“ssh“,添加登录主机的ssh凭据:

ssh凭据可以设置通过用户名密码登录也可以配置通过ssh私钥登录
本文假设通过用户名密码登录,则填写内容如图所示
_images/pingju_ssh.png

2.3、添加GitLab凭据,点击新增按钮,“凭据类型”选择“用户名密码”

GitLab用户密码只支持http的用户密码
_images/pingju_gitlab.png

三、添加安装python3项目

3.1、点击左侧“资源管理”菜单下的“项目管理”菜单,进入项目管理页面:

_images/project.png

3.2、添加git项目,点击新增按钮,在新增表单中填写如下内容:

名称:安装python3
项目类型:选择“git”
凭据:选择步骤2.3中添加的“测试环境GitLab账号”
项目地址:步骤1.5中上传的GitLab项目http地址
分支/Tag:master
_images/project-python3.png

四、配置主机清单

4.1、点击“主机清单”菜单,进入主机清单管理页面:

_images/inventory.png

4.2、添加主机清单,点击新增按钮,在新增表单中填写如下内容:

名称:测试环境主机
主机清单内容:
             10.100.12.45
             10.100.10.244
_images/inventory_hosts.png

五、配置作业模板

5.1、点击“模板管理”菜单下的“作业模板”菜单,进入作业模板管理页面:

_images/template.png

5.2、添加作业模板,点击新增按钮,进入新增表单,填写如下内容:

模板名称:安装python3模板
主机清单:选择步骤4.2添加的“测试环境主机”
自动化项目:选择步骤3.2添加的“安装python3”
playbook:填写为步骤1.3的playbook文件名称“main.yml”
登录凭据:选择步骤2.2添加的“测试环境主机登录凭据”
_images/template-python3.png

5.3、添加成功后在“作业模板”页面点击执行按钮,可以进行python3安装

开发文档

API使用

一、API认证

认证方式:

OpsGrat系统API认证通过Token实现,使用方式为,在http的header里面增加Authorization,如下:

Authorization: Token 0a529467ef243ee25cf2f7dea238eab7b6c82085

0a529467ef243ee25cf2f7dea238eab7b6c82085 为用户的Token,替换成用户实际Token即可

获取API Token:

1、登录OpsGrat系统,点击左侧上方用户头像下用户名,如下图所示:
_images/token_username.jpg
2、然后点击弹出窗中的“API Token”按钮,如下图所示:
_images/token_list.jpg
3、最后在弹出的“我的Token”模态框中可以看到登录用户的API Token,如下图:
_images/token.jpg

使用例子:

以下例子为查询用户主机清单列表:

curl -X GET http://127.0.0.1/api/project/inventory/ -H 'Authorization: Token 0a529467ef243ee25cf2f7dea238eab7b6c82085'

二、http请求方式说明

  • GET: 查询数据
  • POST: 新增数据
  • PUT: 修改数据
  • PATCH: 修改数据(部分修改)
  • DELETE: 删除数据

三、http返回状态码说明

  • 200:查询或修改成功
  • 201:新增成功
  • 400:数据验证错误
  • 401:未认证
  • 403:没有权限
  • 405:http method不允许
  • 5xx:服务端错误

四、Content-Type

  • application/x-www-form-urlencoded:类似表单方式提交数据
  • application/json:使用json格式字符串提交数据

五、返回数据格式

数据格式说明:

  • 返回的数据格式为json字符串
  • 列表api中count表示总数,next为下一页请求地址,previous为上一页请求地址,results为查询到的数据列表
  • 列表api通过offset和limit参数进行分页,offset表示数据开始位置,limit表示查询数量
  • 列表api url地址后面跟上某条数据的id为获取该数据的信息

列表api范例如下:

{
 "count": 16,
 "next": "http://127.0.0.1/api/project/host/?limit=2&offset=2",
 "previous": null,
 "results": [
     {
         "id": 29,
         "hostname": "host1",
         "inventory_name": "我的主机清单",
         "description": "",
         "status": 1,
         "variables": "",
         "inventory": 11
     },
     {
         "id": 28,
         "hostname": "host2",
         "inventory_name": "我的主机清单",
         "description": "",
         "status": 1,
         "variables": "",
         "inventory": 11
     }
 ]
}

单条数据api范例如下:

{
 "id": 29,
 "hostname": "host1",
 "inventory_name": "我的主机清单",
 "description": "",
 "status": 1,
 "variables": "",
 "inventory": 11
}

六、数据新增成功说明

数据新增成功返回的http状态码为201,返回的数据为新增数据的内容,类似如下内容:

{
 "id": 29,
 "hostname": "host1",
 "inventory_name": "我的主机清单",
 "description": "",
 "status": 1,
 "variables": "",
 "inventory": 11
}

七、数据验证错误说明

数据验证错误返回的http状态码为400,返回的数据内容类似如下信息:

{
 "detail": "xxxx错误"
}

API文档

自动化管理

作业任务
说明
  • 查看已执行过的作业,可以完成再次执行,查看历史执行内容的操作
1、作业任务列表、新增作业任务、批量删除作业任务 API

请求方式: GET(查询) POST(新增) DELETE(批量删除)

请求地址: /api/job/job/

Content-Type:

新增数据的时候需要指定Content-Type,以下对Content-Type进行说明:

application/x-www-form-urlencoded —— 表示通过表单方式提交
application/json —— 表示传入数据为json格式字符串

查询参数:

参数 数据类型 是否必须 说明
offset int 数据起始位置
limit int 查询条数
template int 模板id
inventory int 主机清单
credential int 凭据id
state string 状态
kind string 作业类型
schedule string 计划任务

输入参数(新增):

参数 数据类型 是否必须 说明
cuser string 执行人
last_name string 执行人姓名
template int 模板id
template_name string 模板id中文名称
inventory int 主机清单
inventory_name string 主机清单中文名称
credential int 凭据id
credential_name string 凭据id中文名称
start_time long 开始时间(秒级时间戳)
finish_time long 完成时间(秒级时间戳)
state string 状态(new-新建;waiting-等待中;running-运行中;successful-成功;failed-失败)
job_type string 运行模式(run-Run;check-Check)
project int 项目id
project_name string 项目id中文名称
forks int 并发数
limit string limit
tags string tags
skip_tags string skip_tags
verbosity int Debug级别(0-Normal;1-Verbose;2-More Verbose;3-Debug;4-Connection Debug)
variables string 参数
inventory_str int 主机列表
become_enabled int 是否允许切换用户(0-否;1-是)
become_enabled_name int 是否允许切换用户中文名称(0-否;1-是)
diff_mode int 是否使用diff模块(0-否;1-是)
diff_mode_name int 是否使用diff模块中文名称(0-否;1-是)
force_handlers int 是否强制允许handlers任务(0-否;1-是)
force_handlers_name int 是否强制允许handlers任务中文名称(0-否;1-是)
start_at_task string 开始任务
module string 模块
arguments string 命令参数
node int 工作流节点
schedule int 计划任务
schedule_name string 计划任务中文名称
ctime long 创建时间

输出参数:

参数 数据类型 是否必须 说明
id int 作业任务 id
cuser string 执行人
last_name string 执行人姓名
template int 模板id
template_name string 模板id中文名称
inventory int 主机清单
inventory_name string 主机清单中文名称
credential int 凭据id
credential_name string 凭据id中文名称
start_time long 开始时间(秒级时间戳)
finish_time long 完成时间(秒级时间戳)
state string 状态(new-新建;waiting-等待中;running-运行中;successful-成功;failed-失败)
job_type string 运行模式(run-Run;check-Check)
project int 项目id
project_name string 项目id中文名称
forks int 并发数
limit string limit
tags string tags
skip_tags string skip_tags
verbosity int Debug级别(0-Normal;1-Verbose;2-More Verbose;3-Debug;4-Connection Debug)
variables string 参数
inventory_str int 主机列表
become_enabled int 是否允许切换用户(0-否;1-是)
become_enabled_name int 是否允许切换用户中文名称(0-否;1-是)
diff_mode int 是否使用diff模块(0-否;1-是)
diff_mode_name int 是否使用diff模块中文名称(0-否;1-是)
force_handlers int 是否强制允许handlers任务(0-否;1-是)
force_handlers_name int 是否强制允许handlers任务中文名称(0-否;1-是)
start_at_task string 开始任务
module string 模块
arguments string 命令参数
node int 工作流节点
schedule int 计划任务
schedule_name string 计划任务中文名称
ctime long 创建时间

批量删除参数:

参数 数据类型 是否必须 说明
pk string 与pk[]不能都为空 主键,多个主键用半角逗号隔开。通过http body传入
pk[] array 与pk不能都为空 主键数组。通过http body传入

排序:

参数 数据类型 是否必须 说明
ordering string
一般默认按id倒叙
  • ordering=id表示按id排序ordering=-id表示按id倒叙
  • 多个字段排序用半角逗号分隔

GET返回数据例子:

{
    "count": 9,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 1718,
            "template": null,
            "cuser": 18,
            "user": "fly yao",
            "job_type": "run",
            "inventory": 15,
            "credential": 30,
            "forks": 0,
            "limit": "",
            "tags": "",
            "skip_tags": "",
            "verbosity": 0,
            "variables": "",
            "start_time": 1561705739,
            "finish_time": 1561705740,
            "state": "failed",
            "inventory_str": "",
            "become_enabled": 0,
            "diff_mode": 0,
            "force_handlers": 0,
            "start_at_task": "",
            "inventory_name": "测试tomcat",
            "credential_name": "测试",
            "state_name": "失败",
            "playbook": "main.yml",
            "kind": "job",
            "arguments": "",
            "module": "",
            "verbosity_name": "Normal",
            "kind_name": "自动化作业",
            "job": null,
            "node": null,
            "force_handlers_name": "否",
            "diff_mode_name": "否",
            "become_enabled_name": "否",
            "schedule": null,
            "schedule_name": null,
            "ctime": 1561705739,
            "project_name": "测试tomcat",
            "project": 15
        },
        {
            "id": 1716,
            "template": 28,
            "cuser": 18,
            "user": "fly yao",
            "job_type": "run",
            "inventory": 15,
            "credential": 30,
            "forks": 0,
            "limit": "",
            "tags": "",
            "skip_tags": "",
            "verbosity": 0,
            "variables": "",
            "start_time": 1561689956,
            "finish_time": 1561689957,
            "state": "failed",
            "inventory_str": "",
            "become_enabled": 0,
            "diff_mode": 0,
            "force_handlers": 0,
            "start_at_task": "",
            "inventory_name": "测试tomcat",
            "credential_name": "测试",
            "template_name": "tomcat",
            "state_name": "失败",
            "playbook": "main.yml",
            "kind": "job",
            "arguments": "",
            "module": "",
            "verbosity_name": "Normal",
            "kind_name": "自动化作业",
            "job": null,
            "node": null,
            "force_handlers_name": "否",
            "diff_mode_name": "否",
            "become_enabled_name": "否",
            "schedule": null,
            "schedule_name": null,
            "ctime": 1561689956,
            "project_name": "测试tomcat",
            "project": 15
        },
        {
            "id": 1715,
            "template": 28,
            "cuser": 18,
            "user": "fly yao",
            "job_type": "run",
            "inventory": 15,
            "credential": 30,
            "forks": 0,
            "limit": "",
            "tags": "",
            "skip_tags": "",
            "verbosity": 0,
            "variables": "",
            "start_time": 1561688923,
            "finish_time": 1561688924,
            "state": "failed",
            "inventory_str": "",
            "become_enabled": 0,
            "diff_mode": 0,
            "force_handlers": 0,
            "start_at_task": "",
            "inventory_name": "测试tomcat",
            "credential_name": "测试",
            "template_name": "tomcat",
            "state_name": "失败",
            "playbook": "main.yml",
            "kind": "job",
            "arguments": "",
            "module": "",
            "verbosity_name": "Normal",
            "kind_name": "自动化作业",
            "job": null,
            "node": null,
            "force_handlers_name": "否",
            "diff_mode_name": "否",
            "become_enabled_name": "否",
            "schedule": null,
            "schedule_name": null,
            "ctime": 1561688923,
            "project_name": "测试tomcat",
            "project": 15
        }
    ]
}

新增作业任务返回数据例子:

{
    "id": 1715,
    "template": 28,
    "cuser": 18,
    "user": "fly yao",
    "job_type": "run",
    "inventory": 15,
    "credential": 30,
    "forks": 0,
    "limit": "",
    "tags": "",
    "skip_tags": "",
    "verbosity": 0,
    "variables": "",
    "start_time": 1561688923,
    "finish_time": 1561688924,
    "state": "failed",
    "inventory_str": "",
    "become_enabled": 0,
    "diff_mode": 0,
    "force_handlers": 0,
    "start_at_task": "",
    "inventory_name": "测试tomcat",
    "credential_name": "测试",
    "template_name": "tomcat",
    "state_name": "失败",
    "playbook": "main.yml",
    "kind": "job",
    "arguments": "",
    "module": "",
    "verbosity_name": "Normal",
    "kind_name": "自动化作业",
    "job": null,
    "node": null,
    "force_handlers_name": "否",
    "diff_mode_name": "否",
    "become_enabled_name": "否",
    "schedule": null,
    "schedule_name": null,
    "ctime": 1561688923,
    "project_name": "测试tomcat",
    "project": 15
}
2、获取单个作业任务,修改作业任务、删除作业任务 API

请求方式: GET(查询) PUT(修改) PATCH(修改) DELETE(删除)

请求地址: /api/job/job/1715/

请求地址中1715为作业任务的id

输入/输出参数: 见章节1中输入和输出参数说明,修改数据时输入参数均为非必须

返回数据例子:

{
    "id": 1715,
    "template": 28,
    "cuser": 18,
    "user": "fly yao",
    "job_type": "run",
    "inventory": 15,
    "credential": 30,
    "forks": 0,
    "limit": "",
    "tags": "",
    "skip_tags": "",
    "verbosity": 0,
    "variables": "",
    "start_time": 1561688923,
    "finish_time": 1561688924,
    "state": "failed",
    "inventory_str": "",
    "become_enabled": 0,
    "diff_mode": 0,
    "force_handlers": 0,
    "start_at_task": "",
    "inventory_name": "测试tomcat",
    "credential_name": "测试",
    "template_name": "tomcat",
    "state_name": "失败",
    "playbook": "main.yml",
    "kind": "job",
    "arguments": "",
    "module": "",
    "verbosity_name": "Normal",
    "kind_name": "自动化作业",
    "job": null,
    "node": null,
    "force_handlers_name": "否",
    "diff_mode_name": "否",
    "become_enabled_name": "否",
    "schedule": null,
    "schedule_name": null,
    "ctime": 1561688923,
    "project_name": "测试tomcat",
    "project": 15
}
计划任务
说明
  • 可以设定定时开启、固定间隔开启或计划时间自动开启关闭的任务
1、计划任务列表、新增计划任务、批量删除计划任务 API

请求方式: GET(查询) POST(新增) DELETE(批量删除)

请求地址: /api/job/schedule/

Content-Type:

新增数据的时候需要指定Content-Type,以下对Content-Type进行说明:

application/x-www-form-urlencoded —— 表示通过表单方式提交
application/json —— 表示传入数据为json格式字符串

查询参数:

参数 数据类型 是否必须 说明
offset int 数据起始位置
limit int 查询条数
template string 模版id
template_name string 模版名称
search string 模糊查询,查询字段为name

输入参数(新增):

参数 数据类型 是否必须 说明
name string 计划任务名称
template int 模版id
template_name string 模版名称(只读)
type string 执行方式(cron-计划任务;interval-固定间隔;date-特定时间执行一次)
type_name string 执行方式中文名(只读)
start_time long 开始时间(秒级时间戳)
minute string
hour string
day string
week string
month string
interval_type string 间隔类型(seconds-秒;minutes-分钟;hours-小时;days-天;weeks-周)
interval_type_name string 间隔类型中文名(只读)
interval int 间隔时间
end_time long 结束时间(秒级时间戳)
last_time long 最后执行时间(秒级时间戳,只读)
next_time long 下次执行时间(秒级时间戳,只读)
cuser string 用户名(只读)

输出参数:

参数 数据类型 是否必须 说明
id int 计划任务 id
name string 计划任务名称
template int 模版id
template_name string 模版名称(只读)
type string 执行方式(cron-计划任务;interval-固定间隔;date-特定时间执行一次)
type_name string 执行方式中文名(只读)
start_time long 开始时间(秒级时间戳)
minute string
hour string
day string
week string
month string
interval_type string 间隔类型(seconds-秒;minutes-分钟;hours-小时;days-天;weeks-周)
interval_type_name string 间隔类型中文名(只读)
interval int 间隔时间
end_time long 结束时间(秒级时间戳)
last_time long 最后执行时间(秒级时间戳,只读)
next_time long 下次执行时间(秒级时间戳,只读)
cuser string 用户名(只读)

批量删除参数:

参数 数据类型 是否必须 说明
pk string 与pk[]不能都为空 主键,多个主键用半角逗号隔开。通过http body传入
pk[] array 与pk不能都为空 主键数组。通过http body传入

排序:

参数 数据类型 是否必须 说明
ordering string
一般默认按id倒叙
  • ordering=id表示按id排序ordering=-id表示按id倒叙
  • 多个字段排序用半角逗号分隔

GET返回数据例子:

{
    "count": 1,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 13,
            "name": "测试计划任务",
            "template_name": "workflow",
            "type": "cron",
            "type_name": "计划任务",
            "start_time": 1561708948,
            "minute": "",
            "hour": "",
            "day": "3",
            "week": "",
            "month": "",
            "interval": 10,
            "interval_type_name": "秒",
            "interval_type": "seconds",
            "end_time": 1562410228,
            "template": 26,
            "cron": "* * 3 * *",
            "cuser": 48,
            "last_time": 1561708976,
            "next_time": 1562112000
        }
    ]
}

新增计划任务返回数据例子:

{
    "id": 13,
    "name": "测试计划任务",
    "template_name": "workflow",
    "type": "cron",
    "type_name": "计划任务",
    "start_time": 1561708948,
    "minute": "",
    "hour": "",
    "day": "3",
    "week": "",
    "month": "",
    "interval": 10,
    "interval_type_name": "秒",
    "interval_type": "seconds",
    "end_time": 1562410228,
    "template": 26,
    "cron": "* * 3 * *",
    "cuser": 48,
    "last_time": 1561708976,
    "next_time": 1562112000
}
2、获取单个计划任务,修改计划任务、删除计划任务 API

请求方式: GET(查询) PUT(修改) PATCH(修改) DELETE(删除)

请求地址: /api/job/schedule/13/

请求地址中13为计划任务的id

输入/输出参数: 见章节1中输入和输出参数说明,修改数据时输入参数均为非必须

返回数据例子:

{
    "id": 13,
    "name": "测试计划任务",
    "template_name": "workflow",
    "type": "cron",
    "type_name": "计划任务",
    "start_time": 1561708948,
    "minute": "",
    "hour": "",
    "day": "3",
    "week": "",
    "month": "",
    "interval": 10,
    "interval_type_name": "秒",
    "interval_type": "seconds",
    "end_time": 1562410228,
    "template": 26,
    "cron": "* * 3 * *",
    "cuser": 48,
    "last_time": 1561708976,
    "next_time": 1562112000
}
作业日志
说明
  • 管理作业管理中的作业信息,用户可以查看曾经执行过计划的执行内容
1、作业日志列表、新增作业日志、批量删除作业日志 API

请求方式: GET(查询) POST(新增) DELETE(批量删除)

请求地址: /api/job/log/

Content-Type:

新增数据的时候需要指定Content-Type,以下对Content-Type进行说明:

application/x-www-form-urlencoded —— 表示通过表单方式提交
application/json —— 表示传入数据为json格式字符串

查询参数:

参数 数据类型 是否必须 说明
offset int 数据起始位置
limit int 查询条数
job int job id

输入参数(新增):

参数 数据类型 是否必须 说明
job int job id
ctime long 创建时间
log string 日志内容

输出参数:

参数 数据类型 是否必须 说明
id int 作业日志 id
job int job id
ctime long 创建时间
log string 日志内容

批量删除参数:

参数 数据类型 是否必须 说明
pk string 与pk[]不能都为空 主键,多个主键用半角逗号隔开。通过http body传入
pk[] array 与pk不能都为空 主键数组。通过http body传入

排序:

参数 数据类型 是否必须 说明
ordering string
一般默认按id倒叙
  • ordering=id表示按id排序ordering=-id表示按id倒叙
  • 多个字段排序用半角逗号分隔

GET返回数据例子:

{
    "count": 9,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 1688,
            "ctime": 1561705740,
            "log": "\n\n/usr/bin/ansible-playbook -i /tmp/auto_job_1718/tmpos_mosmk -u root --ask-pass main.yml\n\nSSH password: \r\nERROR! Syntax Error while loading YAML.\r\n  mapping values are not allowed in this context\r\n\r\nThe error appears to have been in '/tmp/auto_job_1718/project/roles/tomcat/tasks/main.yml': line 8, column 10, but may\r\nbe elsewhere in the file depending on the exact syntax problem.\r\n\r\nThe offending line appears to be:\r\n\r\n- name:Extract archive jdk\r\n  command: /bin/tar xf /tmp/jdk-8u211-linux-x64.gz -C /application\r\n         ^ here\r\n",
            "job": 1718
        },
        {
            "id": 1687,
            "ctime": 1561698849,
            "log": "\n\n/usr/bin/ansible-playbook -i /tmp/auto_job_1717/tmp7xwu64mp -u root --ask-pass main.yml\n\nSSH password: \r\nERROR! Syntax Error while loading YAML.\r\n  mapping values are not allowed in this context\r\n\r\nThe error appears to have been in '/tmp/auto_job_1717/project/roles/tomcat/tasks/main.yml': line 8, column 10, but may\r\nbe elsewhere in the file depending on the exact syntax problem.\r\n\r\nThe offending line appears to be:\r\n\r\n- name:Extract archive jdk\r\n  command: /bin/tar xf /tmp/jdk-8u211-linux-x64.gz -C /application\r\n         ^ here\r\n",
            "job": 1717
        },
        {
            "id": 1686,
            "ctime": 1561689957,
            "log": "\n\n/usr/bin/ansible-playbook -i /tmp/auto_job_1716/tmp4fxky1_f -u root --ask-pass main.yml\n\nSSH password: \r\nERROR! Syntax Error while loading YAML.\r\n  mapping values are not allowed in this context\r\n\r\nThe error appears to have been in '/tmp/auto_job_1716/project/roles/tomcat/tasks/main.yml': line 8, column 10, but may\r\nbe elsewhere in the file depending on the exact syntax problem.\r\n\r\nThe offending line appears to be:\r\n\r\n- name:Extract archive jdk\r\n  command: /bin/tar xf /tmp/jdk-8u211-linux-x64.gz -C /application\r\n         ^ here\r\n",
            "job": 1716
        },
        {
            "id": 1685,
            "ctime": 1561688924,
            "log": "\n\n/usr/bin/ansible-playbook -i /tmp/auto_job_1715/tmp76x4cjpx -u root --ask-pass main.yml\n\nSSH password: \r\nERROR! Syntax Error while loading YAML.\r\n  mapping values are not allowed in this context\r\n\r\nThe error appears to have been in '/tmp/auto_job_1715/project/roles/tomcat/tasks/main.yml': line 8, column 10, but may\r\nbe elsewhere in the file depending on the exact syntax problem.\r\n\r\nThe offending line appears to be:\r\n\r\n- name:Extract archive jdk\r\n  command: /bin/tar xf /tmp/jdk-8u211-linux-x64.gz -C /application\r\n         ^ here\r\n",
            "job": 1715
        }
    ]
}

新增作业日志返回数据例子:

{
    "id": 1685,
    "ctime": 1561688924,
    "log": "\n\n/usr/bin/ansible-playbook -i /tmp/auto_job_1715/tmp76x4cjpx -u root --ask-pass main.yml\n\nSSH password: \r\nERROR! Syntax Error while loading YAML.\r\n  mapping values are not allowed in this context\r\n\r\nThe error appears to have been in '/tmp/auto_job_1715/project/roles/tomcat/tasks/main.yml': line 8, column 10, but may\r\nbe elsewhere in the file depending on the exact syntax problem.\r\n\r\nThe offending line appears to be:\r\n\r\n- name:Extract archive jdk\r\n  command: /bin/tar xf /tmp/jdk-8u211-linux-x64.gz -C /application\r\n         ^ here\r\n",
    "job": 1715
}
2、获取单个作业日志,修改作业日志、删除作业日志 API

请求方式: GET(查询) PUT(修改) PATCH(修改) DELETE(删除)

请求地址: /api/job/log/1685/

请求地址中1685为作业日志的id

输入/输出参数: 见章节1中输入和输出参数说明,修改数据时输入参数均为非必须

返回数据例子:

{
    "id": 1685,
    "ctime": 1561688924,
    "log": "\n\n/usr/bin/ansible-playbook -i /tmp/auto_job_1715/tmp76x4cjpx -u root --ask-pass main.yml\n\nSSH password: \r\nERROR! Syntax Error while loading YAML.\r\n  mapping values are not allowed in this context\r\n\r\nThe error appears to have been in '/tmp/auto_job_1715/project/roles/tomcat/tasks/main.yml': line 8, column 10, but may\r\nbe elsewhere in the file depending on the exact syntax problem.\r\n\r\nThe offending line appears to be:\r\n\r\n- name:Extract archive jdk\r\n  command: /bin/tar xf /tmp/jdk-8u211-linux-x64.gz -C /application\r\n         ^ here\r\n",
    "job": 1715
}
计划任务用户管理
说明
  • 管理任务中的用户对某个计划的只读、读写、管理的权限
1、计划任务用户管理列表、新增计划任务用户管理、批量删除计划任务用户管理 API

请求方式: GET(查询) POST(新增) DELETE(批量删除)

请求地址: /api/job/schedule/permission/users/

Content-Type:

新增数据的时候需要指定Content-Type,以下对Content-Type进行说明:

application/x-www-form-urlencoded —— 表示通过表单方式提交
application/json —— 表示传入数据为json格式字符串

查询参数:

参数 数据类型 是否必须 说明
offset int 数据起始位置
limit int 查询条数
username string 用户名
search string 模糊查询,查询字段为username和data

输入参数(新增):

参数 数据类型 是否必须 说明
username string 用户名
last_name string 姓名
data int 计划任务数据
data_name string 计划任务数据中文名称
permission string 权限(read-只读;write-读写;admin-管理)

输出参数:

参数 数据类型 是否必须 说明
id int 计划任务用户管理id
username string 用户名
last_name string 姓名
data int 计划任务数据
data_name string 计划任务数据中文名称
permission string 权限(read-只读;write-读写;admin-管理)

批量删除参数:

参数 数据类型 是否必须 说明
pk string 与pk[]不能都为空 主键,多个主键用半角逗号隔开。通过http body传入
pk[] array 与pk不能都为空 主键数组。通过http body传入

排序:

参数 数据类型 是否必须 说明
ordering string
一般默认按id倒叙
  • ordering=id表示按id排序ordering=-id表示按id倒叙
  • 多个字段排序用半角逗号分隔

GET返回数据例子:

{
    "count": 2,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 9,
            "username": 1,
            "data": 8,
            "permission": "admin",
            "permission_name": "管理",
            "last_name": "超级管理员",
            "data_name": "测试"
        },
        {
            "id": 8,
            "username": 1,
            "data": 7,
            "permission": "admin",
            "permission_name": "管理",
            "last_name": "超级管理员",
            "data_name": "测试作业"
        }
    ]
}

新增计划任务用户管理返回数据例子:

{
    "id": 8,
    "username": 1,
    "data": 7,
    "permission": "admin",
    "permission_name": "管理",
    "last_name": "超级管理员",
    "data_name": "测试作业"
}
2、获取单个计划任务用户管理,修改计划任务用户管理、删除计划任务用户管理 API

请求方式: GET(查询) PUT(修改) PATCH(修改) DELETE(删除)

请求地址: /api/job/schedule/permission/users/8/

请求地址中8为计划任务用户管理的id

输入/输出参数: 见章节1中输入和输出参数说明,修改数据时输入参数均为非必须

返回数据例子:

{
    "id": 8,
    "username": 1,
    "data": 7,
    "permission": "admin",
    "permission_name": "管理",
    "last_name": "超级管理员",
    "data_name": "测试作业"
}
计划任务团队管理
说明
  • 管理任务中的团队对某个计划的只读、读写、管理的权限
1、计划管理团队管理列表、新增计划管理团队管理、批量删除计划管理团队管理 API

请求方式: GET(查询) POST(新增) DELETE(批量删除)

请求地址: /api/job/schedule/permission/team/

Content-Type:

新增数据的时候需要指定Content-Type,以下对Content-Type进行说明:

application/x-www-form-urlencoded —— 表示通过表单方式提交
application/json —— 表示传入数据为json格式字符串

查询参数:

参数 数据类型 是否必须 说明
offset int 数据起始位置
limit int 查询条数
team string 团队名称
data string 计划任务
search string 模糊查询,查询字段为team和data

输入参数(新增):

参数 数据类型 是否必须 说明
team string 团队名称
team_name string 团队中文名称
data int 计划任务数据
data_name string 计划任务数据中文名称
permission string 权限(read-只读;write-读写;admin-管理)
permission_name string 权限中文名称(read-只读;write-读写;admin-管理)

输出参数:

参数 数据类型 是否必须 说明
id int 团队id
team string 团队名称
team_name string 团队中文名称
data int 计划任务数据
data_name string 计划任务数据中文名称
permission string 权限(read-只读;write-读写;admin-管理)
permission_name string 权限中文名称(read-只读;write-读写;admin-管理)

批量删除参数:

参数 数据类型 是否必须 说明
pk string 与pk[]不能都为空 主键,多个主键用半角逗号隔开。通过http body传入
pk[] array 与pk不能都为空 主键数组。通过http body传入

排序:

参数 数据类型 是否必须 说明
ordering string
一般默认按id倒叙
  • ordering=id表示按id排序ordering=-id表示按id倒叙
  • 多个字段排序用半角逗号分隔

GET返回数据例子:

{
    "count": 2,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 10,
            "team": 7,
            "data": 8,
            "permission": "admin",
            "permission_name": "管理",
            "data_name": "测试1",
            "team_name": "开发1组"
        },
        {
            "id": 9,
            "team": 9,
            "data": 8,
            "permission": "admin",
            "permission_name": "管理",
            "data_name": "测试1",
            "team_name": "前端"
        }
    ]
}

新增计划管理团队管理返回数据例子:

{
    "id": 10,
    "team": 7,
    "data": 8,
    "permission": "admin",
    "permission_name": "管理",
    "data_name": "测试1",
    "team_name": "开发1组"
}
2、获取单个计划管理团队管理,修改计划管理团队管理、删除计划管理团队管理 API

请求方式: GET(查询) PUT(修改) PATCH(修改) DELETE(删除)

请求地址: /api/job/schedule/permission/team/10/

请求地址中10为计划管理团队管理的id

输入/输出参数: 见章节1中输入和输出参数说明,修改数据时输入参数均为非必须

返回数据例子:

{
    "id": 10,
    "team": 7,
    "data": 8,
    "permission": "admin",
    "permission_name": "管理",
    "data_name": "测试1",
    "team_name": "开发1组"
}

资源管理

凭据管理列表
说明
  • 管理凭据
1、凭据列表、新增凭据、批量删除凭据 API

请求方式: GET(查询) POST(新增) DELETE(批量删除)

请求地址: /api/project/credential/

Content-Type:

新增数据的时候需要指定Content-Type,以下对Content-Type进行说明:

application/x-www-form-urlencoded —— 表示通过表单方式提交
application/json —— 表示传入数据为json格式字符串

查询参数:

参数 数据类型 是否必须 说明
offset int 数据起始位置
limit int 查询条数
name string 凭证名称
search string 模糊查询,查询字段为name和user_name

输入参数(新增):

参数 数据类型 是否必须 说明
id int credential id
name string 凭证名称
description string 描述
type string 凭证类型(必需)
type_name string 凭证类型中文名称(只读)
user_name string 用户名
password string 密码
private_key string ssh私钥
passphrase string ssh私钥密码
become_method string 切换方式
become_user string 切换用户
become_pass string 切换密码
vault_password string Vault密码
vault_id string Vault Id
key_id string Key Id
key_secret string Key Secret

输出参数:

参数 数据类型 是否必须 说明
name string 凭证名称
description string 描述
type string 凭证类型(必需)
type_name string 凭证类型中文名称(只读)
user_name string 用户名
password string 密码
private_key string ssh私钥
passphrase string ssh私钥密码
become_method string 切换方式
become_user string 切换用户
become_pass string 切换密码
vault_password string Vault密码
vault_id string Vault Id
key_id string Key Id
key_secret string Key Secret

批量删除参数:

参数 数据类型 是否必须 说明
pk string 与pk[]不能都为空 主键,多个主键用半角逗号隔开。通过http body传入
pk[] array 与pk不能都为空 主键数组。通过http body传入

排序:

参数 数据类型 是否必须 说明
ordering string
一般默认按id倒叙
  • ordering=id表示按id排序ordering=-id表示按id倒叙
  • 多个字段排序用半角逗号分隔

GET返回数据例子:

{
    "count": 2,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 2,
            "name": "111",
            "description": "1111",
            "type": "ssh",
            "type_name": "ssh",
            "user_name": "测试",
            "password": "1111",
            "private_key": "1111",
            "passphrase": "1111",
            "become_method": "sudo",
            "become_user": "111",
            "become_pass": "111",
            "vault_password": "",
            "vault_id": "",
            "key_id": "",
            "key_secret": "",
            "cuser": 1
        },
        {
            "id": 1,
            "name": "测试",
            "description": "1111",
            "type": "user_pwd",
            "type_name": "用户名密码",
            "user_name": "",
            "password": "",
            "private_key": "",
            "passphrase": "",
            "become_method": "sudo",
            "become_user": "",
            "become_pass": "",
            "vault_password": "",
            "vault_id": "",
            "key_id": "",
            "key_secret": "",
            "cuser": 1
        }
    ]
}

新增凭据返回数据例子:

{
    "id": 1,
    "name": "测试",
    "description": "1111",
    "type": "user_pwd",
    "type_name": "用户名密码",
    "user_name": "",
    "password": "",
    "private_key": "",
    "passphrase": "",
    "become_method": "sudo",
    "become_user": "",
    "become_pass": "",
    "vault_password": "",
    "vault_id": "",
    "key_id": "",
    "key_secret": "",
    "cuser": 1
}
2、获取单个凭据,修改凭据、删除凭据 API

请求方式: GET(查询) PUT(修改) PATCH(修改) DELETE(删除)

请求地址: /api/project/credential/1/

请求地址中1为凭据的id

输入/输出参数: 见章节1中输入和输出参数说明,修改数据时输入参数均为非必须

返回数据例子:

{
    "id": 1,
    "name": "测试",
    "description": "1111",
    "type": "user_pwd",
    "type_name": "用户名密码",
    "user_name": "",
    "password": "",
    "private_key": "",
    "passphrase": "",
    "become_method": "sudo",
    "become_user": "",
    "become_pass": "",
    "vault_password": "",
    "vault_id": "",
    "key_id": "",
    "key_secret": "",
    "cuser": 1
}
项目列表
说明
  • 管理项目
1、项目列表、新增项目、批量删除项目 API

请求方式: GET(查询) POST(新增) DELETE(批量删除)

请求地址: /api/project/project/

Content-Type:

新增数据的时候需要指定Content-Type,以下对Content-Type进行说明:

application/x-www-form-urlencoded —— 表示通过表单方式提交
application/json —— 表示传入数据为json格式字符串

查询参数:

参数 数据类型 是否必须 说明
offset int 数据起始位置
limit int 查询条数
name string 项目名称
search string 模糊查询,查询字段为name和description

输入参数(新增):

参数 数据类型 是否必须 说明
name string 名称
credential int 凭据
description string 描述
project_type string 项目类型
repository_url string 项目地址
branch_specifier string 分支/Tag
playbook string playbook
revision string Revision
project_group string 项目组
project_name string 项目

输出参数:

参数 数据类型 是否必须 说明
id int project id
name string 名称
credential int 凭据
description string 描述
project_type string 项目类型
repository_url string 项目地址
branch_specifier string 分支/Tag
playbook string playbook
revision string Revision
project_group string 项目组
project_name string 项目

批量删除参数:

参数 数据类型 是否必须 说明
pk string 与pk[]不能都为空 主键,多个主键用半角逗号隔开。通过http body传入
pk[] array 与pk不能都为空 主键数组。通过http body传入

排序:

参数 数据类型 是否必须 说明
ordering string
一般默认按id倒叙
  • ordering=id表示按id排序ordering=-id表示按id倒叙
  • 多个字段排序用半角逗号分隔

GET返回数据例子:

{
    "count": 13,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 17,
            "name": "tomcat playbook",
            "credential_name": "Git Lab凭据",
            "description": "",
            "project_type": "git",
            "repository_url": "http://101.132.155.111:8090/test/tomcat.git",
            "branch_specifier": "master",
            "playbook": "",
            "credential": 20,
            "revision": "",
            "vault_credential": null,
            "cuser": 48
        },
        {
            "id": 16,
            "name": "创建指定用户",
            "credential_name": "Git Lab凭据",
            "description": "",
            "project_type": "git",
            "repository_url": "http://101.132.155.111:8090/test/user.git",
            "branch_specifier": "master",
            "playbook": "",
            "credential": 20,
            "revision": "",
            "vault_credential": null,
            "cuser": 48
            }
        ]
    }

新增项目返回数据例子:

{
    "id": 17,
    "name": "tomcat playbook",
    "credential_name": "Git Lab凭据",
    "description": "",
    "project_type": "git",
    "repository_url": "http://101.132.155.111:8090/test/tomcat.git",
    "branch_specifier": "master",
    "playbook": "",
    "credential": 20,
    "revision": "",
    "vault_credential": null,
    "cuser": 48
},
2、获取单个项目,修改项目、删除项目 API

请求方式: GET(查询) PUT(修改) PATCH(修改) DELETE(删除)

请求地址: /api/project/project/1/

请求地址中1为项目的id

输入/输出参数: 见章节1中输入和输出参数说明,修改数据时输入参数均为非必须

返回数据例子:

{
    "id": 1,
    "name": "自动化测试",
    "description": "",
    "project_type": "git",
    "repository_url": "http://101.132.155.111:8090/test/wordpress-nginx.git",
    "branch_specifier": "master",
    "playbook": "",
    "credential": null,
    "revision": "",
    "vault_credential": null,
    "cuser": 1
}
团队项目权限列表
说明
  • 管理团队项目权限
1、团队项目权限列表、新增团队项目权限、批量删除团队项目权限 API

请求方式: GET(查询) POST(新增) DELETE(批量删除)

请求地址: /api/project/project/empowered/teams/

Content-Type:

新增数据的时候需要指定Content-Type,以下对Content-Type进行说明:

application/x-www-form-urlencoded —— 表示通过表单方式提交
application/json —— 表示传入数据为json格式字符串

查询参数:

参数 数据类型 是否必须 说明
offset int 数据起始位置
limit int 查询条数
name string 凭证名称
search string 模糊查询,查询字段为team

输入参数(新增):

参数 数据类型 是否必须 说明
team int 团队名称
permission string 权限
permission_name string 权限中文名(只读)

输出参数:

参数 数据类型 是否必须 说明
id int credential_team_permissions id
team int 团队名称
data int inventory id
permission string 权限
permission_name string 权限中文名(只读)

批量删除参数:

参数 数据类型 是否必须 说明
pk string 与pk[]不能都为空 主键,多个主键用半角逗号隔开。通过http body传入
pk[] array 与pk不能都为空 主键数组。通过http body传入

排序:

参数 数据类型 是否必须 说明
ordering string
一般默认按id倒叙
  • ordering=id表示按id排序ordering=-id表示按id倒叙
  • 多个字段排序用半角逗号分隔

GET返回数据例子:

{
    "count": 1,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 1,
            "team": 1,
            "data_name": "创建用户并配置免密登录",
            "data": 4,
            "permission": "write",
            "team_name": "测试",
            "permission_name": "读写&执行"
        }
    ]
}

新增团队项目权限返回数据例子:

{
    "id": 1,
    "team": 1,
    "data_name": "创建用户并配置免密登录",
    "data": 4,
    "permission": "write",
    "team_name": "测试",
    "permission_name": "读写&执行"
}
2、获取单个团队项目权限,修改团队项目权限、删除团队项目权限 API

请求方式: GET(查询) PUT(修改) PATCH(修改) DELETE(删除)

请求地址: /api/project/project/empowered/teams/1/

请求地址中1为团队项目权限的id

输入/输出参数: 见章节1中输入和输出参数说明,修改数据时输入参数均为非必须

返回数据例子:

{
    "id": 1,
    "team": 1,
    "data_name": "创建用户并配置免密登录",
    "data": 4,
    "permission": "write",
    "team_name": "测试",
    "permission_name": "读写&执行"
}
用户项目权限列表
说明
  • 管理用户项目权限
1、用户项目权限列表、新增用户项目权限、批量删除用户项目权限 API

请求方式: GET(查询) POST(新增) DELETE(批量删除)

请求地址: /api/project/project/authorized/users/

Content-Type:

新增数据的时候需要指定Content-Type,以下对Content-Type进行说明:

application/x-www-form-urlencoded —— 表示通过表单方式提交
application/json —— 表示传入数据为json格式字符串

查询参数:

参数 数据类型 是否必须 说明
offset int 数据起始位置
limit int 查询条数
name string 凭证名称
search string 模糊查询,查询字段为username

输入参数(新增):

参数 数据类型 是否必须 说明
username | string 用户名称
last_name string 用户名称中文名(只读)
permission string 权限
permission_name string 权限中文名(只读)

输出参数:

参数 数据类型 是否必须 说明
id int credential_user_permissions id
username | string 用户名称
last_name string 用户名称中文名(只读)
data int inventory id
permission string 权限
permission_name string 权限中文名(只读)

批量删除参数:

参数 数据类型 是否必须 说明
pk string 与pk[]不能都为空 主键,多个主键用半角逗号隔开。通过http body传入
pk[] array 与pk不能都为空 主键数组。通过http body传入

排序:

参数 数据类型 是否必须 说明
ordering string
一般默认按id倒叙
  • ordering=id表示按id排序ordering=-id表示按id倒叙
  • 多个字段排序用半角逗号分隔

GET返回数据例子:

{
    "count": 2,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 5,
            "username": "fxadmin",
            "data_name": "创建用户并配置免密登录",
            "data": 4,
            "permission": "admin",
            "permission_name": "管理",
            "last_name": "普通管理员"
        },
        {
            "id": 4,
            "username": "tst",
            "data_name": "创建用户并配置免密登录",
            "data": 4,
            "permission": "admin",
            "permission_name": "管理",
            "last_name": "Alex"
        }
    ]
}

新增用户项目权限返回数据例子:

{
    "id": 5,
    "username": "fxadmin",
    "data_name": "创建用户并配置免密登录",
    "data": 4,
    "permission": "admin",
    "permission_name": "管理",
    "last_name": "普通管理员"
},
2、获取单个用户项目权限,修改用户项目权限、删除用户项目权限 API

请求方式: GET(查询) PUT(修改) PATCH(修改) DELETE(删除)

请求地址: /api/project/project/authorized/users/5/

请求地址中5为用户项目权限的id

输入/输出参数: 见章节1中输入和输出参数说明,修改数据时输入参数均为非必须

返回数据例子:

{
    "id": 5,
    "username": "fxadmin",
    "data_name": "创建用户并配置免密登录",
    "data": 4,
    "permission": "admin",
    "permission_name": "管理",
    "last_name": "普通管理员"
},
主机清单列表
说明
  • 管理主机清单
1、主机清单列表、新增主机清单、批量删除主机清单 API

请求方式: GET(查询) POST(新增) DELETE(批量删除)

请求地址: /api/project/inventory/

Content-Type:

新增数据的时候需要指定Content-Type,以下对Content-Type进行说明:

application/x-www-form-urlencoded —— 表示通过表单方式提交
application/json —— 表示传入数据为json格式字符串

查询参数:

参数 数据类型 是否必须 说明
offset int 数据起始位置
limit int 查询条数
name string 项目名称
search string 模糊查询,查询字段为name和description

输入参数(新增):

参数 数据类型 是否必须 说明
name string 名称
description string 描述
variables string 参数
inventory string 主机清单内容
credential int 登录凭据ID

输出参数:

参数 数据类型 是否必须 说明
id int inventory id
name string 名称
description string 描述
variables string 参数
inventory string 主机清单内容
credential int 登录凭据ID

批量删除参数:

参数 数据类型 是否必须 说明
pk string 与pk[]不能都为空 主键,多个主键用半角逗号隔开。通过http body传入
pk[] array 与pk不能都为空 主键数组。通过http body传入

排序:

参数 数据类型 是否必须 说明
ordering string
一般默认按id倒叙
  • ordering=id表示按id排序ordering=-id表示按id倒叙
  • 多个字段排序用半角逗号分隔

GET返回数据例子:

{
    "count": 9,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 18,
            "cuser": 48,
            "name": "阿里云主机",
            "description": "",
            "variables": "",
            "credential": 35

        },
        {
            "id": 17,
            "cuser": 48,
            "name": "1234",
            "description": "",
            "variables": "",
            "credential": 35
        }
    ]
}

新增主机清单返回数据例子:

{
    "id": 18,
    "cuser": 48,
    "name": "阿里云主机",
    "description": "",
    "variables": "",
    "credential": 35
},
2、获取单个主机清单,修改主机清单、删除主机清单 API

请求方式: GET(查询) PUT(修改) PATCH(修改) DELETE(删除)

请求地址: /api/project/inventory/18/

请求地址中18为主机清单的id

输入/输出参数: 见章节1中输入和输出参数说明,修改数据时输入参数均为非必须

返回数据例子:

{
    "id": 18,
    "cuser": 48,
    "name": "阿里云主机",
    "description": "",
    "variables": "",
    "credential": 35
},
子分组列表
说明
  • 管理子分组列表
1、子分组列表、新增子分组、批量删除子分组 API

请求方式: GET(查询) POST(新增) DELETE(批量删除)

请求地址: /api/project/group/children/

Content-Type:

新增数据的时候需要指定Content-Type,以下对Content-Type进行说明:

application/x-www-form-urlencoded —— 表示通过表单方式提交
application/json —— 表示传入数据为json格式字符串

查询参数:

参数 数据类型 是否必须 说明
offset int 数据起始位置
limit int 查询条数
name string 主机清单分组名称

输入参数(新增):

参数 数据类型 是否必须 说明
group_id int 子分组
child_id int 子分组

输出参数:

参数 数据类型 是否必须 说明
id int group_children id
group_id int 子分组
child_id int 子分组

批量删除参数:

参数 数据类型 是否必须 说明
pk string 与pk[]不能都为空 主键,多个主键用半角逗号隔开。通过http body传入
pk[] array 与pk不能都为空 主键数组。通过http body传入

排序:

参数 数据类型 是否必须 说明
ordering string
一般默认按id倒叙
  • ordering=id表示按id排序ordering=-id表示按id倒叙
  • 多个字段排序用半角逗号分隔

GET返回数据例子:

{
    "count": 1,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 5,
            "group": 1,
            "group_name": "测试group",
            "child_name": "测试group",
            "child": 1
        }
    ]
}

新增子分组返回数据例子:

{
    "id": 5,
    "group": 1,
    "group_name": "测试group",
    "child_name": "测试group",
    "child": 1
}
2、获取单个子分组,修改主机子分组、删除主机子分组 API

请求方式: GET(查询) PUT(修改) PATCH(修改) DELETE(删除)

请求地址: /api/project/group/children/5/

请求地址中5为子分组的id

输入/输出参数: 见章节1中输入和输出参数说明,修改数据时输入参数均为非必须

返回数据例子:

{
    "id": 5,
    "group": 1,
    "group_name": "测试group",
    "child_name": "测试group",
    "child": 1
}
团队凭据权限列表
说明
  • 管理团队凭据权限
1、团队凭据权限列表、新增团队凭据权限、批量删除团队凭据权限 API

请求方式: GET(查询) POST(新增) DELETE(批量删除)

请求地址: /api/project/credential/empowered/teams/

Content-Type:

新增数据的时候需要指定Content-Type,以下对Content-Type进行说明:

application/x-www-form-urlencoded —— 表示通过表单方式提交
application/json —— 表示传入数据为json格式字符串

查询参数:

参数 数据类型 是否必须 说明
offset int 数据起始位置
limit int 查询条数
name string 凭证名称
search string 模糊查询,查询字段为team

输入参数(新增):

参数 数据类型 是否必须 说明
team int 团队名称
permission string 权限
permission_name string 权限中文名(只读)

输出参数:

参数 数据类型 是否必须 说明
id int credential_team_permissions id
team int 团队名称
data int inventory id
permission string 权限
permission_name string 权限中文名(只读)

批量删除参数:

参数 数据类型 是否必须 说明
pk string 与pk[]不能都为空 主键,多个主键用半角逗号隔开。通过http body传入
pk[] array 与pk不能都为空 主键数组。通过http body传入

排序:

参数 数据类型 是否必须 说明
ordering string
一般默认按id倒叙
  • ordering=id表示按id排序ordering=-id表示按id倒叙
  • 多个字段排序用半角逗号分隔

GET返回数据例子:

{
    "count": 2,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 7,
            "team": 11,
            "data_name": "test2",
            "data": 31,
            "permission": "write",
            "team_name": "开发2组",
            "permission_name": "读写"
        },
        {
            "id": 5,
            "team": 2,
            "data_name": "泛汐服务器",
            "data": 8,
            "permission": "",
            "team_name": "测试团队",
            "permission_name": null
        }
    ]
}

新增团队凭据权限返回数据例子:

{
    "id": 7,
    "team": 11,
    "data_name": "test2",
    "data": 31,
    "permission": "write",
    "team_name": "开发2组",
    "permission_name": "读写"
},
2、获取单个团队凭据权限,修改团队凭据权限、删除团队凭据权限 API

请求方式: GET(查询) PUT(修改) PATCH(修改) DELETE(删除)

请求地址: /api/project/credential/empowered/teams/7/

请求地址中7为团队凭据权限的id

输入/输出参数: 见章节1中输入和输出参数说明,修改数据时输入参数均为非必须

返回数据例子:

{
    "id": 7,
    "team": 11,
    "data_name": "test2",
    "data": 31,
    "permission": "write",
    "team_name": "开发2组",
    "permission_name": "读写"
},
用户凭据权限列表
说明
  • 管理用户凭据权限
1、用户凭据权限列表、新增用户凭据权限、批量删除用户凭据权限 API

请求方式: GET(查询) POST(新增) DELETE(批量删除)

请求地址: /api/project/credential/authorized/users/

Content-Type:

新增数据的时候需要指定Content-Type,以下对Content-Type进行说明:

application/x-www-form-urlencoded —— 表示通过表单方式提交
application/json —— 表示传入数据为json格式字符串

查询参数:

参数 数据类型 是否必须 说明
offset int 数据起始位置
limit int 查询条数
name string 凭证名称
search string 模糊查询,查询字段为username

输入参数(新增):

参数 数据类型 是否必须 说明
username string 用户名
last_name string 用户姓名(只读)
permission string 权限
permission_name string 权限中文名(只读)

输出参数:

参数 数据类型 是否必须 说明
id int credential_user_permissions id
username string 用户名
last_name string 用户姓名(只读)
data int inventory id
permission string 权限
permission_name string 权限中文名(只读)

批量删除参数:

参数 数据类型 是否必须 说明
pk string 与pk[]不能都为空 主键,多个主键用半角逗号隔开。通过http body传入
pk[] array 与pk不能都为空 主键数组。通过http body传入

排序:

参数 数据类型 是否必须 说明
ordering string
一般默认按id倒叙
  • ordering=id表示按id排序ordering=-id表示按id倒叙
  • 多个字段排序用半角逗号分隔

GET返回数据例子:

{
    "count": 27,
    "next": "http://43.247.90.245/api/project/credential/authorized/users/?limit=20&offset=20",
    "previous": null,
    "results": [
        {
            "id": 50,
            "username": 50,
            "data_name": "泛汐服务器(root用户名密码)",
            "data": 29,
            "permission": "admin",
            "permission_name": "管理",
            "last_name": "普通管理员"
        },
        {
            "id": 49,
            "username": 1,
            "data_name": "pip",
            "data": 32,
            "permission": "admin",
            "permission_name": "管理",
            "last_name": "超级管理员"
        },
    ]
}

新增用户凭据权限返回数据例子:

{
    "id": 50,
    "username": 50,
    "data_name": "泛汐服务器(root用户名密码)",
    "data": 29,
    "permission": "admin",
    "permission_name": "管理",
    "last_name": "普通管理员"
},
2、获取单个用户凭据权限,修改用户凭据权限、删除用户凭据权限 API

请求方式: GET(查询) PUT(修改) PATCH(修改) DELETE(删除)

请求地址: /api/project/credential/authorized/users/50/

请求地址中50为用户凭据权限的id

输入/输出参数: 见章节1中输入和输出参数说明,修改数据时输入参数均为非必须

返回数据例子:

{
    "id": 50,
    "username": 50,
    "data_name": "泛汐服务器(root用户名密码)",
    "data": 29,
    "permission": "admin",
    "permission_name": "管理",
    "last_name": "普通管理员"
},
主机分组管理
说明
  • 管理主机分组
1、主机分组列表、新增主机分组、批量删除主机分组 API

请求方式: GET(查询) POST(新增) DELETE(批量删除)

请求地址: /api/project/hosts/

Content-Type:

新增数据的时候需要指定Content-Type,以下对Content-Type进行说明:

application/x-www-form-urlencoded —— 表示通过表单方式提交
application/json —— 表示传入数据为json格式字符串

查询参数:

参数 数据类型 是否必须 说明
offset int 数据起始位置
limit int 查询条数
name string 凭证名称
search string 模糊查询,查询字段为host_id

输入参数(新增):

参数 数据类型 是否必须 说明
group_id int 子分组
host_id int 主机组

输出参数:

参数 数据类型 是否必须 说明
id int group_host id
group_id int 子分组
host_id int 主机组

批量删除参数:

参数 数据类型 是否必须 说明
pk string 与pk[]不能都为空 主键,多个主键用半角逗号隔开。通过http body传入
pk[] array 与pk不能都为空 主键数组。通过http body传入

排序:

参数 数据类型 是否必须 说明
ordering string
一般默认按id倒叙
  • ordering=id表示按id排序ordering=-id表示按id倒叙
  • 多个字段排序用半角逗号分隔

GET返回数据例子:

{
    "count": 5,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 21,
            "group": 10,
            "host_name": "47.106.87.210",
            "host": 34
        },
        {
            "id": 19,
            "group": 8,
            "host_name": "106.13.56.72",
            "host": 13
        }
    ]
}

新增主机分组返回数据例子:

{
    "id": 21,
    "group": 10,
    "host_name": "47.106.87.210",
    "host": 34
}
2、获取单个主机分组,修改主机分组、删除主机分组 API

请求方式: GET(查询) PUT(修改) PATCH(修改) DELETE(删除)

请求地址: /api/project/hosts/21/

请求地址中21为主机分组的id

输入/输出参数: 见章节1中输入和输出参数说明,修改数据时输入参数均为非必须

返回数据例子:

{
    "id": 21,
    "group": 10,
    "host_name": "47.106.87.210",
    "host": 34
}
主机列表
说明
  • 管理主机
1、主机列表、新增主机、批量删除主机 API

请求方式: GET(查询) POST(新增) DELETE(批量删除)

请求地址: /api/project/host/

Content-Type:

新增数据的时候需要指定Content-Type,以下对Content-Type进行说明:

application/x-www-form-urlencoded —— 表示通过表单方式提交
application/json —— 表示传入数据为json格式字符串

查询参数:

参数 数据类型 是否必须 说明
offset int 数据起始位置
limit int 查询条数
name string 主机名称
search string 模糊查询,查询字段为hostname和description

输入参数(新增):

参数 数据类型 是否必须 说明
hostname string 主机名称
inventory_id int inventory id
description string 描述
status string 状态
variables string 参数
host_source int 主机资源ID

输出参数:

参数 数据类型 是否必须 说明
id int host id
hostname string 主机名称
inventory_id int inventory id
description string 描述
status string 状态
variables string 参数
host_source int 主机资源ID

批量删除参数:

参数 数据类型 是否必须 说明
pk string 与pk[]不能都为空 主键,多个主键用半角逗号隔开。通过http body传入
pk[] array 与pk不能都为空 主键数组。通过http body传入

排序:

参数 数据类型 是否必须 说明
ordering string
一般默认按id倒叙
  • ordering=id表示按id排序ordering=-id表示按id倒叙
  • 多个字段排序用半角逗号分隔

GET返回数据例子:

{
    "count": 18,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 34,
            "hostname": "47.106.87.210",
            "inventory_name": "阿里云主机",
            "description": "",
            "status": "启用",
            "variables": "",
            "inventory": 18,
            "host_source": null
        },
        {
            "id": 33,
            "hostname": "1234",
            "inventory_name": "1234",
            "description": "",
            "status": "启用",
            "variables": "",
            "inventory": 17,
            "host_source": null
        }
    ]
}

新增主机返回数据例子:

{
    "id": 34,
    "hostname": "47.106.87.210",
    "inventory_name": "阿里云主机",
    "description": "",
    "status": "启用",
    "variables": "",
    "inventory": 18,
    "host_source": null
},
2、获取单个主机,修改主机、删除主机 API

请求方式: GET(查询) PUT(修改) PATCH(修改) DELETE(删除)

请求地址: /api/project/host/1/

请求地址中1为主机的id

输入/输出参数: 见章节1中输入和输出参数说明,修改数据时输入参数均为非必须

返回数据例子:

{
    "id": 1,
    "hostname": "101.10.10.1",
    "inventory_name": "测试主机",
    "description": "",
    "status": "启用",
    "variables": "",
    "inventory": 4,
    "host_source": null
}
主机分组列表
说明
  • 管理主机分组
1、主机分组列表、新增主机分组、批量删除主机分组 API

请求方式: GET(查询) POST(新增) DELETE(批量删除)

请求地址: /api/project/group/

Content-Type:

新增数据的时候需要指定Content-Type,以下对Content-Type进行说明:

application/x-www-form-urlencoded —— 表示通过表单方式提交
application/json —— 表示传入数据为json格式字符串

查询参数:

参数 数据类型 是否必须 说明
offset int 数据起始位置
limit int 查询条数
name string 主机清单分组名称
search string 模糊查询,查询字段为name和description

输入参数(新增):

参数 数据类型 是否必须 说明
name string 名称
inventory_id int inventory id
description string 描述
variables string 参数
host_source int 主机资源ID

输出参数:

参数 数据类型 是否必须 说明
id int host_group id
name string 名称
inventory_id int inventory id
description string 描述
variables string 参数
host_source int 主机资源ID

批量删除参数:

参数 数据类型 是否必须 说明
pk string 与pk[]不能都为空 主键,多个主键用半角逗号隔开。通过http body传入
pk[] array 与pk不能都为空 主键数组。通过http body传入

排序:

参数 数据类型 是否必须 说明
ordering string
一般默认按id倒叙
  • ordering=id表示按id排序ordering=-id表示按id倒叙
  • 多个字段排序用半角逗号分隔

GET返回数据例子:

{
    "count": 4,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 10,
            "name": "tomcat-servers",
            "inventory_name": "阿里云主机",
            "description": "",
            "variables": "",
            "inventory": 18,
            "host_source": null
        },
        {
            "id": 8,
            "name": "测试",
            "inventory_name": "百度云和腾讯云主机",
            "description": "",
            "variables": "",
            "inventory": 9,
            "host_source": null
        }
    ]
}

新增主机分组返回数据例子:

{
    "id": 10,
    "name": "tomcat-servers",
    "inventory_name": "阿里云主机",
    "description": "",
    "variables": "",
    "inventory": 18,
    "host_source": null
},
2、获取单个主机分组,修改主机分组、删除主机分组 API

请求方式: GET(查询) PUT(修改) PATCH(修改) DELETE(删除)

请求地址: /api/project/group/1/

请求地址中1为主机分组的id

输入/输出参数: 见章节1中输入和输出参数说明,修改数据时输入参数均为非必须

返回数据例子:

{
    "id": 1,
    "name": "测试group",
    "inventory_name": "测试主机",
    "description": "",
    "variables": "",
    "inventory": 4,
    "host_source": null
}
团队主机清单权限列表
说明
  • 管理团队主机清单权限
1、团队主机清单权限列表、新增团队主机清单权限、批量删除团队主机清单权限 API

请求方式: GET(查询) POST(新增) DELETE(批量删除)

请求地址: /api/project/inventory/empowered/teams/

Content-Type:

新增数据的时候需要指定Content-Type,以下对Content-Type进行说明:

application/x-www-form-urlencoded —— 表示通过表单方式提交
application/json —— 表示传入数据为json格式字符串

查询参数:

参数 数据类型 是否必须 说明
offset int 数据起始位置
limit int 查询条数
name string 凭证名称
search string 模糊查询,查询字段为team

输入参数(新增):

参数 数据类型 是否必须 说明
team int 团队名称
permission string 权限
permission_name string 权限中文名(只读)

输出参数:

参数 数据类型 是否必须 说明
id int credential_team_permissions id
team int 团队名称
data int inventory id
permission string 权限
permission_name string 权限中文名(只读)

批量删除参数:

参数 数据类型 是否必须 说明
pk string 与pk[]不能都为空 主键,多个主键用半角逗号隔开。通过http body传入
pk[] array 与pk不能都为空 主键数组。通过http body传入

排序:

参数 数据类型 是否必须 说明
ordering string
一般默认按id倒叙
  • ordering=id表示按id排序ordering=-id表示按id倒叙
  • 多个字段排序用半角逗号分隔

GET返回数据例子:

{
    "count": 1,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 1,
            "team": 1,
            "data_name": "百度云主机(异常)",
            "data": 3,
            "permission": "read",
            "team_name": "测试",
            "permission_name": "只读"
        }
    ]
}

新增团队主机清单权限返回数据例子:

{
    "id": 1,
    "team": 1,
    "data_name": "百度云主机(异常)",
    "data": 3,
    "permission": "read",
    "team_name": "测试",
    "permission_name": "只读"
}
2、获取单个团队主机清单权限,修改团队主机清单权限、删除团队主机清单权限 API

请求方式: GET(查询) PUT(修改) PATCH(修改) DELETE(删除)

请求地址: /api/project/inventory/empowered/teams/1/

请求地址中1为团队主机清单权限的id

输入/输出参数: 见章节1中输入和输出参数说明,修改数据时输入参数均为非必须

返回数据例子:

{
    "id": 1,
    "team": 1,
    "data_name": "百度云主机(异常)",
    "data": 3,
    "permission": "read",
    "team_name": "测试",
    "permission_name": "只读"
}
用户主机清单权限列表
说明
  • 管理用户主机清单权限
1、用户主机清单权限列表、新增用户主机清单权限、批量用户主机清单权限 API

请求方式: GET(查询) POST(新增) DELETE(批量删除)

请求地址: /api/project/inventory/authorized/users/

Content-Type:

新增数据的时候需要指定Content-Type,以下对Content-Type进行说明:

application/x-www-form-urlencoded —— 表示通过表单方式提交
application/json —— 表示传入数据为json格式字符串

查询参数:

参数 数据类型 是否必须 说明
offset int 数据起始位置
limit int 查询条数
name string 凭证名称
search string 模糊查询,查询字段为username

输入参数(新增):

参数 数据类型 是否必须 说明
username string 用户名
last_name string 用户姓名(只读)
permission string 权限
permission_name string 权限中文名(只读)

输出参数:

参数 数据类型 是否必须 说明
id int credential_user_permissions id
username | string 用户名
last_name string 用户姓名(只读)
data int inventory id
permission string 权限
permission_name string 权限中文名(只读)

批量删除参数:

参数 数据类型 是否必须 说明
pk string 与pk[]不能都为空 主键,多个主键用半角逗号隔开。通过http body传入
pk[] array 与pk不能都为空 主键数组。通过http body传入

排序:

参数 数据类型 是否必须 说明
ordering string
一般默认按id倒叙
  • ordering=id表示按id排序ordering=-id表示按id倒叙
  • 多个字段排序用半角逗号分隔

GET返回数据例子: :: {

"count": 1, "next": null, "previous": null, "results": [

{
"id": 5, "username": "tst", "data_name": "百度云主机(异常)", "data": 3, "permission": "admin", "permission_name": "管理", "last_name": "Alex"

}

]

}

新增用户主机清单权限返回数据例子:

{
    "id": 5,
    "username": "tst",
    "data_name": "百度云主机(异常)",
    "data": 3,
    "permission": "admin",
    "permission_name": "管理",
    "last_name": "Alex"
}
2、获取单个用户主机清单权限,修改用户主机清单权限、删除用户主机清单权限 API

请求方式: GET(查询) PUT(修改) PATCH(修改) DELETE(删除)

请求地址: /api/project/inventory/authorized/users/5/

请求地址中5为用户主机清单权限的id

输入/输出参数: 见章节1中输入和输出参数说明,修改数据时输入参数均为非必须

返回数据例子:

{
    "id": 5,
    "username": "tst",
    "data_name": "百度云主机(异常)",
    "data": 3,
    "permission": "admin",
    "permission_name": "管理",
    "last_name": "Alex"
}
主机资源列表
说明
  • 管理主机资源
1、主机资源列表、新增主机资源API

请求方式: GET(查询) POST(新增) DELETE(批量删除)

请求地址: /api/project/host/source/

Content-Type:

新增数据的时候需要指定Content-Type,以下对Content-Type进行说明:

application/x-www-form-urlencoded —— 表示通过表单方式提交
application/json —— 表示传入数据为json格式字符串

查询参数:

参数 数据类型 是否必须 说明
offset int 数据起始位置
limit int 查询条数

输入参数(新增):

参数 数据类型 是否必须 说明
name string 名称
description string 描述
inventory int inventory
source_type string 来源类型
source_type_name string 来源类型中文名称(只读)
project int 自动化项目
host_file string 主机文件
url string API地址
method string 请求方式
header string 头信息
params string 参数模板
source_script string 脚本内容
regions string 地域
credential int 凭据
state string 状态

输出参数:

参数 数据类型 是否必须 说明
id int host id
name string 名称
description string 描述
inventory int inventory
source_type string 来源类型
source_type_name string 来源类型中文名称(只读)
project int 自动化项目
host_file string 主机文件
url string API地址
method string 请求方式
header string 头信息
params string 参数模板
source_script string 脚本内容
regions string 地域
credential int 凭据
state string 状态

批量删除参数:

参数 数据类型 是否必须 说明
pk string 与pk[]不能都为空 主键,多个主键用半角逗号隔开。通过http body传入
pk[] array 与pk不能都为空 主键数组。通过http body传入

排序:

参数 数据类型 是否必须 说明
ordering string
一般默认按id倒叙
  • ordering=id表示按id排序ordering=-id表示按id倒叙
  • 多个字段排序用半角逗号分隔

GET返回数据例子:

{
    "count": 18,
    "next": null,
    "previous": null,
    "results": [
    {
        "id": 24,
        "name": "999",
        "description": "888",
        "inventory_name": "提交ooo",
        "source_type": "script",
        "host_file": "",
        "url": "",
        "method": "",
        "header": "",
        "params": "",
        "source_script": "{}{}",
        "inventory": 117,
        "project": null,
        "source_type_name": "自定义脚本",
        "credential": null,
        "regions": ""
    },
    {
        "id": 23,
        "name": "阿里云服务器99",
        "description": "",
        "inventory_name": "wgwwb",
        "source_type": "restapi",
        "host_file": "",
        "url": "555",
        "method": "post",
        "header": "",
        "params": "",
        "source_script": "{}",
        "inventory": 107,
        "project": null,
        "source_type_name": "Rest Api",
        "credential": null,
        "regions": ""
    },
    ]
}

新增主机资源返回数据例子:

{
    "id": 20,
    "name": "bdebdsb",
    "description": "",
    "inventory_name": "dvdf",
    "source_type": "script",
    "host_file": "",
    "url": "",
    "method": "",
    "header": "",
    "params": "",
    "source_script": "",
    "inventory": 94,
    "project": null,
    "source_type_name": "自定义脚本",
    "credential": null,
    "regions": ""
},
2、获取单个主机资源,修改主机资源、删除主机资源 API

请求方式: GET(查询) PUT(修改) PATCH(修改) DELETE(删除)

请求地址: /api/project/host/source/1/

请求地址中1为主机资源的id

输入/输出参数: 见章节1中输入和输出参数说明,修改数据时输入参数均为非必须

返回数据例子:

{
    "id": 1,
    "name": "阿里云服务器",
    "description": "",
    "source_type": "script",
    "host_file": "",
    "url": "",
    "method": "",
    "header": "",
    "params": "",
    "source_script": "{}",
    "inventory": null,
    "project": null,
    "source_type_name": "自定义脚本",
    "credential": null,
    "regions": ""
}

模板管理

模板管理列表
说明
  • 管理模板管理
1、模板管理列表、新增模板管理、批量模板管理 API

请求方式: GET(查询) POST(新增) DELETE(批量删除)

请求地址: /api/template/template/

Content-Type:

新增数据的时候需要指定Content-Type,以下对Content-Type进行说明:

application/x-www-form-urlencoded —— 表示通过表单方式提交
application/json —— 表示传入数据为json格式字符串

查询参数:

参数 数据类型 是否必须 说明
offset int 数据起始位置
limit int 查询条数
name string 凭证名称
search string 模糊查询,查询字段为name和description

输入参数(新增):

参数 数据类型 是否必须 说明
name string 模板名称
description string 描述
template_type string 模版类型
job_type string 运行模式
inventory int 主机清单
inventory_name string 主机清单中文名称
project int 自动化项目
project_name string 自动化项目中文名称
playbook string playbook
credential int 凭据
credential_name string 凭据id中文名称
forks int 并发数
limit string limit
tags string tags
skip_tags string skip_tags
verbosity int Debug级别
variables string 扩展参数
become_enabled int 是否允许切换用户
become_enabled_name string 是否允许切换用户中文名称
diff_mode int 是否使用diff模块
diff_mode_name string 是否使用diff模块中文名称
force_handlers int 是否强制允许handlers任务
force_handlers_name string 是否强制允许handlers任务中文名称
start_at_task string 开始任务
cuser string 用户名
bind_templates int 已绑定工作流
is_bind_templates int 是否被绑定工作流

输出参数:

参数 数据类型 是否必须 说明
id int template id
name string 模板名称
description string 描述
template_type string 模版类型
job_type string 运行模式
inventory int 主机清单
inventory_name string 主机清单中文名称
project int 自动化项目
project_name string 自动化项目中文名称
playbook string playbook
credential int 凭据
credential_name string 凭据id中文名称
forks int 并发数
limit string limit
tags string tags
skip_tags string skip_tags
verbosity int Debug级别
variables string 扩展参数
become_enabled int 是否允许切换用户
become_enabled_name string 是否允许切换用户中文名称
diff_mode int 是否使用diff模块
diff_mode_name string 是否使用diff模块中文名称
force_handlers int 是否强制允许handlers任务
force_handlers_name string 是否强制允许handlers任务中文名称
start_at_task string 开始任务
cuser string 用户名
bind_templates int 已绑定工作流
is_bind_templates int 是否被绑定工作流

批量删除参数:

参数 数据类型 是否必须 说明
pk string 与pk[]不能都为空 主键,多个主键用半角逗号隔开。通过http body传入
pk[] array 与pk不能都为空 主键数组。通过http body传入

排序:

参数 数据类型 是否必须 说明
ordering string
一般默认按id倒叙
  • ordering=id表示按id排序ordering=-id表示按id倒叙
  • 多个字段排序用半角逗号分隔

GET返回数据例子:

{
    "count": 9,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 31,
            "description": "",
            "template_type": "job",
            "job_type": "run",
            "playbook": "site.yml",
            "credential": 29,
            "inventory": 18,
            "inventory_name": "阿里云主机",
            "project_name": "tomcat playbook",
            "project": 17,
            "forks": 0,
            "limit": "",
            "verbosity": 0,
            "become_enabled": 0,
            "variables": "tomcat_version: 8.5.42\r\n\r\n# Here are variables related to the Tomcat installation\r\n\r\nhttp_port: 8080\r\nhttps_port: 8443\r\n\r\n# This will configure a default manager-gui user:\r\n\r\nadmin_username: admin\r\nadmin_password: admin\r\n\r\ntomcat_downloadURL: http://mirror.bit.edu.cn/apache",
            "credential_name": "泛汐服务器(root用户名密码)",
            "name": "tomcat安装",
            "diff_mode": 0,
            "force_handlers": 0,
            "start_at_task": "",
            "tags": "",
            "skip_tags": "",
            "jobtype_name": "Run",
            "verbosity_name": "Normal",
            "cuser": 48,
            "bind_templates": [],
            "is_bind_templates": "否"
        },
        {
            "id": 30,
            "description": "",
            "template_type": "job",
            "job_type": "run",
            "playbook": "main.yml",
            "credential": 29,
            "inventory": 9,
            "inventory_name": "百度云和腾讯云主机",
            "project_name": "修改密码",
            "project": 8,
            "forks": 0,
            "limit": "",
            "verbosity": 0,
            "become_enabled": 0,
            "variables": "",
            "credential_name": "泛汐服务器(root用户名密码)",
            "name": "修改密码模板",
            "diff_mode": 0,
            "force_handlers": 0,
            "start_at_task": "",
            "tags": "",
            "skip_tags": "",
            "jobtype_name": "Run",
            "verbosity_name": "Normal",
            "cuser": 48,
            "bind_templates": [],
            "is_bind_templates": "否"
            }
        ]
    }

新增模板管理返回数据例子:

{
    "id": 30,
    "description": "",
    "template_type": "job",
    "job_type": "run",
    "playbook": "main.yml",
    "credential": 29,
    "inventory": 9,
    "inventory_name": "百度云和腾讯云主机",
    "project_name": "修改密码",
    "project": 8,
    "forks": 0,
    "limit": "",
    "verbosity": 0,
    "become_enabled": 0,
    "variables": "",
    "credential_name": "泛汐服务器(root用户名密码)",
    "name": "修改密码模板",
    "diff_mode": 0,
    "force_handlers": 0,
    "start_at_task": "",
    "tags": "",
    "skip_tags": "",
    "jobtype_name": "Run",
    "verbosity_name": "Normal",
    "cuser": 48,
    "bind_templates": [],
    "is_bind_templates": "否"
    }
2、获取单个模板管理,修改模板管理、删除模板管理 API

请求方式: GET(查询) PUT(修改) PATCH(修改) DELETE(删除)

请求地址: /api/template/template/30/

请求地址中30为模板管理的id

输入/输出参数: 见章节1中输入和输出参数说明,修改数据时输入参数均为非必须

返回数据例子:

{
    "id": 30,
    "description": "",
    "template_type": "job",
    "job_type": "run",
    "playbook": "main.yml",
    "credential": 29,
    "inventory": 9,
    "inventory_name": "百度云和腾讯云主机",
    "project_name": "修改密码",
    "project": 8,
    "forks": 0,
    "limit": "",
    "verbosity": 0,
    "become_enabled": 0,
    "variables": "",
    "credential_name": "泛汐服务器(root用户名密码)",
    "name": "修改密码模板",
    "diff_mode": 0,
    "force_handlers": 0,
    "start_at_task": "",
    "tags": "",
    "skip_tags": "",
    "jobtype_name": "Run",
    "verbosity_name": "Normal",
    "cuser": 48,
    "bind_templates": [],
    "is_bind_templates": "否"
    }
工作流通知管理列表
说明
  • 管理工作流通知管理
1、工作流通知管理列表、新增工作流通知管理、批量删除工作流通知管理 API

请求方式: GET(查询) POST(新增) DELETE(批量删除)

请求地址: /api/template/template/notification/

Content-Type:

新增数据的时候需要指定Content-Type,以下对Content-Type进行说明:

application/x-www-form-urlencoded —— 表示通过表单方式提交
application/json —— 表示传入数据为json格式字符串

查询参数:

参数 数据类型 是否必须 说明
offset int 数据起始位置
limit int 查询条数
name string 项目名称
search string 模糊查询,查询字段为name和description

输入参数(新增):

参数 数据类型 是否必须 说明
template int 模版id
notification int 通知id
notification string 通知id中文名称
notification_channel int 通知渠道
result string 运行结果

输出参数:

参数 数据类型 是否必须 说明
id int id
template int 模版id
notification int 通知id
notification string 通知id中文名称
notification_channel int 通知渠道
result string 运行结果

批量删除参数:

参数 数据类型 是否必须 说明
pk string 与pk[]不能都为空 主键,多个主键用半角逗号隔开。通过http body传入
pk[] array 与pk不能都为空 主键数组。通过http body传入

排序:

参数 数据类型 是否必须 说明
ordering string
一般默认按id倒叙
  • ordering=id表示按id排序ordering=-id表示按id倒叙
  • 多个字段排序用半角逗号分隔

GET返回数据例子:

{
    "count": 6,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 22,
            "template": 26,
            "notification": 12,
            "notification_name": "notification weixin",
            "notification_channel": "QiYeWeiXin",
            "result": "成功"
        },
        {
            "id": 21,
            "template": 12,
            "notification": 7,
            "notification_name": "钉钉通知",
            "notification_channel": "DingTalk",
            "result": "成功"
            }
        ]
    }

新增工作流通知管理返回数据例子:

{
    "id": 22,
    "template": 26,
    "notification": 12,
    "notification_name": "notification weixin",
    "notification_channel": "QiYeWeiXin",
    "result": "成功"
}
2、获取单个工作流通知管理,修改工作流通知管理、删除工作流通知管理 API

请求方式: GET(查询) PUT(修改) PATCH(修改) DELETE(删除)

请求地址: /api/template/template/notification/22/

请求地址中22为工作流通知管理的id

输入/输出参数: 见章节1中输入和输出参数说明,修改数据时输入参数均为非必须

返回数据例子:

{
    "id": 22,
    "template": 26,
    "notification": 12,
    "notification_name": "notification weixin",
    "notification_channel": "QiYeWeiXin",
    "result": "成功"
}

执行模板管理
说明
  • 管理执行模板
1、执行模板列表、新增执行模板、批量删除执行模板 API

请求方式: GET(查询) POST(新增) DELETE(批量删除)

请求地址: /api/template/template/run/

Content-Type:

新增数据的时候需要指定Content-Type,以下对Content-Type进行说明:

application/x-www-form-urlencoded —— 表示通过表单方式提交
application/json —— 表示传入数据为json格式字符串

查询参数:

参数 数据类型 是否必须 说明
offset int 数据起始位置
limit int 查询条数
name string 主机清单分组名称

输入参数(新增):

参数 数据类型 是否必须 说明
id int 模板id,与模板名称必须输入一个
name string 模板名称,与模板id必须输入一个
variables string 外部参数,会覆盖工作流中所有节的外部参数
inventory_str string 主机清单内容,会覆盖工作流所有节点主机清单
node int 开始执行节点,默认从开始节点往下执行

输出参数:

详细返回字段见job api:/api/job/job/

http method:

get —— 模板列表 post —— 执行模板

批量删除参数:

参数 数据类型 是否必须 说明
pk string 与pk[]不能都为空 主键,多个主键用半角逗号隔开。通过http body传入
pk[] array 与pk不能都为空 主键数组。通过http body传入

排序:

参数 数据类型 是否必须 说明
ordering string
一般默认按id倒叙
  • ordering=id表示按id排序ordering=-id表示按id倒叙
  • 多个字段排序用半角逗号分隔

GET返回数据例子:

{
    "count": 9,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 31,
            "description": "",
            "template_type": "job",
            "job_type": "run",
            "playbook": "site.yml",
            "credential": 29,
            "inventory": 18,
            "inventory_name": "阿里云主机",
            "project_name": "tomcat playbook",
            "project": 17,
            "forks": 0,
            "limit": "",
            "verbosity": 0,
            "become_enabled": 0,
            "variables": "tomcat_version: 8.5.42\r\n\r\n# Here are variables related to the Tomcat installation\r\n\r\nhttp_port: 8080\r\nhttps_port: 8443\r\n\r\n# This will configure a default manager-gui user:\r\n\r\nadmin_username: admin\r\nadmin_password: admin\r\n\r\ntomcat_downloadURL: http://mirror.bit.edu.cn/apache",
            "credential_name": "泛汐服务器(root用户名密码)",
            "name": "tomcat安装",
            "diff_mode": 0,
            "force_handlers": 0,
            "start_at_task": "",
            "tags": "",
            "skip_tags": "",
            "jobtype_name": "Run",
            "verbosity_name": "Normal",
            "cuser": 48,
            "bind_templates": [],
            "is_bind_templates": "否"
        },
        {
            "id": 30,
            "description": "",
            "template_type": "job",
            "job_type": "run",
            "playbook": "main.yml",
            "credential": 29,
            "inventory": 9,
            "inventory_name": "百度云和腾讯云主机",
            "project_name": "修改密码",
            "project": 8,
            "forks": 0,
            "limit": "",
            "verbosity": 0,
            "become_enabled": 0,
            "variables": "",
            "credential_name": "泛汐服务器(root用户名密码)",
            "name": "修改密码模板",
            "diff_mode": 0,
            "force_handlers": 0,
            "start_at_task": "",
            "tags": "",
            "skip_tags": "",
            "jobtype_name": "Run",
            "verbosity_name": "Normal",
            "cuser": 48,
            "bind_templates": [],
            "is_bind_templates": "否"
        }
    ]
}

新增执行模板返回数据例子:

{
    "id": 31,
    "description": "",
    "template_type": "job",
    "job_type": "run",
    "playbook": "site.yml",
    "credential": 29,
    "inventory": 18,
    "inventory_name": "阿里云主机",
    "project_name": "tomcat playbook",
    "project": 17,
    "forks": 0,
    "limit": "",
    "verbosity": 0,
    "become_enabled": 0,
    "variables": "tomcat_version: 8.5.42\r\n\r\n# Here are variables related to the Tomcat installation\r\n\r\nhttp_port: 8080\r\nhttps_port: 8443\r\n\r\n# This will configure a default manager-gui user:\r\n\r\nadmin_username: admin\r\nadmin_password: admin\r\n\r\ntomcat_downloadURL: http://mirror.bit.edu.cn/apache",
    "credential_name": "泛汐服务器(root用户名密码)",
    "name": "tomcat安装",
    "diff_mode": 0,
    "force_handlers": 0,
    "start_at_task": "",
    "tags": "",
    "skip_tags": "",
    "jobtype_name": "Run",
    "verbosity_name": "Normal",
    "cuser": 48,
    "bind_templates": [],
    "is_bind_templates": "否"
}
2、获取单个执行模板,修改执行模板、删除执行模板 API

请求方式: GET(查询) PUT(修改) PATCH(修改) DELETE(删除)

请求地址: /api/template/template/run/31/

请求地址中31为执行模板的id

输入/输出参数: 见章节1中输入和输出参数说明,修改数据时输入参数均为非必须

返回数据例子: :: {

"id": 31, "description": "", "template_type": "job", "job_type": "run", "playbook": "site.yml", "credential": 29, "inventory": 18, "inventory_name": "阿里云主机", "project_name": "tomcat playbook", "project": 17, "forks": 0, "limit": "", "verbosity": 0, "become_enabled": 0, "variables": "tomcat_version: 8.5.42rnrn# Here are variables related to the Tomcat installationrnrnhttp_port: 8080rnhttps_port: 8443rnrn# This will configure a default manager-gui user:rnrnadmin_username: adminrnadmin_password: adminrnrntomcat_downloadURL: http://mirror.bit.edu.cn/apache", "credential_name": "泛汐服务器(root用户名密码)", "name": "tomcat安装", "diff_mode": 0, "force_handlers": 0, "start_at_task": "", "tags": "", "skip_tags": "", "jobtype_name": "Run", "verbosity_name": "Normal", "cuser": 48, "bind_templates": [], "is_bind_templates": "否"

}

团队模板权限列表
说明
  • 管理团队模板权限
1、团队模板权限列表、新增团队模板权限、批量删除团队模板权限 API

请求方式: GET(查询) POST(新增) DELETE(批量删除)

请求地址: /api/project/credential/empowered/teams/

Content-Type:

新增数据的时候需要指定Content-Type,以下对Content-Type进行说明:

application/x-www-form-urlencoded —— 表示通过表单方式提交
application/json —— 表示传入数据为json格式字符串

查询参数:

参数 数据类型 是否必须 说明
offset int 数据起始位置
limit int 查询条数
name string 凭证名称
search string 模糊查询,查询字段为team

输入参数(新增):

参数 数据类型 是否必须 说明
team int 团队名称
permission string 权限
permission_name string 权限中文名(只读)

输出参数:

参数 数据类型 是否必须 说明
id int credential_team_permissions id
team int 团队名称
data int inventory id
permission string 权限
permission_name string 权限中文名(只读)

批量删除参数:

参数 数据类型 是否必须 说明
pk string 与pk[]不能都为空 主键,多个主键用半角逗号隔开。通过http body传入
pk[] array 与pk不能都为空 主键数组。通过http body传入

排序:

参数 数据类型 是否必须 说明
ordering string
一般默认按id倒叙
  • ordering=id表示按id排序ordering=-id表示按id倒叙
  • 多个字段排序用半角逗号分隔

GET返回数据例子:

{
    "count": 1,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 1,
            "team": 2,
            "data": 2,
            "permission": "read",
            "permission_name": "只读",
            "data_name": "工作流测试模板",
            "team_name": "测试团队"
        }
    ]
}

新增团队模板权限返回数据例子:

{
    "id": 1,
    "team": 2,
    "data": 2,
    "permission": "read",
    "permission_name": "只读",
    "data_name": "工作流测试模板",
    "team_name": "测试团队"
}
2、获取单个团队模板权限,修改团队模板权限、删除团队模板权限 API

请求方式: GET(查询) PUT(修改) PATCH(修改) DELETE(删除)

请求地址: /api/project/credential/empowered/teams/1/

请求地址中1为团队模板权限的id

输入/输出参数: 见章节1中输入和输出参数说明,修改数据时输入参数均为非必须

返回数据例子:

{
    "id": 1,
    "team": 2,
    "data": 2,
    "permission": "read",
    "permission_name": "只读",
    "data_name": "工作流测试模板",
    "team_name": "测试团队"
}
用户模板权限列表
说明
  • 管理用户模板权限
1、用户模板权限列表、新增用户模板权限、批量删除用户模板权限 API

请求方式: GET(查询) POST(新增) DELETE(批量删除)

请求地址: /api/template/template/permission/users/

Content-Type:

新增数据的时候需要指定Content-Type,以下对Content-Type进行说明:

application/x-www-form-urlencoded —— 表示通过表单方式提交
application/json —— 表示传入数据为json格式字符串

查询参数:

参数 数据类型 是否必须 说明
offset int 数据起始位置
limit int 查询条数
name string 凭证名称
search string 模糊查询,查询字段为username

输入参数(新增):

参数 数据类型 是否必须 说明
username | string 用户名称
last_name string 用户名称中文名(只读)
permission string 权限
permission_name string 权限中文名(只读)

输出参数:

参数 数据类型 是否必须 说明
id int template_user_permissions id
username | string 用户名称
last_name string 用户名称中文名(只读)
data int inventory id
permission string 权限
permission_name string 权限中文名(只读)

批量删除参数:

参数 数据类型 是否必须 说明
pk string 与pk[]不能都为空 主键,多个主键用半角逗号隔开。通过http body传入
pk[] array 与pk不能都为空 主键数组。通过http body传入

排序:

参数 数据类型 是否必须 说明
ordering string
一般默认按id倒叙
  • ordering=id表示按id排序ordering=-id表示按id倒叙
  • 多个字段排序用半角逗号分隔

GET返回数据例子:

{
    "count": 28,
    "next": "http://43.24.9.245/api/template/template/permission/users/?limit=20&offset=20",
    "previous": null,
    "results": [
        {
            "id": 49,
            "username": 18,
            "data": 32,
            "permission": "admin",
            "permission_name": "管理",
            "last_name": "fly yao",
            "data_name": "测试密码"
        },
        {
            "id": 48,
            "username": 48,
            "data": 31,
            "permission": "admin",
            "permission_name": "管理",
            "last_name": "Alex",
            "data_name": "tomcat安装"
        },
    ]
}

新增用户模板权限返回数据例子:

{
    "id": 49,
    "username": 18,
    "data": 32,
    "permission": "admin",
    "permission_name": "管理",
    "last_name": "fly yao",
    "data_name": "测试密码"
}
2、获取单个用户模板权限,修改用户模板权限、删除用户模板权限 API

请求方式: GET(查询) PUT(修改) PATCH(修改) DELETE(删除)

请求地址: /api/template/template/permission/users/49/

请求地址中49为用户模板权限的id

输入/输出参数: 见章节1中输入和输出参数说明,修改数据时输入参数均为非必须

返回数据例子:

{
    "id": 49,
    "username": 18,
    "data": 32,
    "permission": "admin",
    "permission_name": "管理",
    "last_name": "fly yao",
    "data_name": "测试密码"
}
工作流节点管理列表
说明
  • 管理工作流节点管理
1、工作流节点管理列表、新增工作流节点管理、批量删除工作流节点管理 API

请求方式: GET(查询) POST(新增) DELETE(批量删除)

请求地址: /api/template/workflow/node/

Content-Type:

新增数据的时候需要指定Content-Type,以下对Content-Type进行说明:

application/x-www-form-urlencoded —— 表示通过表单方式提交
application/json —— 表示传入数据为json格式字符串

查询参数:

参数 数据类型 是否必须 说明
offset int 数据起始位置
limit int 查询条数
name string 项目名称
search string 模糊查询,查询字段为name和description

输入参数(新增):

参数 数据类型 是否必须 说明
name string 节点名称
template int 模版id
template_name string 模版id中文名称
top int 纵坐标
left int 横坐标
type string 节点类型
is_start_node int 是否开始节点
bind_template int 绑定模版id
bind_template_name string 绑定模版id中文名称
forks string 并发数
limit string limit
tags string tags
skip_tags string skip_tags
verbosity int Debug级别
variables string 扩展参数
become_enabled int 是否允许切换用户
diff_mode int 是否使用diff模块
force_handlers int 是否强制允许handlers任务
start_at_task string 开始任务

输出参数:

参数 数据类型 是否必须 说明
id int workflow id
name string 节点名称
template int 模版id
template_name string 模版id中文名称
top int 纵坐标
left int 横坐标
type string 节点类型
is_start_node int 是否开始节点
bind_template int 绑定模版id
bind_template_name string 绑定模版id中文名称
forks string 并发数
limit string limit
tags string tags
skip_tags string skip_tags
verbosity int Debug级别
variables string 扩展参数
become_enabled int 是否允许切换用户
diff_mode int 是否使用diff模块
force_handlers int 是否强制允许handlers任务
start_at_task string 开始任务

批量删除参数:

参数 数据类型 是否必须 说明
pk string 与pk[]不能都为空 主键,多个主键用半角逗号隔开。通过http body传入
pk[] array 与pk不能都为空 主键数组。通过http body传入

排序:

参数 数据类型 是否必须 说明
ordering string
一般默认按id倒叙
  • ordering=id表示按id排序ordering=-id表示按id倒叙
  • 多个字段排序用半角逗号分隔

GET返回数据例子:

{
    "count": 3,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 21,
            "name": "处理节点",
            "template": 26,
            "template_name": "workflow",
            "left": 678,
            "top": 458,
            "type": "",
            "is_start_node": 0,
            "bind_template": null,
            "bind_template_name": null,
            "use_node_params": 0,
            "forks": 0,
            "limit": "",
            "tags": "",
            "skip_tags": "",
            "verbosity": 0,
            "become_enabled": 0,
            "diff_mode": 0,
            "force_handlers": 0,
            "start_at_task": "",
            "variables": ""
        },
        {
            "id": 20,
            "name": "处理节点",
            "template": 26,
            "template_name": "workflow",
            "left": 651,
            "top": 122,
            "type": "job",
            "is_start_node": 0,
            "bind_template": 23,
            "bind_template_name": "测试SVN",
            "use_node_params": 1,
            "forks": 0,
            "limit": "",
            "tags": "text",
            "skip_tags": "text",
            "verbosity": 0,
            "become_enabled": 0,
            "diff_mode": 0,
            "force_handlers": 0,
            "start_at_task": "",
            "variables": ""
            }
        ]
    }

新增工作流节点管理返回数据例子:

{
    "id": 21,
    "name": "处理节点",
    "template": 26,
    "template_name": "workflow",
    "left": 678,
    "top": 458,
    "type": "",
    "is_start_node": 0,
    "bind_template": null,
    "bind_template_name": null,
    "use_node_params": 0,
    "forks": 0,
    "limit": "",
    "tags": "",
    "skip_tags": "",
    "verbosity": 0,
    "become_enabled": 0,
    "diff_mode": 0,
    "force_handlers": 0,
    "start_at_task": "",
    "variables": ""
}
2、获取单个工作流节点管理,修改工作流节点管理、删除工作流节点管理 API

请求方式: GET(查询) PUT(修改) PATCH(修改) DELETE(删除)

请求地址: /api/template/workflow/node/1/

请求地址中1为工作流节点管理的id

输入/输出参数: 见章节1中输入和输出参数说明,修改数据时输入参数均为非必须

返回数据例子:

{
    "id": 1,
    "name": "开始",
    "template": 2,
    "template_name": "工作流测试模板",
    "left": 234,
    "top": 264,
    "type": "",
    "is_start_node": 1,
    "bind_template": null,
    "bind_template_name": null,
    "use_node_params": 0,
    "forks": 0,
    "limit": "",
    "tags": "",
    "skip_tags": "",
    "verbosity": 0,
    "become_enabled": 0,
    "diff_mode": 0,
    "force_handlers": 0,
    "start_at_task": "",
    "variables": ""
}
工作流连线管理列表
说明
  • 管理工作流连线管理
1、工作流连线管理列表、新增工作流连线管理、批量删除工作流连线管理 API

请求方式: GET(查询) POST(新增) DELETE(批量删除)

请求地址: /api/template/workflow/line/

Content-Type:

新增数据的时候需要指定Content-Type,以下对Content-Type进行说明:

application/x-www-form-urlencoded —— 表示通过表单方式提交
application/json —— 表示传入数据为json格式字符串

查询参数:

参数 数据类型 是否必须 说明
offset int 数据起始位置
limit int 查询条数
name string 项目名称

输入参数(新增):

参数 数据类型 是否必须 说明
node_id int 节点id
next_node int 下个节点id
source_anchor string 起始连线位置
target_anchor string 终止连线位置
result string 运行结果
result_name string 运行结果中文名称

输出参数:

参数 数据类型 是否必须 说明
id int id
node_id int 节点id
next_node int 下个节点id
source_anchor string 起始连线位置
target_anchor string 终止连线位置
result string 运行结果
result_name string 运行结果中文名称

批量删除参数:

参数 数据类型 是否必须 说明
pk string 与pk[]不能都为空 主键,多个主键用半角逗号隔开。通过http body传入
pk[] array 与pk不能都为空 主键数组。通过http body传入

排序:

参数 数据类型 是否必须 说明
ordering string
一般默认按id倒叙
  • ordering=id表示按id排序ordering=-id表示按id倒叙
  • 多个字段排序用半角逗号分隔

GET返回数据例子:

{
    "count": 10,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 20,
            "node": 20,
            "next_node": 21,
            "source_anchor": "BottomCenter",
            "target_anchor": "TopCenter",
            "result": "failed",
            "result_name": "失败"
        },
        {
            "id": 19,
            "node": 19,
            "next_node": 20,
            "source_anchor": "RightMiddle",
            "target_anchor": "LeftMiddle",
            "result": "successful",
            "result_name": "成功"
            }
        ]
    }

新增工作流连线管理返回数据例子:

{
    "id": 20,
    "node": 20,
    "next_node": 21,
    "source_anchor": "BottomCenter",
    "target_anchor": "TopCenter",
    "result": "failed",
    "result_name": "失败"
}
2、获取单个工作流连线管理,修改工作流连线管理、删除工作流连线管理 API

请求方式: GET(查询) PUT(修改) PATCH(修改) DELETE(删除)

请求地址: /api/template/workflow/line/1/

请求地址中1为工作流连线管理的id

输入/输出参数: 见章节1中输入和输出参数说明,修改数据时输入参数均为非必须

返回数据例子:

{
    "id": 1,
    "node": 1,
    "next_node": 2,
    "source_anchor": "RightMiddle",
    "target_anchor": "LeftMiddle",
    "result": "any",
    "result_name": "成功或失败"
}

通知管理

钉钉设置
说明
  • 管理渠道设置中默认的钉钉渠道,用于通知管理中通知渠道参数选择的默认值
1、钉钉列表、新增钉钉、批量删除钉钉 API

请求方式: GET(查询) POST(新增) DELETE(批量删除)

请求地址: /api/notification/dingtalk/

Content-Type:

新增数据的时候需要指定Content-Type,以下对Content-Type进行说明:

application/x-www-form-urlencoded —— 表示通过表单方式提交
application/json —— 表示传入数据为json格式字符串

查询参数:

参数 数据类型 是否必须 说明
offset int 数据起始位置
limit int 查询条数
name string 钉钉名称

输入参数(新增):

参数 数据类型 是否必须 说明
agent_id string AgentId
corpid string CorpId
corpsecret string CorpSecret

输出参数:

参数 数据类型 是否必须 说明
id int 钉钉id
agent_id string AgentId
corpid string CorpId
corpsecret string CorpSecret

批量删除参数:

参数 数据类型 是否必须 说明
pk string 与pk[]不能都为空 主键,多个主键用半角逗号隔开。通过http body传入
pk[] array 与pk不能都为空 主键数组。通过http body传入

排序:

参数 数据类型 是否必须 说明
ordering string
一般默认按id倒叙
  • ordering=id表示按id排序ordering=-id表示按id倒叙
  • 多个字段排序用半角逗号分隔

GET返回数据例子:

{
    "count": 2,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 4,
            "agent_id": "189191807",
            "corpid": "dingaenuaiz5naursp3h",
            "corpsecret": "Ys3yX5TkOFUgveiVYAMDYi33G5RbJmcGuh17HJ1RuaPuivYlEScXB-m3aoNru7",
            "name": "Alex钉钉账号"
        },
        {
            "id": 1,
            "agent_id": "123456",
            "corpid": "123",
            "corpsecret": "123456",
            "name": "test dingtalk"
        }
    ]
}

新增钉钉返回数据例子:

{
    "id": 1,
    "agent_id": "123456",
    "corpid": "123",
    "corpsecret": "123456",
    "name": "test dingtalk"
}
2、获取单个钉钉,修改钉钉、删除钉钉 API

请求方式: GET(查询) PUT(修改) PATCH(修改) DELETE(删除)

请求地址: /api/notification/dingtalk/1/

请求地址中1为钉钉的id

输入/输出参数: 见章节1中输入和输出参数说明,修改数据时输入参数均为非必须

返回数据例子:

{
    "id": 1,
    "agent_id": "123456",
    "corpid": "123",
    "corpsecret": "123456",
    "name": "test dingtalk"
}
Email设置
说明
  • 管理渠道设置中默认的邮件渠道,用于通知管理中通知渠道参数选择的默认值
1、email列表、新增email、批量删除email API

请求方式: GET(查询) POST(新增) DELETE(批量删除)

请求地址: /api/notification/email/

Content-Type:

新增数据的时候需要指定Content-Type,以下对Content-Type进行说明:

application/x-www-form-urlencoded —— 表示通过表单方式提交
application/json —— 表示传入数据为json格式字符串

查询参数:

参数 数据类型 是否必须 说明
offset int 数据起始位置
limit int 查询条数
name string email名称

输入参数(新增):

参数 数据类型 是否必须 说明
email_host string 邮件地址
email_port string 邮件端口
email_user string 用户名
email_password string 密码
email_tls int 是否使用tls
email_ssl int 是否使用ssl

输出参数:

参数 数据类型 是否必须 说明
id int email id
email_host string 邮件地址
email_port string 邮件端口
email_user string 用户名
email_password string 密码
email_tls int 是否使用tls
email_ssl int 是否使用ssl

批量删除参数:

参数 数据类型 是否必须 说明
pk string 与pk[]不能都为空 主键,多个主键用半角逗号隔开。通过http body传入
pk[] array 与pk不能都为空 主键数组。通过http body传入

排序:

参数 数据类型 是否必须 说明
ordering string
一般默认按id倒叙
  • ordering=id表示按id排序ordering=-id表示按id倒叙
  • 多个字段排序用半角逗号分隔

GET返回数据例子:

{
    "count": 3,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 3,
            "email_host": "test@shfanxi.com",
            "email_port": 465,
            "email_user": "研发",
            "email_password": "123456",
            "email_tls": 1,
            "email_ssl": 1,
            "name": "研发"
        },
        {
            "id": 2,
            "email_host": "test@shfanxi.com",
            "email_port": 465,
            "email_user": "测试",
            "email_password": "123456",
            "email_tls": 1,
            "email_ssl": 0,
            "name": "测试用户2"
        },
        {
            "id": 1,
            "email_host": "smtp.exmail.qq.com",
            "email_port": 465,
            "email_user": "jer@shfanxi.com",
            "email_password": "Chinastock@123",
            "email_tls": 1,
            "email_ssl": 0,
            "name": "测试用户"
        }
    ]
}

新增email返回数据例子:

{
    "id": 1,
    "email_host": "smtp.exmail.qq.com",
    "email_port": 465,
    "email_user": "jer@shfanxi.com",
    "email_password": "Chinastock@123",
    "email_tls": 1,
    "email_ssl": 0,
    "name": "测试用户"
}
2、获取单个email,修改email、删除email API

请求方式: GET(查询) PUT(修改) PATCH(修改) DELETE(删除)

请求地址: /api/notification/email/1/

请求地址中1为email的id

输入/输出参数: 见章节1中输入和输出参数说明,修改数据时输入参数均为非必须

返回数据例子:

{
        "id": 1,
        "email_host": "smtp.exmail.qq.com",
        "email_port": 465,
        "email_user": "jer@shfanxi.com",
        "email_password": "Chinastock@123",
        "email_tls": 1,
        "email_ssl": 0,
        "name": "测试用户"
}
企业微信设置
说明
  • 管理渠道设置中默认的企业微信渠道,用于通知管理中通知渠道参数选择的默认值
1、企业微信列表、新增企业微信、批量删除企业微信 API

请求方式: GET(查询) POST(新增) DELETE(批量删除)

请求地址: /api/notification/qiye/weixin/settings/

Content-Type:

新增数据的时候需要指定Content-Type,以下对Content-Type进行说明:

application/x-www-form-urlencoded —— 表示通过表单方式提交
application/json —— 表示传入数据为json格式字符串

查询参数:

参数 数据类型 是否必须 说明
offset int 数据起始位置
limit int 查询条数
name string 企业微信名称

输入参数(新增):

参数 数据类型 是否必须 说明
name string 企业微信名称
agent_id string AgentId
corpid string CorpId
corpsecret string CorpSecret

输出参数:

参数 数据类型 是否必须 说明
id int 企业微信 id
name string 企业微信名称
agent_id string AgentId
corpid string CorpId
corpsecret string CorpSecret

批量删除参数:

参数 数据类型 是否必须 说明
pk string 与pk[]不能都为空 主键,多个主键用半角逗号隔开。通过http body传入
pk[] array 与pk不能都为空 主键数组。通过http body传入

排序:

参数 数据类型 是否必须 说明
ordering string
一般默认按id倒叙
  • ordering=id表示按id排序ordering=-id表示按id倒叙
  • 多个字段排序用半角逗号分隔

GET返回数据例子:

{
    "count": 1,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 3,
            "agent_id": "1000002",
            "corpid": "ww933a1369a610e7",
            "corpsecret": "aKuh1XG7zpzaggj22XJvyfKK7Grc3YzYUZlbgE",
            "name": "测试企业微信"
        }
    ]
}

新增企业微信返回数据例子:

{
    "id": 3,
    "agent_id": "1000002",
    "corpid": "ww933a1369a610e7",
    "corpsecret": "aKuh1XG7zpzaggj22XJvyfKK7Grc3YzYUZlbgE",
    "name": "测试企业微信"
}
2、获取单个企业微信,修改企业微信、删除企业微信 API

请求方式: GET(查询) PUT(修改) PATCH(修改) DELETE(删除)

请求地址: /api/notification/qiye/weixin/settings/3/

请求地址中3为企业微信的id

输入/输出参数: 见章节1中输入和输出参数说明,修改数据时输入参数均为非必须

返回数据例子:

{
    "id": 3,
    "agent_id": "1000002",
    "corpid": "ww933a1369a610e7",
    "corpsecret": "aKuh1XG7zpzaggj22XJvyfKK7Grc3YzYUZlbgE",
    "name": "测试企业微信"
}
通知管理
说明
  • 管理通知管理中默认的通知,用于选择通知方式时选择的默认值
1、通知列表、新增通知、批量删除通知 API

请求方式: GET(查询) POST(新增) DELETE(批量删除)

请求地址: /api/notification/notification/

Content-Type:

新增数据的时候需要指定Content-Type,以下对Content-Type进行说明:

application/x-www-form-urlencoded —— 表示通过表单方式提交
application/json —— 表示传入数据为json格式字符串

查询参数:

参数 数据类型 是否必须 说明
offset int 数据起始位置
limit int 查询条数
name string 通知名称
search string 模糊查询,查询字段为name

输入参数(新增):

参数 数据类型 是否必须 说明
name string 通知名称
channel string 渠道类型
channel_name string 渠道类型中文名称
description string 描述
channel_id int 通知渠道
channel_type_name string 通知渠道中文名称
target_list string 通知目标

输出参数:

参数 数据类型 是否必须 说明
id int 通知id
name string 通知名称
channel string 渠道类型
channel_name string 渠道类型中文名称
description string 描述
channel_id int 通知渠道
channel_type_name string 通知渠道中文名称
target_list string 通知目标

批量删除参数:

参数 数据类型 是否必须 说明
pk string 与pk[]不能都为空 主键,多个主键用半角逗号隔开。通过http body传入
pk[] array 与pk不能都为空 主键数组。通过http body传入

排序:

参数 数据类型 是否必须 说明
ordering string
一般默认按id倒叙
  • ordering=id表示按id排序ordering=-id表示按id倒叙
  • 多个字段排序用半角逗号分隔

GET返回数据例子:

{
    "count": 9,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 12,
            "name": "notification weixin",
            "channel": "QiYeWeiXin",
            "description": "",
            "target_list": "admin@shfanxi.com",
            "channel_name": "企业微信",
            "channel_id": 2,
            "channel_type_name": "Alex企业微信"
        },
        {
            "id": 11,
            "name": "notification dingtalk",
            "channel": "DingTalk",
            "description": "",
            "target_list": "admin@shfanxi,com",
            "channel_name": "钉钉",
            "channel_id": 4,
            "channel_type_name": "Alex钉钉账号"
        },
        {
            "id": 10,
            "name": "notification",
            "channel": "Email",
            "description": "",
            "target_list": "admin@shfanxi.com",
            "channel_name": "邮件",
            "channel_id": 3,
            "channel_type_name": "研发"
        },
        {
            "id": 8,
            "name": "企业微信通知",
            "channel": "QiYeWeiXin",
            "description": "",
            "target_list": "ChenShaong\r\nCenCeng",
            "channel_name": "企业微信",
            "channel_id": 2,
            "channel_type_name": "Alex企业微信"
        },
        {
            "id": 7,
            "name": "钉钉通知",
            "channel": "DingTalk",
            "description": "",
            "target_list": "0217301181107\r\n06401815301228434",
            "channel_name": "钉钉",
            "channel_id": 4,
            "channel_type_name": "Alex钉钉账号"
        },
        {
            "id": 1,
            "name": "测试通知",
            "channel": "Email",
            "description": "",
            "target_list": "31915580@qq.com\r\nalex@shfanxi.com",
            "channel_name": "邮件",
            "channel_id": 1,
            "channel_type_name": "测试用户"
        }
    ]
}

新增通知返回数据例子:

{
    "id": 1,
    "name": "测试通知",
    "channel": "Email",
    "description": "",
    "target_list": "31915580@qq.com\r\nalex@shfanxi.com",
    "channel_name": "邮件",
    "channel_id": 1,
    "channel_type_name": "测试用户"
}
2、获取单个通知,修改通知、删除通知 API

请求方式: GET(查询) PUT(修改) PATCH(修改) DELETE(删除)

请求地址: /api/notification/notification/1/

请求地址中1为通知的id

输入/输出参数: 见章节1中输入和输出参数说明,修改数据时输入参数均为非必须

返回数据例子:

{
    "id": 1,
    "name": "测试通知",
    "channel": "Email",
    "description": "",
    "target_list": "31915580@qq.com\r\nalex@shfanxi.com",
    "channel_name": "邮件",
    "channel_id": 1,
    "channel_type_name": "测试用户"
}

系统管理

作业设置
说明
  • 管理作业存放的目录、作业超时时间、作业无响应时间和作业保存天数
1、作业列表、新增作业、批量删除作业 API

请求方式: GET(查询) POST(新增) DELETE(批量删除)

请求地址: /api/system/system/jobsettings/

Content-Type:

新增数据的时候需要指定Content-Type,以下对Content-Type进行说明:

application/x-www-form-urlencoded —— 表示通过表单方式提交
application/json —— 表示传入数据为json格式字符串

输入参数(新增):

参数 数据类型 是否必须 说明
workspace string 工作目录
job_timeout int 作业超时时间(秒):0表示不超时
idle_timeout int 作业无响应时间(秒):0表示不超时
keep_days int 日志保存天数(0表示不清理)
project_id int 项目ID

输出参数:

参数 数据类型 是否必须 说明
id int 作业 id
workspace string 工作目录
job_timeout int 作业超时时间(秒):0表示不超时
idle_timeout int 作业无响应时间(秒):0表示不超时
keep_days int 日志保存天数(0表示不清理)
project_id int 项目ID

批量删除参数:

参数 数据类型 是否必须 说明
pk string 与pk[]不能都为空 主键,多个主键用半角逗号隔开。通过http body传入
pk[] array 与pk不能都为空 主键数组。通过http body传入

排序:

参数 数据类型 是否必须 说明
ordering string
一般默认按id倒叙
  • ordering=id表示按id排序ordering=-id表示按id倒叙
  • 多个字段排序用半角逗号分隔

GET返回数据例子:

{
    "count": 1,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 4,
            "workspace": "/tmp",
            "job_timeout": 0,
            "idle_timeout": 30,
            "keep_days": 1,
            "project_id": 3
        }
    ]
}

新增作业返回数据例子:

{
    "id": 4,
    "workspace": "/tmp",
    "job_timeout": 0,
    "idle_timeout": 30,
    "keep_days": 1,
    "project_id": 3
}
2、获取单个作业,修改作业、删除作业 API

请求方式: GET(查询) PUT(修改) PATCH(修改) DELETE(删除)

请求地址: /api/system/system/jobsettings/4/

请求地址中4为作业的id

输入/输出参数: 见章节1中输入和输出参数说明,修改数据时输入参数均为非必须

返回数据例子:

{
    "id": 4,
    "workspace": "/tmp",
    "job_timeout": 0,
    "idle_timeout": 30,
    "keep_days": 1,
    "project_id": 3
}
环境变量
说明
  • 管理环境变量的变量值
1、环境变量列表、新增环境变量、批量删除环境变量 API

请求方式: GET(查询) POST(新增) DELETE(批量删除)

请求地址: /api/system/system/environment/variable/

Content-Type:

新增数据的时候需要指定Content-Type,以下对Content-Type进行说明:

application/x-www-form-urlencoded —— 表示通过表单方式提交
application/json —— 表示传入数据为json格式字符串

查询参数:

参数 数据类型 是否必须 说明
offset int 数据起始位置
limit int 查询条数
name string 变量名称
search string 模糊查询,查询字段为name

输入参数(新增):

参数 数据类型 是否必须 说明
name string 变量名称
value string 变量值
remark string 备注

输出参数:

参数 数据类型 是否必须 说明
id int 环境变量 id
name string 变量名称
value string 变量值
remark string 备注

批量删除参数:

参数 数据类型 是否必须 说明
pk string 与pk[]不能都为空 主键,多个主键用半角逗号隔开。通过http body传入
pk[] array 与pk不能都为空 主键数组。通过http body传入

排序:

参数 数据类型 是否必须 说明
ordering string
一般默认按id倒叙
  • ordering=id表示按id排序ordering=-id表示按id倒叙
  • 多个字段排序用半角逗号分隔

GET返回数据例子:

{
    "count": 5,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 5,
            "name": "22",
            "value": "",
            "remark": ""
        },
        {
            "id": 1,
            "name": "权重测试1",
            "value": "3",
            "remark": "a"
        }
    ]
}

新增环境变量返回数据例子:

{
    "id": 1,
    "name": "权重测试1",
    "value": "3",
    "remark": "a"
}
2、获取单个环境变量,修改环境变量、删除环境变量 API

请求方式: GET(查询) PUT(修改) PATCH(修改) DELETE(删除)

请求地址: /api/system/system/environment/variable/1/

请求地址中1为环境变量的id

输入/输出参数: 见章节1中输入和输出参数说明,修改数据时输入参数均为非必须

返回数据例子:

{
    "id": 1,
    "name": "权重测试1",
    "value": "3",
    "remark": "a"
}
团队管理
说明
  • 管理授权权限时默认的团队,用于授权团队中团队名称参数选择的默认值
1、团队列表、新增团队、批量删除团队 API

请求方式: GET(查询) POST(新增) DELETE(批量删除)

请求地址: /api/system/team/

Content-Type:

新增数据的时候需要指定Content-Type,以下对Content-Type进行说明:

application/x-www-form-urlencoded —— 表示通过表单方式提交
application/json —— 表示传入数据为json格式字符串

查询参数:

参数 数据类型 是否必须 说明
offset int 数据起始位置
limit int 查询条数
name string 团队名称
search string 模糊查询,查询字段为name和description

输入参数(新增):

参数 数据类型 是否必须 说明
name string 团队名称
description string 描述
username string 用户名
last_name string 名称

输出参数:

参数 数据类型 是否必须 说明
id int 团队id
name string 团队名称
description string 描述
username string 用户名
last_name string 名称

批量删除参数:

参数 数据类型 是否必须 说明
pk string 与pk[]不能都为空 主键,多个主键用半角逗号隔开。通过http body传入
pk[] array 与pk不能都为空 主键数组。通过http body传入

排序:

参数 数据类型 是否必须 说明
ordering string 一般默认按id倒叙 - ordering=id表示按id排序ordering=-id表示按id倒叙 - 多个字段排序用半角逗号分隔

GET返回数据例子:

{
     "count": 1,
     "next": null,
     "previous": null,
     "results": [
         {
             "id": 1,
             "name": "测试组",
             "description": "测试团队所有成员",
             "users": [
                 {
                     "username": 1,
                     "last_name": "David"
                 },
                 {
                     "username": 5,
                     "last_name": "Mary"
                 }
             ]
         }
     ]
 }

新增团队返回数据例子:

{
    "count": 1,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 1,
            "name": "测试组",
            "description": "测试团队所有成员",
            "users": [
                {
                    "username": 1,
                    "last_name": "David"
                },
                {
                    "username": 5,
                    "last_name": "Mary"
                }
            ]
        }
    ]
}
2、获取单个团队,修改团队、删除团队 API

请求方式: GET(查询) PUT(修改) PATCH(修改) DELETE(删除)

请求地址: /api/system/team/1/

请求地址中1为团队的id

输入/输出参数: 见章节1中输入和输出参数说明,修改数据时输入参数均为非必须

返回数据例子:

{
    "count": 1,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 1,
            "name": "测试组",
            "description": "测试团队所有成员",
            "users": [
                {
                    "username": 1,
                    "last_name": "David"
                },
                {
                    "username": 5,
                    "last_name": "Mary"
                }
            ]
        }
    ]
}
团队成员
说明
  • 管理团队管理中默认的成员,用于团队中团队成员参数选择的默认值
1、团队成员列表、新增团队成员 API

请求方式: GET(查询) POST(新增) DELETE(批量删除)

请求地址: /api/system/team/users/

Content-Type:

新增数据的时候需要指定Content-Type,以下对Content-Type进行说明:

application/x-www-form-urlencoded —— 表示通过表单方式提交
application/json —— 表示传入数据为json格式字符串

查询参数:

参数 数据类型 是否必须 说明
offset int 数据起始位置
limit int 查询条数
username string 团队成员
search string 模糊查询,查询字段为team和username

输入参数(新增):

参数 数据类型 是否必须 说明
username string 团队成员
last_name string 团队成员姓名
team int 团队名称
team_name string 团队名称中文名

输出参数:

参数 数据类型 是否必须 说明
id int 团队成员id
username string 团队成员
last_name string 团队成员姓名
team int 团队名称
team_name string 团队名称中文名

批量删除参数:

参数 数据类型 是否必须 说明
pk string 与pk[]不能都为空 主键,多个主键用半角逗号隔开。通过http body传入
pk[] array 与pk不能都为空 主键数组。通过http body传入

排序:

参数 数据类型 是否必须 说明
ordering string
一般默认按id倒叙
  • ordering=id表示按id排序ordering=-id表示按id倒叙
  • 多个字段排序用半角逗号分隔

GET返回数据例子:

{
    "count": 4,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 12,
            "username": 8,
            "team": 1,
            "last_name": "James",
            "team_name": "测试组"
        },
        {
            "id": 11,
            "username": 6,
            "team": 1,
            "last_name": "Kelly",
            "team_name": "测试组"
        },
        {
            "id": 10,
            "username": 5,
            "team": 1,
            "last_name": "Mary",
            "team_name": "测试组"
        },
        {
            "id": 9,
            "username": 1,
            "team": 1,
            "last_name": "David",
            "team_name": "测试组"
        }
    ]
}

新增团队成员返回数据例子:

{
    "id": 9,
    "username": 1,
    "team": 1,
    "last_name": "David",
    "team_name": "测试组"
}
2、获取单个团队成员,修改团队成员、删除团队成员 API

请求方式: GET(查询) PUT(修改) PATCH(修改) DELETE(删除)

请求地址: /api/system/team/users/9/

请求地址中9为团队成员的id

输入/输出参数: 见章节1中输入和输出参数说明,修改数据时输入参数均为非必须

返回数据例子:

{
    "id": 9,
    "username": 1,
    "team": 1,
    "last_name": "David",
    "team_name": "测试组"
}
模块管理
说明
  • 管理作业中默认的模块,用于批量命令中模块参数选择的默认值
1、模块管理列表、新增模块管理、批量删除模块管理 API

请求方式: GET(查询) POST(新增) DELETE(批量删除)

请求地址: /api/system/system/module/

Content-Type:

新增数据的时候需要指定Content-Type,以下对Content-Type进行说明:

application/x-www-form-urlencoded —— 表示通过表单方式提交
application/json —— 表示传入数据为json格式字符串

查询参数:

参数 数据类型 是否必须 说明
offset int 数据起始位置
limit int 查询条数
name string 模块名称
search string 模糊查询,查询字段为name和comment

输入参数(新增):

参数 数据类型 是否必须 说明
name string 模块名称
weight int 权重
comment string 模块描述

输出参数:

参数 数据类型 是否必须 说明
id int 模块id
name string 模块名称
weight int 权重
comment string 模块描述

批量删除参数:

参数 数据类型 是否必须 说明
pk string 与pk[]不能都为空 主键,多个主键用半角逗号隔开。通过http body传入
pk[] array 与pk不能都为空 主键数组。通过http body传入

排序:

参数 数据类型 是否必须 说明
ordering string
一般默认按id倒叙
  • ordering=id表示按id排序ordering=-id表示按id倒叙
  • 多个字段排序用半角逗号分隔

GET返回数据例子:

{
    "count": 13,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 1,
            "name": "command",
            "weight": 0,
            "comment": "命令"
        },
        {
            "id": 2,
            "name": "yum",
            "weight": 0,
            "comment": "使用yum包管理工具管理Rad Hat上的包"
        },
        {
            "id": 3,
            "name": "pip",
            "weight": 0,
            "comment": "试用pip管理python依赖库"
        },
        {
            "id": 4,
            "name": "service",
            "weight": 0,
            "comment": "服务管理"
        },
        {
            "id": 5,
            "name": "copy",
            "weight": 0,
            "comment": "将文件复制到远程节点上"
        },
        {
            "id": 6,
            "name": "file",
            "weight": 0,
            "comment": "设置文件或者文件夹属性"
        },
        {
            "id": 7,
            "name": "script",
            "weight": 0,
            "comment": "将本地脚本传输到远程节点上运行"
        },
        {
            "id": 8,
            "name": "user",
            "weight": 0,
            "comment": "管理用户账户"
        },
        {
            "id": 9,
            "name": "group",
            "weight": 0,
            "comment": "添加或删除GROUP"
        },
        {
            "id": 10,
            "name": "template",
            "weight": 0,
            "comment": "将模板文件传输到远程服务器"
        },
        {
            "id": 11,
            "name": "unarchive",
            "weight": 0,
            "comment": "解压文件、复制到远程服务器上"
        },
        {
            "id": 12,
            "name": "mysql_db",
            "weight": 0,
            "comment": "管理MySQL数据库,创建或删除用户、数据库、导入表等"
        },
        {
            "id": 14,
            "name": "shell",
            "weight": 0,
            "comment": "命令"
        }
    ]
}

新增模块管理返回数据例子:

{
    "id": 1,
    "name": "command",
    "weight": 0,
    "comment": "命令"
}
2、获取单个模块管理,修改模块管理、删除模块管理 API

请求方式: GET(查询) PUT(修改) PATCH(修改) DELETE(删除)

请求地址: /api/system/system/module/1/

请求地址中1为模块管理的id

输入/输出参数: 见章节1中输入和输出参数说明,修改数据时输入参数均为非必须

返回数据例子:

{
    "id": 1,
    "name": "command",
    "weight": 0,
    "comment": "命令"
}
Tag管理
说明
  • 管理playbook中默认的tag,用于作业模板中tags参数和skip_tags参数选择的默认值
1、tag列表、新增tag、批量删除tag API

请求方式: GET(查询) POST(新增) DELETE(批量删除)

请求地址: /api/system/tag/

Content-Type:

新增数据的时候需要指定Content-Type,以下对Content-Type进行说明:

application/x-www-form-urlencoded —— 表示通过表单方式提交
application/json —— 表示传入数据为json格式字符串

查询参数:

参数 数据类型 是否必须 说明
offset int 数据起始位置
limit int 查询条数
tag string tag名
search string 模糊查询,查询字段为tag和comment

输入参数(新增):

参数 数据类型 是否必须 说明
tag string tag名
weight int 权重,默认为0,默认按权重由大到小排序
comment string 描述

输出参数:

参数 数据类型 是否必须 说明
id int tag id
tag string tag名
weight int 权重,默认为0,权重大的排在前面
comment string 描述

批量删除参数:

参数 数据类型 是否必须 说明
pk string 与pk[]不能都为空 主键,多个主键用半角逗号隔开。通过http body传入
pk[] array 与pk不能都为空 主键数组。通过http body传入

排序:

参数 数据类型 是否必须 说明
ordering string
一般默认按id倒叙
  • ordering=id表示按id排序ordering=-id表示按id倒叙
  • 多个字段排序用半角逗号分隔

GET返回数据例子:

{
 "count": 6,
 "next": null,
 "previous": null,
 "results": [
     {
         "id": 2,
         "tag": "tomcat",
         "weight": 1,
         "comment": "tomcat"
     },
     {
         "id": 3,
         "tag": "git",
         "weight": 0,
         "comment": ""
     },
     {
         "id": 4,
         "tag": "nginx",
         "weight": 0,
         "comment": ""
     },
     {
         "id": 5,
         "tag": "dubbo",
         "weight": 0,
         "comment": ""
     },
     {
         "id": 6,
         "tag": "spark",
         "weight": 0,
         "comment": ""
     },
     {
         "id": 7,
         "tag": "zookeeper",
         "weight": 0,
         "comment": ""
     }
 ]
}

新增Tag返回数据例子:

{
 "id": 2,
 "tag": "tomcat",
 "weight": 1,
 "comment": "tomcat"
}
2、获取单个tag,修改tag、删除tag API

请求方式: GET(查询) PUT(修改) PATCH(修改) DELETE(删除)

请求地址: /api/system/tag/2/

请求地址中2为tag的id

输入/输出参数: 见章节1中输入和输出参数说明,修改数据时输入参数均为非必须

返回数据例子:

{
 "id": 2,
 "tag": "tomcat",
 "weight": 1,
 "comment": "tomcat"
}

问题解答

安装配置问题

安装过程常见问题

使用问题

使用问题

其他问题

其他问题

更新日志

2.5

发布日期:

2020年3月24号

新增功能:

  • 一致性检测模板,对主机、硬件、软件进行检测获取重要指标
  • 主机清单和模板增加一致性检测

优化功能:

  • 对接CAS服务
  • 工作流作业会生成自己的节点,工作流模板修改之后保留原工作流的执行内容
  • logo替换

Bug修复:

  • 搜索栏悬浮的时候在某些场景下会一直跳动
  • 搜索栏悬浮的时候表格位置不对会遮盖部分数据
  • 工作流设计页面节点拖拽进来后位置不对

升级依赖:

  • 从2.4版本升级到2.5需要升级数据库,数据库升级文件为opsgrat项目目录下docs/version2.5.sql,从更早版本升级需要升级对应版本的数据库
  • python依赖包:
1、django-cas-ng

2.4.2

发布日期:

2020年1月7号

问题修复:

  • 只有一级的菜单选中不会变成蓝色问题修复

2.4.1

发布日期:

2019年12月19号

新增功能:

  • 工作流可以从某个节点开始执行,不必每次从头执行到尾
  • 工作流可以从某个节点重新执行

优化功能:

  • 工作流编辑页面两侧可以点击收
  • 工作流编辑页面点击节点编辑按钮可以将缩进去的表单展示出来
  • 工作流作业日志页面样式修改
  • API文档补全

Bug修复:

  • 页面重复引用部分js和css问题修复
  • 高级搜索栏在一些场景下悬浮功能会不断跳动的bug修复
  • 工作流节点位置显示偏差的问题修复
  • 工作流编辑页面节点表单模板类型与模板下拉框无法二级联动bug修复

2.4

发布日期:

2019年12月6号

新增功能:

  • 新增新手引导:用户首次登录系统右上方会出现蓝色闪烁样式引导用户使用新手引导
  • 增加意见反馈功能,用户可以将意见反馈提交到官网后台
  • 增加取消运行中的作业功能
  • 主机清单、分组、主机页面增加刷新状态功能,点击可以刷新主机的连接状态
  • 主机页面点击主机名可以打开该主机清单的当前主机执行的作业页面
  • 主机清单分组、主机页面增加快速启用/禁用功能

改进优化:

  • 工作流编辑页面样式优化
  • 工作流作业日志页面动态刷新不reload整个页面
  • 计划任务执行时间、结束时间显示优化
  • 不展示间隔时间、间隔类型、cron等字段,增加显示模板类型字段
  • 主机来源页面展示逻辑优化
  • 给分组添加自分组页面过滤分组自身和所有父分组
  • 添加子分组选择页面增加搜索栏
  • 多个错误提示弹窗合并成一个
  • 添加来源页面,已输入内容关闭或取消后内容清空
  • 添加主机清单中添加凭据步骤,“使用”按钮不弹出二次确认
  • 主机清单编辑模态框增加凭据选择
  • 添加主机清单流程,添加凭据步骤中,凭据列表页面增加修改凭据功能
  • 添加凭据步骤新增取消按钮
  • 主机页面新增高级筛选,可以根据主机状态多选
  • 分组和主机页面点击状态按钮跳转到主机列表页面,根据状态筛选对应的主机
  • 主机列表页面在主机名前面新增主机清单和分组字段
  • 主机列表页面新增按分组高级筛选
  • 首页增加面包屑导航
  • 错误主机页面增加面包屑导航和搜索栏,可以按主机清单和分组筛选
  • 错误主机页面“主机名称”之前增加“主机清单”、“分组”字段
  • 工作流连线上的运行结果选择改成多选
  • 模板通知设置的运行结果选择改成多选
  • Dashboard和首页趋势图x轴日期只显示月和日
  • 柱状图x轴模板名称45度倾斜显示,最多展示9个字符
  • License页面UI优化
  • 作业列表api改成可以传入is_job_none参数判断筛选job_id字段为空的数据
  • playbook执行、快速命令、新增和修改模板页面字段顺序调整,并且选择主机清单后可以自动带出该主机清单的凭据
  • 页面上所有“外部参数”都改成“额外变量”
  • 主机清单、分组、主机中的“参数”都改成对应的“xx变量”
  • 模板通知设置页面增加运行结果筛选

Bug修复:

  • 进入主机清单列表中,路线显示不正确,且不能点击跳转问题修复
  • hostname前后去空格
  • 作业设置页面中“项目名称”改成单选
  • 添加主机清单页面面包屑导航距离下方的像素不对的问题修复
  • 模板通知设置页面风格统一成和现在的一样
  • 团队管理,团队成员icon改成多个用户的icon
  • 项目管理授权页面和主机清单授权页面去掉上方的“/”

升级依赖:

  • 从2.3版本升级到2.4需要升级数据库,数据库升级文件为opsgrat项目目录下docs/version2.4.sql,从更早版本升级需要升级对应版本的数据库

2.3.4

发布日期:

2019年11月25号

Bug修复:

  • 作业设置页面项目名称改成非必输
  • 主机清单新增页面,数据校验不通过刷新页面导致填写数据丢失问题解决
  • yaml格式字段验证错误返回内容增加返回字段名称

2.3.3

发布日期:

2019年11月12号

新增功能:

  • 右上角用户名称下拉菜单增加icon和显示系统当前版本菜单

2.3.2

发布日期:

2019年11月12号

Bug修复:

  • License导入页面报错的问题修复

功能改进:

  • Windows AD配置由settings.py文件中增加配置改成从sso api中读取ldap类型来判断动态添加配置

2.3.1

发布日期:

2019年11月6号

Bug修复:

  • 右侧菜单栏无法上下滚动的问题修复
  • 首页数字栏查询作业数据错误问题修复
  • 环境变量管理无法修改数据问题修复

2.3

发布日期:

2019年11月1号

新增功能:

  • 增加语音交互,可以通过语音搜索模板并通过确认命令执行对应模板
  • 首页数字栏位点击可以跳转到对应的页面
  • 增加多级面包屑导航
  • 工作流支持节点分支,即一个节点作业执行完成后可以并发执行多个其他作业
  • 工作流节点支持分支合并,即一个节点是否执行依赖前面多个节点的执行结果
  • 增加环境变量管理,作业执行的时候可以读取用户在系统中设置的环境变量

改进功能:

  • 散点图时间跨度改成前后1个小时,中间的时间线改成文本改为“现在”
  • 作业次数统计增加开始日期、结束日期以及主机清单筛选
  • 作业次数统计页面“作业每天执行次数图表”文本改成“作业趋势”,作业趋势图增加每天执行作业总次数
  • 作业成功率图表,当然如果没有执行任务成功率改成显示100%
  • 模板排名统计页面增加筛选条件(同作业次数统计页面)
  • 高级筛选框增加页面下拉的时候悬浮功能
  • 凭据管理、项目管理、主机清单、模板管理、工作流管理、计划任务等页面单条数据授权功能交互改成弹出模态框而不是打开新的页面
  • 团队管理页面修改团队模态框改成不能修改改成员,操作列后面增加成员管理,可以弹出模态框展示该团队成员列表并可以对成员进行增、删、改、查
  • 所有页面的表格上的操作按钮改成居左显示
  • OpsGrat不连接SSO数据库,使用自己的用户表
  • 登录认证和API Token认证使用SSO API获取用户信息并更新本地用户数据

Bug修复:

  • 首页操作日志列表多次点击右侧向上按钮翻页会出现空白内容的问题修复
  • 模板新增/修改页面、快速命令、Playbook执行等页面上方操作按钮不会悬浮的bug修复
  • 主机清单管理为分组添加自分组会导致分组错乱的问题修复
  • 主机清单分组页面没有添加主机按钮问题修复

升级依赖:

  • 从2.2版本升级到2.3需要升级数据库,数据库升级文件为opsgrat项目目录下docs/version2.3.sql,从更早版本升级需要升级对应版本的数据库
  • python依赖包:
1、dwebsocket
2、eventlet
3、gevent
4、websocket-client
5、alibabacloud-nls-python-sdk:安装方式见官方文档(https://help.aliyun.com/document_detail/120698.html?spm=a2c4g.11174283.6.577.19d87275ZKeKal)

2.2.1

发布日期:

2019年10月21号

Bug修复:

  • 执行作业的时候会获取禁用的主机bug修复
  • 创建主机清单结果页面单个主机刷新不会停止bug修复
  • 部分页面输入框没有提示信息修复
  • 凭据管理多出执行权限问题修复
  • 授权功能按钮名称显示错误bug修复
  • 项目管理查询少掉一个项目bug修复
  • 作业日志页面执行人不现实bug修复
  • 登录页面移动端下样式错乱bug修复
  • 作业日志页面在部分浏览器下报错的问题修复
  • 作业日志“重试按钮”在部分浏览器下无法显示的问题修复
  • 凭据管理页面操作列缺少权限管理按钮的问题修复

2.2

发布日期:

2019年9月23号

新增功能:

  • 首页增加最近执行作业和即将执行作业散点图
  • 首页增加用户最新操作日志
  • 作业统计页面下方增加成功率趋势图
  • 模板排名统计页面下方增加错误模板排名柱状图
  • 主机清单增加凭据选择,可以指定该主机清单所使用的凭据

系统优化:

  • 总体UI样式和页面布局优化
  • 采用新的输入框和搜索组件
  • 首页布局优化
  • 创建主机清单交互流程修改,改成安步骤引导的方式,减少学习成本
  • 工作流作业的流程图增加定时刷新
  • 凭据管理中凭据类型和凭据名称优化
  • 部分菜单名称改进

升级依赖:

  • 从2.1版本升级到2.2需要升级数据库,数据库升级文件为opsgrat项目目录下docs/version2.2.sql

2.1

发布日期:

2019年8月23号

新增功能:

  • 通知管理增加自定义通知内容,自定义通知内容支持jinja2模板引擎
  • 项目管理支持本地项目:项目管理除了可以从GitLab和SVN拉取Playbook之外还可以从本机项目目录中读取
  • 作业管理增加失败主机重试功能

升级依赖:

  • 从2.0版本升级到2.1需要升级数据库,数据库升级文件为opsgrat项目目录下docs/version2.1.sql