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
六、导入License¶
打开OpsGrat:http://ip:8000/ (将ip替换为opsgrat服务器的ip地址)
第一次进入OpsGrat页面如下:

点击“导入”按钮,选择License文件导入License

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默认配置如下图所示:

字段含义:
字段 | 数据类型 | 是否必须 | 说明 |
DB_NAME | String | 是 | OpsGrat数据库名称 |
DB_USER | String | 是 | OpsGrat数据库用户账号名 |
DB_PASSWORD | String | 是 | OpsGrat数据库密码 |
DB_HOST | String | 是 | OpsGrat数据库主机名、ip地址或域名 |
DB_PORT | String | 是 | OpsGrat数据库端口 |
REDIS: | Dict | 是 | Redis配置 |
|
String | 是 | Redis主机名、ip或域名 |
|
String | 是 | Redis端口 |
|
String | 否 | Redis密码 |
RABBIT_MQ: | Dict | 是 | Rabbitmq配置 |
|
String | 否 | RABBIT_MQ主机名、ip或域名,空表示使用redis |
|
String | 否 | RABBIT_MQ端口 |
|
String | 否 | RABBIT_MQ用户名 |
|
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默认配置如下图所示:

字段含义:
字段 | 数据类型 | 是否必须 | 说明 |
DB_NAME | String | 是 | SSO数据库名称 |
DB_USER | String | 是 | SSO数据库用户账号名 |
DB_PASSWORD | String | 是 | SSO数据库密码 |
DB_HOST | String | 是 | SSO数据库主机名、ip地址或域名 |
DB_PORT | String | 是 | SSO数据库端口 |
REDIS: | Dict | 是 | Redis配置 |
|
String | 是 | Redis主机名、ip或域名 |
|
String | 是 | Redis端口 |
|
String | 否 | Redis密码 |
RABBIT_MQ: | Dict | 是 | Rabbitmq配置 |
|
String | 否 | RABBIT_MQ主机名、ip或域名,空表示使用redis |
|
String | 否 | RABBIT_MQ端口 |
|
String | 否 | RABBIT_MQ用户名 |
|
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

点击页面左侧菜单栏中“菜单管理”下的“子系统管理”进入子系统管理页面
修改OpsGrat和SSO的路径,改成实际的访问路径

1.3 opsgrat导入License¶
点击左上角opsgrat图标,进入opsgrat系统
如果未导入License,会自动进入License导入界面

点击导入按钮,导入申请时,通过邮件获取的License.txt文件

1.4 添加用户¶
点击“用户管理”下的“用户管理”菜单,进入用户管理页面。
如果配置了ldap则在“新增”按钮后面会有一个“AD”按钮,如下图。点击“AD”按钮会从ldap获取用户
如果没有配置ldap则需要手工为自己添加用户,是否管理员设置为“是”
然后使用新的用户重新登录SSO

点击“新增”按钮,新增一个deploy用户

退出登录,使用deploy用户进行操作

二、资源管理¶
三、通知管理¶
四、模板管理¶
4.1 添加作业模板¶
点击左侧菜单“模板管理”下的“作业模板”菜单

点击“新增”按钮,添加作业模板

假设添加的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需要的参数,如:

Dashboard¶
一、仪表图查看¶
1.1 仪表图查看¶
打开Opsgrat,点击页面左侧菜单栏中“首页”进入仪表盘查看页面,
在该页面最上方可以查看正在运行的作业、失败的作业、即将运行作业、和错误主机的数量,
其次可以看到操作日志,可以自己切换的每日或每周的作业趋势图,
以及可以看到作业任务的散点图和最后面的今日作业。

1.2 作业次数统计图查看¶
打开Opsgrat,点击页面左侧菜单栏中“Dashboard”下的“作业次数统计”进入作业次数统计查看页面,
在该页面可以查看作业趋势图,成功次数、失败次数和总次数的详情情况,
其次可以查看作业执行的成功率情况。

1.3 模板排名统计图查看¶
打开Opsgrat,点击页面左侧菜单栏中“Dashboard”下的“模板排名统计”进入模板排名统计查看页面,
在该页面可以查看模板执行次数前十的模板名称以及数量,
其次可以查看模板执行时间前十的模板名称以及时间,
以及可以查看模板错误次数前十的模板名称以及数量。

自动化管理¶
一、作业管理¶
点击左侧菜单“自动化管理”下的“作业管理菜单”

点击上方的内容筛选框,可以根据模糊搜索、模板、主机清单、凭据进行查询并返回结果,也可以点击旁边的高级筛选条件进行搜索查询。

点击操作框内的日志查看按钮

跳转到该作业的日志页面、左边部分显示该作业的信息、右边部分显示日志信息

点击操作框内的执行按钮

提示确认信息,确认后执行命令,跳转到该作业的日志页面


点击操作框内的删除按钮,可以删除当前行数据

提示确认信息,确认后进行数据删除


点击右上角的列显示状态按钮下拉菜单,并点击要隐藏或者展示的列来获取相应列的信息


选择一个模板的作业类型为工作流的作业,点击执行按钮,跳转到工作流图形页面
展示该工作流模板的流程图下的各个节点运行状态,可以根据右侧的状态信息进行了解

在展示的流程图形页面可以点击节点上的查看按钮,会跳转到该节点下的模板任务执行情况


模板类型为工作流的模板可以点击前面的加号,会展示出该ID下的子作业数据。


同时可以对子作业进行执行、查看、删除等操作,功能与前面所介绍的类似。
说明:1、当作业类型为自动化作业或者命令,点击执行按钮跳转到作业日志页面
2、当作业类型为工作流,点击执行按钮跳转到工作流程图形页面
对应页面如下如:




二、快速命令¶
点击左侧菜单“自动化管理”下的“快速命令菜单”

添加相应的数据(像模块、登录凭据(ssh)、主机清单等下拉框值均要在相应的页面进行新增数据才可显示)具体情况如下图:
点击左侧菜单“系统管理”下的“Ansible模块”、在此页面进行新增需要的模块。

点击左侧菜单“资源管理”下的“凭据管理”、在此页面进行新增需要的凭据。

点击左侧菜单“资源管理”下的“主机清单”、在此页面进行新增需要的主机清单(详细步骤已在介绍主机清单说明)。

最后添加数据,并点击右上角的执行命令按钮,页面进行跳转。

该批量命令会跳转到该任务的日志页面,展示该批量命令运行的信息

三、Playbook执行¶
点击左侧菜单“自动化管理”下的“Playbook执行”

填写或选择相应的数据(像主机清单、登录凭据(ssh)上面以作叙述,这里不再介绍)
这里介绍如何获取tags和skip_tags、点击左侧菜单“系统管理”下的“Playbook tag”

最后填写具体数据,并点击右上角的执行按钮

该作业会跳转到相应的日志页面,并展示该作业运行的具体信息以及日志信息

四、计划任务¶
点击左侧菜单“自动化管理”下的“计划任务菜单”

点击页面上的新增按钮,执行方式为计划任务

点击新增按钮,执行方式为固定间隔

点击新增按钮,执行方式为指定时间

点击授权按钮,可对数据进行权限设置,设置后该条数据获得相应的权限。

点击表格列的显示与隐藏按钮。



点击上方的搜索框可以根据模板以及时间进行数据查询和返回查询结果


点击操作框内的修改按钮,可以修改当行数据


点击操作框内的权限管理按钮,可以增加相应的权限

点击权限管理按钮后进入用户权限设置以及团队权限设置两个页卡、在两个页面均可以新增、修改、查询、删除等操作。


点击查看按钮后页面跳转到页面管理页面,并展示出该计划任务所执行的作业。


点击删除按钮后删除此条数据。


资源管理¶
一、凭据管理¶
二、项目管理¶
三、主机清单¶
3.4 添加主机¶
点击下一步后进入添加主机页面,此页面可以添加主机或者添加主机来源,此处先说明添加主机,点击添加主机按钮,弹出的模态框内填写相应数据,然后点击保存。同时,也可以点击上一步或者取消按钮执行相应的操作。


3.5 添加主机页面¶
点击上步保存后,页面进入到添加主机页面,此页面可以展示添加的主机,可以进行新增,删除,修改等操作(在弹出的模态框内可以进行相应的数据操作,然后点击保存按钮即可达到相应操作目的)。





3.6 添加分组页面¶
点击下一步进入到添加分组页面,此页面可以新增,删除,修改等操作(在弹出的模态框内可以进行相应的数据操作,然后点击保存按钮即可达到相应操作目的)。



当新增分组后下方的跳过按钮变成了下一步按钮,在新增的数据后面可以对改数据进行操作,
具体包括添加子分组,添加主机,编辑分组三个按钮。

添加子分组,点击子分组按钮在弹出模态框内添加数据,然后点击提交,数据添加成功,跳转到父分组页面,可以观察子分组是否添加进去(如下第三张图表名添加成功)。



添加已有子分组,点击子分组按钮在弹出模态框,然后点击添加已有子分组,进入到相关页面,此页面可以添加,移除子分组。



添加主机,点击添加主机按钮弹出模态框,此页面可以添加,移除主机,当状态一栏变成已添加说明添加成功(如下第四张图表名主机添加成功),反之则该主机没有被添加(或者点击移除按钮可以将当前主机的添加状态变成未添加)。




,点击添加主机按钮弹出模态框,此页面可以添加,移除主机,当状态一栏变成已添加说明添加成功(如下第四张图表名主机添加成功),反之则该主机没有被添加(或者点击移除按钮可以将当前主机的添加状态变成未添加)。




,点击编辑分组按钮,在弹出的模态框内编辑所需要改变的数据,点击保存,即可修改相应数据。

3.7 添加凭据页面¶
点击下一步按钮,进入到添加凭据页面,此页面可以为当前主机添加登录凭据,新增,删除。编辑等操作,同时也可以点击右下角的取消按钮,删除当前主机清单。

点击添加凭据按钮,在弹出的模态框内添加相应的数据,然后点击保存,即可对当前主机清单添加登录凭据,然后点击下一步,进入获取主机状态展示页面。



进入主机状态获取页面,可以对其进行授权,删除,查看主机等操作,同时也可以点击完成和上一步按钮进行相应的操作目的。

进点授权按钮,在弹出的模态框可以进行对该主机清单的权限设置,分为用户授权,团队授权两个部分,此处先说明用户授权,在此页面可以进行查询,批量授权,删除以及编辑操作(具体操作如下图)。






点击授权团队tab页,页面切换到团队授权,在此页面可以进行查询,批量授权,删除以及编辑操作(具体操作如下图)。






返回到主机状态页面点击查看主机按钮,在弹出的模态框内展示出当前组的主机以及状态,同时在此页面可以移除当前主机。



3.8 新增主机来源¶
在主机状态页面点击完成按钮,页面跳转到主机清单页面,再次点击添加主机按钮,进入添加主机清单页面,填入相应数据,点击下一步,进入主机选择页面,此时点击主机来源按钮,即可添加主机来源。




添加主机来源写入相应数据后点击保存按钮,页面跳转到添加凭据页面,此页面与上面介绍的功能一样,也可以直接选择已有的凭据,然后点击使用按钮,即可为当前主机来源添加登录凭据,然后点击下一步进入主机状态获取页面,即完成了主机清单主机来源的添加全部步骤。



3.9 主机清单页面功能¶
此页面可以进行模糊筛选,以及点击高级筛选即可进行精确筛选数据,同时也可以进行授权,删除,刷新状态,编辑,授权设置,同步等操作。







在主机清单页面点击状态图标,页面可以进入状态筛选页面,可以进行模糊筛选以及高级筛选展示相应数据结果。


在主机清单页面点击清单名称,页面跳转到该清单的分组管理和主机管理页面,此处先说明分组页面功能,可以进行模糊筛选,高进筛选,新增分组,删除,刷新状态,添加子分组,编辑分组,添加主机等操作。






3.7.4 分组管理页面¶
在主机清单页面点击清单名称,页面跳转到该清单的分组管理和主机管理页面,此处先说明分组页面功能,可以进行模糊筛选,高进筛选,新增分组,删除,刷新状态,添加子分组,编辑分组,添加主机等操作。



















在分组管理页面,可以点击状态的图标,进入主机状态筛选页面,可以对主机状态进行筛选(模糊筛选,高级筛选)。

在分组管理页面,可以对主机状态进行切换,目前有两个(启用和禁用),点击状态切换按钮即可。

3.8 主机管理页面¶
点击主机的tab页面,页面进入主机管理页面,此页面可以进行模糊搜索,高级搜索,添加主机,删除,刷新状态和修改主机等操作。







在分组管理页面,可以对主机状态进行切换,目前有两个(启用和禁用),点击状态切换按钮即可

3.8 添加分组和添加主机按钮弹出的模态框逻辑说明¶
在分组管理页面点击添加分组,弹出的模态框有两个tab页可以进行相互切换,若当前主机清单是手动添加的主机,则默认选中添加分组,若是主机来源添加主机,则默认选中主机来源(两种情况分别如下)。


若手动添加切换为主机来源时候会弹出一个信息提示框,若来源添加主机切换为手动时候同时也会弹出一个信息提示框(两种情况分别如下),可根据需求进行选择。


主机管理页面的添加主机按钮也有相同的功能切换逻辑,不做赘述。
在主机管理页面,也可以点击名称字段,会跳转到该主机近期所执行的作业展示,同时可以在此页面进行数据模糊筛选,高级筛选,对执行后的作业再次执行,查看,删除等操作。





模板管理¶
一、作业模板¶
点击左侧菜单“模板管理”下的“作业模板菜单”

点击新增按钮,跳转到新增页面,并添加相应的数据(像此页面的主机清单、自动化管理、登录凭据(ssh)、tags等下拉框的值均来自于相应页面的新增数据后才可显示选择,前面章节以作相应的介绍,这里不再赘述),点击保存

点击保存后,跳转到作业模板页面、同时可以点击上方下拉框进行主机清单、凭据、自动化项目等数据查询并返回查询结果、返回结果分别如下图:



点击操作框内的执行按钮,跳转到该作业模板的日志页面,显示作业信息和作业日志

点击操作框内的通知按钮,跳转到该作业模板的通知设置页面

点击新增按钮按钮,添加相应数据并提交保存(新增时的通知字段下拉框值来自于通知管理--通知设置,要提前新增数据才可显示),具体步骤如下图:


点击修改按钮,修改相应的数据,点击删除按钮,可以删除当前行数据、具体如下图:



返回作业模板页面,点击修改按钮

进入修改页面,修改相应的数据,点击修改即可保存

返回作业模板页面,点击权限按钮,进行权限设置,跳转到授权用户和授权团队的两个页卡页面


在授权用户页面若当前用户没有被超级管理员授权,则不可以在此页面进行新增,修改,删除等操作、具体情况如下图:


点击新增按钮填入相应数据,点击提交按钮,此时弹出没有权限执行操作

点击新修改按钮修改相应数据,点击提交按钮,此时弹出没有权限执行操作

点击删除按钮删除当前行数据,点击确认后,此时弹出没有权限执行操作

若当前用户被超级管理员授予管理权限,则可以执行新增、修改、删除等操作

执行新增操作(新增时的用户下拉框的值来自于sso系统配置的用户)

执行修改、删除等操作与新增一样,这里不再介绍、从以上可以看出每个用户有着不同的权限,其中超级管理员的权限最大,然而每种权限也有着不同的执行能力,其中包括:只读、执行、执行与读写、管理这四种权限类型
点击授权团队页卡按钮,进入到团队权限页面

点击新增按钮,填入相应的数据(其中的团队名称下拉框值来自于系统管理--团队管理所新增的团队名称)


同时可以修改和删除相应的数据




二、工作流模板¶
点击左侧菜单“模板管理”下的“工作流模板菜单”

点击新增按钮,填入相应数据

点击操作框内的流程设计按钮,进入流程设计页面、在此页面移动鼠标至右上角将开始节点和处理节点拖拽到左侧的放置区域内,同时可以将节点之间进行连接

对于连线有以下几点说明:
1、从开始节点开始进行连线,可以同时连接几个处理节点
2,节点之间只能进行一次连线(即每个处理节点只能执行一次)
3,最后的处理节点不可连接开始节点,否则会出现死循环
点击连线之间的修改按钮,可以对节点之间的状态进行设置

对于连线状态之间设置说明:1、当设置为成功或失败时,此时无论前一个节点的状态如何都会去执行下一个节点 2、当设置为成功时,此时前一个节点状态若为成功则执行下一个节点,若前一个节点为失败则不会执行下一个节点 3、当设置成失败时,此时前一个节点状态若为失败则会执行下一个节点,同理若前一个节点状态为成功则不会执行下一个节点
点击节点上的修改按钮,可以编辑该节点以及点击节点上的删除按钮可以删除相关节点

返回工作流模板页面,点击通知设置按钮

进入到该工作流的通知设置页面,可以对其进行通知设置,在此页面可以进行新增、修改、删除等操作,此步骤在前面的(模板管理--作业模板中的通知设置一样,这里不再赘述)
对于通知设置的作用这里简单介绍一下:目前支持钉钉,邮件,企业微信这三种通知类型,设置不同的类型,当模板执行成功或者失败的时候会根据设定的通知对你进行消息通知
点击操作框内的执行按钮,可以执行该工作流,并跳转到流程图页面,展示相关信息


同时可以点击节点上的查看按钮,跳转到该节点模板的执行状态页面


同时可以修改以及删除相关的数据,与前面的修改和删除一样,这里不做赘述
返回工作流模板页面,点击右上角的列状态下拉菜单,可以对相应的列进行显示或者隐藏


通知管理¶
一、通知设置¶
点击左侧的菜单“通知管理”下的“通知设置菜单”

点击新增按钮,渠道类型选择邮件(其中通知渠道下拉框值要在通知管理--渠道设置中新增数据才可显示)、目前渠道类型有三种:钉钉,邮件,企业微信

新增渠道类型选择钉钉(其中通知渠道下拉框值要在通知管理--渠道设置中新增数据才可显示)

新增渠道类型选择企业微信(其中通知渠道下拉框值要在通知管理--渠道设置中新增数据才可显示)


同时可以进行修改、查询、删除等操作,与前面所介绍的执行功能结果一样,这里不再做赘述
二、渠道设置¶
点击左侧菜单“通知管理”下的“渠道设置菜单”

在钉钉页面点击新增按钮,可以添加相应数据

在钉钉页面点击修改按钮,可以修改相应数据

在钉钉页面点击删除按钮,可以删除当前行数据


点击页面上的邮件设置页卡按钮

在邮件设置页面点击修改按钮,可以修改相关数据

在邮件设置页面点击删除按钮,可以删除当前行数据


点击页面上的企业微信设置按钮,跳转到企业微信设置页面

在此页面可以进行新增、修改、删除等操作、功能与前面所介绍的钉钉设置一样,这里不再赘述
系统管理¶
一、作业设置¶
管理作业存放的目录、作业超时时间、作业无响应时间和作业保存天数
点击左侧菜单“系统管理”下的“作业设置”菜单,进入作业设置

输入内容,点击“新增”按钮,保存配置的参数

若需改变已保存的值,修改完成后,点击“修改”按钮,保存配置的参数
“删除”按钮,清空保存的值

二、团队管理¶
5、添加授权¶
点击操作栏查看团队或者选中需要新增的数据然后点击新增成员旁边的添加成员按钮可以进行团队的成员增加(按钮是无法进行删除的,只能快速添加,删除还是需要点击操作栏进入到相应界面进行删除)

在此页面可以进行新增、修改、删除等操作、功能与前面所介绍的设置一样,这里不再赘述

三、Ansible模块¶
四、playbook tag¶
1、新增¶
管理playbook中默认的tag,用于作业模板中tags参数和skip_tags参数选择的默认值
点击左侧菜单“系统管理”下的“playbook tag”菜单

点击“新增”按钮,新增名称为“zookeeper”的tag

五、环境变量¶
六、语音设置¶
AD配置¶
打开sso,进入“系统设置”菜单下的“基本设置”

LDAP类型:可选值有Windows AD域和OpenLDAP
LDAP 地址:LDAP的访问地址,例如:ldap://10.0.1.1:389
绑定DN:为提供给SSO系统使用的LDAP管理账号DN
密码:为上述管理账号的密码
用户OU:为允许登录SSO的用户部门OU,可以换行填入多个OU
用户过滤器:为查询用户的查询语句
状态:如果状态设置为禁用则系统将不会使用LDAP认证
使用案例¶
创建系统用户¶
一、创建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,点击左侧“资源管理”菜单下的“凭据管理”,进入凭据管理页面:

2.2、添加主机登录凭据,点击新增按钮,“凭据类型”选择“ssh“,添加登录主机的ssh凭据:
ssh凭据可以设置通过用户名密码登录也可以配置通过ssh私钥登录
本文假设通过用户名密码登录,则填写内容如图所示

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

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

3.2、添加git项目,点击新增按钮,在新增表单中填写如下内容:
名称:创建系统用户并配置免密登录
项目类型:选择“git”
凭据:选择步骤2.3中添加的“测试环境GitLab账号”
项目地址:步骤1.4中上传的GitLab项目http地址
分支/Tag:master

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

4.2、添加主机清单,点击新增按钮,在新增表单中填写如下内容:
名称:测试环境主机
主机清单内容:
10.100.12.45
10.100.10.244

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

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参数即可

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

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

安装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


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、创建好后项目的目录结构如下图所示

1.6、将tomcat-install上传到GitLab中,假设其GitLab仓库地址为:http://10.12.155.111:8090/test/tomcat-install.git
二、配置凭据¶
- 如果已经配置过主机登录凭据和GitLab凭据则跳过此步骤
2.1、打开OpsGrat,点击左侧“资源管理”菜单下的“凭据管理”,进入凭据管理页面:

2.2、添加主机登录凭据,点击新增按钮,“凭据类型”选择“ssh“,添加登录主机的ssh凭据:
ssh凭据可以设置通过用户名密码登录也可以配置通过ssh私钥登录
本文假设通过用户名密码登录,则填写内容如图所示

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

三、添加安装tomcat项目¶
3.1、点击左侧“资源管理”菜单下的“项目管理”菜单,进入项目管理页面:

3.2、添加git项目,点击新增按钮,在新增表单中填写如下内容:
名称:安装Tomcat
项目类型:选择“git”
凭据:选择步骤2.3中添加的“测试环境GitLab账号”
项目地址:步骤1.6中上传的GitLab项目http地址
分支/Tag:master

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

4.2、添加主机清单,点击新增按钮,在新增表单中填写如下内容:
名称:测试环境Tomcat主机
主机清单内容:
10.100.12.45
10.100.10.244

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

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

5.3、添加成功后在“作业模板”页面点击执行按钮,可以进行tomcat安装
5.4、点击“确认”按钮,即可进行执行作业,作业执行完成后日志内容如下

安装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、创建好后项目的目录结构如下图所示

1.5、将python3-install上传到GitLab中,假设其GitLab仓库地址为:http://10.12.155.111:8090/test/python3-install.git
二、配置凭据¶
- 如果已经配置过主机登录凭据和GitLab凭据则跳过此步骤
2.1、打开OpsGrat,点击左侧“资源管理”菜单下的“凭据管理”,进入凭据管理页面:

2.2、添加主机登录凭据,点击新增按钮,“凭据类型”选择“ssh“,添加登录主机的ssh凭据:
ssh凭据可以设置通过用户名密码登录也可以配置通过ssh私钥登录
本文假设通过用户名密码登录,则填写内容如图所示

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

三、添加安装python3项目¶
3.1、点击左侧“资源管理”菜单下的“项目管理”菜单,进入项目管理页面:

3.2、添加git项目,点击新增按钮,在新增表单中填写如下内容:
名称:安装python3
项目类型:选择“git”
凭据:选择步骤2.3中添加的“测试环境GitLab账号”
项目地址:步骤1.5中上传的GitLab项目http地址
分支/Tag:master

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

4.2、添加主机清单,点击新增按钮,在新增表单中填写如下内容:
名称:测试环境主机
主机清单内容:
10.100.12.45
10.100.10.244

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

5.2、添加作业模板,点击新增按钮,进入新增表单,填写如下内容:
模板名称:安装python3模板
主机清单:选择步骤4.2添加的“测试环境主机”
自动化项目:选择步骤3.2添加的“安装python3”
playbook:填写为步骤1.3的playbook文件名称“main.yml”
登录凭据:选择步骤2.2添加的“测试环境主机登录凭据”

5.3、添加成功后在“作业模板”页面点击执行按钮,可以进行python3安装
开发文档¶
API使用¶
一、API认证¶
认证方式:
OpsGrat系统API认证通过Token实现,使用方式为,在http的header里面增加Authorization,如下:
Authorization: Token 0a529467ef243ee25cf2f7dea238eab7b6c82085
0a529467ef243ee25cf2f7dea238eab7b6c82085 为用户的Token,替换成用户实际Token即可
获取API Token:
1、登录OpsGrat系统,点击左侧上方用户头像下用户名,如下图所示:

2、然后点击弹出窗中的“API Token”按钮,如下图所示:

3、最后在弹出的“我的Token”模态框中可以看到登录用户的API Token,如下图:

使用例子:
以下例子为查询用户主机清单列表:
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
}
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 | 否 |
|
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 | 否 |
|
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 | 否 |
|
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 | 否 |
|
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 | 否 |
|
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 | 否 |
|
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 | 否 |
|
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 | 否 |
|
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 | 否 |
|
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 | 否 |
|
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 | 否 |
|
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 | 否 |
|
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 | 否 |
|
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 | 否 |
|
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 | 否 |
|
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 | 否 |
|
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 | 否 |
|
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 | 否 |
|
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 | 否 |
|
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 | 否 |
|
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 | 否 |
|
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 | 否 |
|
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 | 否 |
|
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 | 否 |
|
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 | 否 |
|
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 | 否 |
|
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 | 否 |
|
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 | 否 |
|
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 | 否 |
|
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 | 否 |
|
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 | 否 |
|
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 | 否 |
|
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 | 否 |
|
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 | 否 |
|
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 | 否 |
|
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.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.2¶
发布日期:
2019年11月12号
Bug修复:
- License导入页面报错的问题修复
功能改进:
- Windows AD配置由settings.py文件中增加配置改成从sso api中读取ldap类型来判断动态添加配置
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