webankpartners / wecube-plugins-saltstack Goto Github PK
View Code? Open in Web Editor NEWWeCube plugin for application deployment
License: Apache License 2.0
WeCube plugin for application deployment
License: Apache License 2.0
描述您的需求
variableReplace 插件允许变量列表为空和跳过匹配不到变量的情况
描述您的需求
在jenkins中创建该插件的ci项目,并将包放到s3上
预期行为
对你预期会发生的事情的清晰而简洁的描述。
描述您考虑过的替代方案
对您考虑的替代解决方案进行清晰而简洁的描述。
附加
在此添加有关问题的任何其他上下文。
描述您遇到的bug
同标题
如何重现
再现行为的步骤
预期行为
可能需要提供额外的API将相关的记录清除,从而使vm2上的安装成功
截图
附加
描述您遇到的bug
文本中有内容如下会提取到差异化变量1
"$LOGS_DIR/out.log" 2> &1 &
如何重现
再现行为的步骤
预期行为
对你预期会发生的事情的清晰而简洁的描述。
截图
请添加屏幕截图以帮助解释您的问题。
附加
在此添加有关问题的任何其他上下文。
WeCube需要支持加密工具,使用场景如下说明:
生成两对RSA的秘钥,一对是应用方生成(app_pri.pem, app_pub.pem),另一对是由WeCube生成(sys_pri.pem, sys_pub.pem),双方都会把各自的公钥通过某种方式给到对方(WeCube提供地方可以下载公钥、应用方可以在发布时上传公钥,或者在应用包中配置公钥路径)。
应用方执行发布时,WeCube用应用方的公钥app_pub.pem对明文密码内容做一次加密,之后再用自身的私钥sys_pri.pem做二次加密,这样二次加密后的密文就会被发布到生产或测试环境了。
应用方程序在执行时,会取到步骤2中二次加密后的密文,使用WeCube的公钥sys_pub.pem对其进行一次解密,如果解密成功,说明密文来自WeCube。拿到解密成功后的一次加密密文后,使用应用方自身的私钥app_pri.pem(建议这个秘钥hard code在应用程序中),对其进行解密获得明文内容,做下一步操作。
描述您的需求
对需求进行清晰而简洁的描述。
预期行为
对你预期会发生的事情的清晰而简洁的描述。
描述您考虑过的替代方案
对您考虑的替代解决方案进行清晰而简洁的描述。
附加
在此添加有关问题的任何其他上下文。
描述您的需求
应wecube对变量替换需求,需要saltstack的variable插件的variableList入参格式进行调整
旧的格式:
var1=value1, var2=value2
新的格式:
var1,var2=value1,value2
描述您的需求
应用部署,使用saltstack插件包,目前需要分发文件、环境变量替换、执行部署脚本三个步骤才能完成。建议增加2个组合插件:
1、首次部署:集成封装“部署用户创建、应用包分发、环境变量替换、执行部署脚本、执行启动脚本”等工作。
2、更新部署:集成封装“执行停止脚本、应用包分发、环境变量替换、执行部署脚本、执行启动脚本“等工作。
预期行为
应用首次部署(created状态)使用首次部署插件。应用更新部署(change状态)使用更新部署插件。
描述您考虑过的替代方案
无。
附加
无。
描述您遇到的bug
File Operation需要增加file owner参数。 当前文件所属是root,导致其他部署用户无权限执行。
如何重现
再现行为的步骤
预期行为
对你预期会发生的事情的清晰而简洁的描述。
截图
请添加屏幕截图以帮助解释您的问题。
附加
在此添加有关问题的任何其他上下文。
描述您遇到的bug
Storage Disk Operation插件返回的未初始化硬盘列表回写不了CMDB, 应返回字符串。
unformated_disk=[/dev/vdb]
2019-09-26 17:08:51.886 INFO 17 --- [ Thread-28] c.w.w.c.s.plugin.PluginServiceStub : Plugin response: PluginResponse(resultCode=0, resultMessage=success, resultData=PluginResponse.ResultData(outputs=[{guid=0013_0000000002, unformatedDisks=[/dev/vdb]}]))
2019-09-26 17:08:51.886 INFO 17 --- [ Thread-28] c.w.w.c.support.cmdb.CmdbRestTemplate : About to POST http://10.0.0.8:8080/cmdb/api/v2/ci/13/update with postObject [{guid=0013_0000000002, unformated_disk=[/dev/vdb]}]
2019-09-26 17:08:51.941 INFO 17 --- [ Thread-28] c.w.w.c.support.cmdb.CmdbRestTemplate : CMDB response: CmdbResponse(statusCode=OK, statusMessage=null, data=[{biz_key=rDa0flMd2BL, charge_type={code=POSTPAID_BY_HOUR, value=按量计费, seqNo=2, codeId=115, catId=24, cat={codes=[]}, status=active, ciTypes=[]}, code=storage1, orchestration={code=wecube1569483240140, value=格式化盘, seqNo=2, codeId=329, catId=51, cat={codes=[]}, status=active, ciTypes=[]}, r_guid=0013_0000000002, mount_point=/data1, description=1, disk_size=10, file_system_type=ext4, type={code=CLOUD_PREMIUM, value=高性能云硬盘, seqNo=1, codeId=169, catId=52, cat={codes=[]}, status=active, ciTypes=[]}, key_name=10.250.1.3_10.250.1.3_storage1, asset_code=disk-eex76pxo, callbackId=null, host={biz_key=, charge_type=115, code=10.250.1.3, orchestration=0, seed=, r_guid=0012_0000000054, description=10.250.1.3, type=162, instance_num=0, password=7fdfa2302e3493d1743462fc7945d743, state=41, fixed_date=, internet_nat_ip=, os=164, resource_set=0020_0000000017, created_by=umadmin, key_name=10.250.1.3_10.250.1.3, disk=166, p_guid=0012_0000000117, asset_code=ins-eipgup8g, port=, name=10.250.1.3, updated_by=admin, guid=0012_0000000054, created_date=1567105260000, updated_date=1568961360000, intranet_ip=0014_0000000080, user=}, name=storage1, guid=0013_0000000002, state={code=change, value=变更, seqNo=7, codeId=38, catId=8, cat={codes=[]}, status=active, ciTypes=[]}}])
如何重现
再现行为的步骤
预期行为
对你预期会发生的事情的清晰而简洁的描述。
截图
请添加屏幕截图以帮助解释您的问题。
附加
在此添加有关问题的任何其他上下文。
描述您的需求
对需求进行清晰而简洁的描述。
预期行为
对你预期会发生的事情的清晰而简洁的描述。
描述您考虑过的替代方案
对您考虑的替代解决方案进行清晰而简洁的描述。
附加
在此添加有关问题的任何其他上下文。
描述您的需求
对于多条记录的请求,对每条记录的返回值中单独添加成功和失败的结果,方便区分哪些记录执行成功,哪些记录执行失败
预期行为
对你预期会发生的事情的清晰而简洁的描述。
描述您考虑过的替代方案
对您考虑的替代解决方案进行清晰而简洁的描述。
附加
在此添加有关问题的任何其他上下文。
作为 小辉(基础运维专家),
我想要 通过SaltStack插件为应用系统创建专用的数据库和用户,
并且指定此用户创建后在对应数据库中具有的权限,
并且获取加密后的数据库用户密码,
从而 能够让在WeCube中配置好的编排使用该用户再次通过Saltstack插件连接到数据库实例执行任务,
并且 有效避免编排中直接使用root用户进行数据库操作。
假定 小辉在WeCube上完成了SaltStack插件包的上传,
当 小辉通过“协同 - 插件注册”菜单项进入SaltStack插件的服务注册页面时,
那么 他应当可以找到 “添加数据库及用户” 的操作,
并且该操作的输入参数中应包含 “用户名”、“密码(明文)”、数据库名称、数据库权限列表,
并且该操作的输出参数中应包含创建好的 “用户名”、“密码(密文)” 和 数据库名称,
假定 WeCube插件在WeCube上成功注册并运行,
当 小辉在编排中调用SaltStack插件进行数据库用户创建,
并且配置插件调用时没有指定数据库名称,
那么 编排执行时Saltstack插件应当报错提示必须提供数据库名称,
并且 编排执行失败。
假定 WeCube插件在WeCube上成功注册并运行,
当 小辉在编排中调用SaltStack插件进行数据库用户创建,
并且配置插件调用时没有指定数据库用户的密码,
那么 编排成功执行后SaltStack插件应该成功创建指定的数据库用户,
并且返回刚刚创建的数据库用户名和已经加密的由Saltstack插件生成的用户密码。
当 小辉在编排中使用之前创建的数据库用户名和加密的密码进行数据库操作时,
那么 编排成功执行后数据库操作应当顺利完成。
假定 小锋获取到之前由Saltstack插件返回的数据库用户名和加密的密码,
当 小锋使用此用户名和密码尝试连接正确的数据库实例时,
那么 小锋应当因为数据库密码已加密而无法连接。
假定 WeCube插件在WeCube上成功注册并运行,
当 小辉在编排中调用SaltStack插件进行数据库用户创建,
并且配置插件调用时指定了数据库用户和希望使用的用户密码时,
那么 编排成功执行后SaltStack插件应该成功创建指定的数据库用户,
并且返回刚刚创建的数据库用户名和已经加密的用户密码。
当 小辉在编排中使用之前创建的数据库用户名和加密的密码进行数据库操作时,
那么 编排成功执行后数据库操作应当顺利完成。
当 小辉使用之前指定的用户名和密码尝试连接正确的数据库实例时,
那么 小辉应当成功连接到数据库实例。
假定 小锋获取到之前由Saltstack插件返回的数据库用户名和加密的密码,
当 小锋使用此用户名和密码尝试连接正确的数据库实例时,
那么 小锋应当因为数据库密码已加密而无法连接。
假定 WeCube插件在WeCube上成功注册并运行,
当 小辉在编排中调用SaltStack插件进行数据库用户创建,
并且配置插件调用时指定了数据库用户在对应数据库中需要的权限列表(如CREATE权限),
那么 编排成功执行后SaltStack插件应该成功创建指定的数据库用户,
当 小辉在编排中使用之前创建的数据库用户在对应数据库中进行操作时(如创建数据库表),
那么 编排成功执行后数据库操作应当顺利完成,
当 小辉在编排中使用之前创建的数据库用户在其它数据库中进行任何操作时,
那么 编排应该由于该数据库用户缺少权限而执行失败。
描述您的需求
预期行为
对你预期会发生的事情的清晰而简洁的描述。
描述您考虑过的替代方案
对您考虑的替代解决方案进行清晰而简洁的描述。
附加
在此添加有关问题的任何其他上下文。
描述您的需求
增加腾讯云插件文档,包括介绍文档,功能说明, 使用说明,编译文档等
预期行为
新增文档。
描述您考虑过的替代方案
对您考虑的替代解决方案进行清晰而简洁的描述。
附加
在此添加有关问题的任何其他上下文。
描述您的需求
回传参数,callbackParam
预期行为
对你预期会发生的事情的清晰而简洁的描述。
描述您考虑过的替代方案
对您考虑的替代解决方案进行清晰而简洁的描述。
附加
在此添加有关问题的任何其他上下文。
优化部署数据库 saltstack 接口加参数
建议插件工程的命名需要体现被封装的第三方开源软件。例如:
wecube-plugin-saltstack或者wecube-plugin-prometheus而不是wecube-plugin-deploy.
描述您遇到的bug
对bug进行清晰而简洁的描述
gns-query-0904.zip文件推包之后服务器上的文件名变成script-158415572。
传入参数如下:
msg="check parameters = {[{http://172.21.0.4:9000/wecube-artifact/43d260371c727283f5bb751da88275a9_gns-query-0904.zip 0012_0000000003 172.16.5.11 /data/gns-query-0904.zip}]}" func=github.com/WeBankPartners/wecube-plugins-saltstack/plugins.Process file="/go/src/github.com/WeBankPartners/wecube-plugins-saltstack/plugins/plugins.go:107"
输出参数入息a:msg="result=" func=github.com/WeBankPartners/wecube-plugins-saltstack/plugins.downloadS3File file="/go/src/github.com/WeBankPartners/wecube-plugins-saltstack/plugins/s3.go:103"
msg="call salt api request = {local ipcidr 172.16.5.11 cp.get_file [salt://base/script-810440920 /data/gns-query-0904.zip makedirs=true gzip=5]}" func=github.com/WeBankPartners/wecube-plugins-saltstack/plugins.CallSaltApi file="/go/src/github.com/WeBankPartners/wecube-plugins-saltstack/plugins/common.go:120"
如何重现
再现行为的步骤
调用file-copy插件实现文件推送包到服务器上。
预期行为
对你预期会发生的事情的清晰而简洁的描述。
希望传送的包名字不变。还是gns-query-0904.zip
描述您的需求
当需要在本地对Saltstack的接口进行调试的时候,Saltstack在本地的启动方式很不方便,因为其依赖于容器,为了便于后续的开发调试,建议搭建smoke环境。
预期行为
描述您的需求
filecopy 解压文件失败
预期行为
对你预期会发生的事情的清晰而简洁的描述。
描述您考虑过的替代方案
对您考虑的替代解决方案进行清晰而简洁的描述。
附加
在此添加有关问题的任何其他上下文。
描述您的需求
1.新建一个分支dev,该分支先不合并到master,避免改了之后wecube1.0用不了
2.按新的接口规范,修改register.xml和makefile。https://github.com/WeBankPartners/wecube-platform/blob/dev/wecube-wiki/docs/developer/WeCube-Platform%E6%8F%92%E4%BB%B6%E5%BC%80%E5%8F%91%E8%A7%84%E8%8C%83.md
预期行为
对你预期会发生的事情的清晰而简洁的描述。
描述您考虑过的替代方案
对您考虑的替代解决方案进行清晰而简洁的描述。
附加
在此添加有关问题的任何其他上下文。
针对国际化的文档进行校对工作
描述您的需求
预期行为
对你预期会发生的事情的清晰而简洁的描述。
描述您考虑过的替代方案
对您考虑的替代解决方案进行清晰而简洁的描述。
附加
在此添加有关问题的任何其他上下文。
描述您的需求
saltstack 变量替换 保持前后文件权限一致;目前可执行文件的变量替换后,执行权限丢失。
描述您遇到的bug
入参:
{
"inputs":[{
"guid":"10004_000000001",
"end_point_type":"Local",
"end_point":"/data/app/scripts/test.sh",
"target":"10.250.1.6",
"run_as":"app",
"args":"1 true"
}]
}
报错:/data/app/scripts/test.sh1 文件不存在,
初步猜测是shell命令拼接有问题。
如何重现
再现行为的步骤
预期行为
对你预期会发生的事情的清晰而简洁的描述。
截图
请添加屏幕截图以帮助解释您的问题。
附加
在此添加有关问题的任何其他上下文。
EPIC: WeBankPartners/wecube-platform#985
WeCube1.x中的批量执行脚本、搜索执行结果、查询执行结果三个功能由saltstack提供。
描述您的需求
WeCube2.x中,saltstack负责执行脚本功能,并返回结果到WeCube,由WeCube记录结果并提供搜索执行结果、查询执行结果两个功能。
所以,需要saltstack进行改造执行脚本接口,返回脚本执行结果。
描述您的需求
对需求进行清晰而简洁的描述。
预期行为
对你预期会发生的事情的清晰而简洁的描述。
描述您考虑过的替代方案
对您考虑的替代解决方案进行清晰而简洁的描述。
附加
在此添加有关问题的任何其他上下文。
描述您遇到的bug
创建数据库主机的密码是根据seed和数据库主机的guid加密生成的。
在运行实例CI执行编排调用Database Operation插件去跑数据库脚本时解密失败,因为执行编排是运行实例CI的guid而不是原数据库主机的guid。
如何重现
再现行为的步骤
预期行为
对你预期会发生的事情的清晰而简洁的描述。
截图
请添加屏幕截图以帮助解释您的问题。
附加
在此添加有关问题的任何其他上下文。
描述您遇到的bug
Variable Operation替换差异化变量后,替换完的文件无法与实例关联,与后继的文件分发无法衔接。
如何重现
编排设计无法使用此插件实现差异化变量替换和替换完成的文件分发
预期行为
有两个改进方法。
1、替换完成后,将文件包存储到S3,并返回存储路径。CMDB的实例增加一个属性记录,用于记录这个回写。在接下来的文件分发插件中,使用这个S3路径取文件分发到目标主机。
2、先分发原始包到目标主机,在执行差异化变量替换。Variable Operation增加一个输入参数“目标主机”,去目标主机执行本地文件替换。
大家可以大家讨论实现方案。
截图
无
附加
无
描述您的需求
对需求进行清晰而简洁的描述。
预期行为
对你预期会发生的事情的清晰而简洁的描述。
描述您考虑过的替代方案
对您考虑的替代解决方案进行清晰而简洁的描述。
附加
在此添加有关问题的任何其他上下文。
描述您的需求
对需求进行清晰而简洁的描述。
预期行为
对你预期会发生的事情的清晰而简洁的描述。
描述您考虑过的替代方案
对您考虑的替代解决方案进行清晰而简洁的描述。
附加
在此添加有关问题的任何其他上下文。
描述您的需求
Saltstack现在和Qcloud有强依赖。所有password都会按加密来处理。如果不使用Qcloud来动态管理资源,SaltStack也无法工作。需要在Qcloud和SaltStack的密码加密时,加上特使标记,这些在传入密码时,就知道是明文密码还是加密后需要解密的密码了。
描述您遇到的bug
主机流程编排执行install agent失败时不应返回成功。
如何重现
再现行为的步骤
预期行为
对你预期会发生的事情的清晰而简洁的描述。
截图
请添加屏幕截图以帮助解释您的问题。
附加
在此添加有关问题的任何其他上下文。
描述您的需求
对需求进行清晰而简洁的描述。
预期行为
对你预期会发生的事情的清晰而简洁的描述。
描述您考虑过的替代方案
对您考虑的替代解决方案进行清晰而简洁的描述。
附加
在此添加有关问题的任何其他上下文。
希望在database->runScript插件服务中,支持直接给定以下信息
从而实现直接执行数据库部署包(压缩包)中某个SQL脚本的功能。
描述您遇到的bug
对bug进行清晰而简洁的描述
如何重现
再现行为的步骤
预期行为
对你预期会发生的事情的清晰而简洁的描述。
截图
请添加屏幕截图以帮助解释您的问题。
附加
在此添加有关问题的任何其他上下文。
描述您遇到的bug
script operation, user management, storage disk operation 没有guid参数,插件输入输出参数需要配置guid
如何重现
再现行为的步骤
预期行为
对你预期会发生的事情的清晰而简洁的描述。
截图
请添加屏幕截图以帮助解释您的问题。
附加
在此添加有关问题的任何其他上下文。
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.