Git Product home page Git Product logo

cloudiac's People

Contributors

chenzhanjia-idcos avatar cong2960 avatar feixu2015 avatar idcos-cloudiac avatar jiangliuhong avatar jinxing-idcos avatar jxinging avatar kiraraako avatar licairong avatar linuxr avatar longqiyan avatar lzihan avatar mt5225 avatar reyyang avatar wang182 avatar xiaodaiit avatar xiaohei417 avatar xulegion avatar xuxiaoahang2018 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cloudiac's Issues

api 接口的 pageSize 参数支持传 0 表示获取全部数据

当前前端为了获取全量数据 pageSize 有传 9999 有情况,此时后端接口会有最大 pageSize 限制实际只返回 1000 条数据

修改方案:前端在需要获取全部数据时 pageSize 传 0,后端针对部分接口开放 pageSize 传 0 的支持

PR: #38

创建或修改变量时不允许传非当前实例相关的变量

目前版本前端在创建环境或修改环境时会将继承的所有变量以及当前实例的变量传递到后端,后端接收后检查如果变量有 id 则做变量更新,否则创建变量。这里的问题:

  1. 接口入参中可以传 scope 不是当前级别的数据,也会创建对应的变量,变量更新也有这个问题
  2. 后端接口实现时是会自动计算继承的变量的,不需要调用方将所有变量传入
  3. 即使变量内容没有更新也会执行 update

建议修改:

  • 创建或更新实例变量时只传当前实例相关的变量,继承变量不传入(包括环境、云模板、项目、组织的变量设置)
  • 后端接口处理时只允许修改与当前实例相关的变量
  • 变量只在有变化时做更新,而不是每次提交都更新
    • 这个也可以改交互方式,添加和修改变量时每一行单独保存而不是整体提交保存

部署任务步骤分开展示

现状:
部署日志将各步骤输出日志合并到一起输出,交互上不够友好。
方案:
将各步骤(初始化、合规检测、plan、apply,后续自定义pipeline步骤)单独展示,前端根据步骤状态自动展开当前步骤,其他步骤默认收缩

通知类型、内容优化

● 对发起的不同任务类型(plan/apply/destroy),在通知模板中及标题中增加任务类型,方便用户区分
● 当前创建通知时通知类型同时设置的方式易引起歧意,修改为下拉选择框(单选)

无权限页面跳转首页

当前登录用户打开无权限访问的页面或链接时,提示无权限页面,倒计时3秒后跳转至首页(组织选择页)

用户删除功能优化

Tasks

  • 提供从项目中移除用户功能
  • 从组织中删除用户时同步将用户从组织下的所有项目中移除

增加terraform graph拓扑图展示

前端增加拓扑展示,方便用户了解整个资源间关联关系

  1. 先增加terraform graph原始拓扑展示
  2. 后续针对不同云平台优化拓扑

VCS优化

  • 各类型VCS在获取仓库列表时只获取该VCS帐号自身的仓库,不包括非该帐号下的public仓库
  • 目前VCS管理中没有提供编辑VCS功能,当VCS的token失效或重新生成后只能删除再添加,导致的问题是基于此VCS创建的云模板也需要做相应修改,为些增加VCS编辑功能,编辑时token编辑框处理方式与敏感型变量相同

be able to full text search across environments within organization

  • a search box to locate resource across environments within organization
  • search result is clickable, and link to environment->resource->resource detail

tasks

  • 组织内跨项目查询接口(支持按资源名称、资源类型进行模糊查询)
  • 前端页面开发
  • 前、后端联调

云模板导出导入

● 增加云模板导出、导入功能,可选择当前组织下的云模板进行导出
● 导出云模板时对应的VCS以及关联关系一并导出
● 考虑导出系统与导入系统的密钥可能不一致,导出过程中涉及敏感变量时,对敏感变量的值先解密再使用通用加解密算法加密后导出,导入时使用通用加解密算法解密后再使用密钥加密后保存
● 导入时可选择对已存在的云模板处理方式:
○ 覆盖:对存在的同名云模板直接覆盖(对覆盖的数据进行保留,以备意外情况时进行恢复)
○ 跳过:跳过存在的同名云模板,继续导入其他数据
○ 创建副本:对同名的云模板,给名称加上_copy后缀进行导入
○ 中止:存在同名云模板时中止导入操作,不做任何变更
● 导入时可选择将该次导入的云模板关联到某项目
● 同样的接口提供给三方系统进行导入、导出

内置有缓存的 provider 版本不匹配时不会自动下载依赖版本

问题

我们打包的 ct-worker 镜像会将常用的 provider 版本拷贝到 /usr/share/terraform/plugins 目录,做为一个缓存,加快常用 provider 的访问,但我们并没有把一个 provider 的所有版本下载下来。而 terraform init 时如果该目录下己存在依赖的 provider 目录,不管是否有依赖的版本,都不会再从 terraform registry 自动下载。

解决方案

查看 terraform 文档:https://www.terraform.io/docs/cli/config/config-file.html#implied-local-mirror-directories

其中提到

In addition to the zero or more implied filesystem_mirror blocks, Terraform also creates an implied direct block. Terraform will scan all of the filesystem mirror directories to see which providers are placed there and automatically exclude all of those providers from the implied direct block. (This automatic exclude behavior applies only to implicit direct blocks; if you use explicit provider_installation you will need to write the intended exclusions out yourself.)

也就是说默认的 .terraformrc 文件会有一个隐含的 direct block 配置,该配置会将所有本地 plugins 目录中己存在的 provider 配置为 exclude,也就是说需要安装这些 provider 时不会去 terraform registry 查找。

所以解决方案就是我们主动配置 .terraformrc,为其中添加一个空的 direct block,文件内容如下:

provider_installation {
  direct {}
}

只需在 ct-worker 中添加 /root/.terraformrc 文件并写入以上内容即可。

支持逻辑资源账号

  • 当前资源账号是通过组织->环境变量 的方式“平铺”定义,如果某个组织在同一云商下有多个账号,这样的管理方式比较麻烦了
  • 在组织层面引入逻辑资源账号
  • 针对特定provider可设定default账号
  • 创建资源时,
    • 若用户没有指定,系统自动加载default资源账号
    • 用户可指定一个或多个逻辑资源账号

创建环境时 tfvars 和 playbook 文件没有显示云模板己选择的值

image

如图,云模板己经设置了 tfvars 和 playbook 文件,但在创建环境时并没有显示值,用户无法得知云模板己设置的值,在这里又会重新设置一次。

建议修改:创建环境时 tfvars 和 playbook 文件输入框的 placeholder 显示云模板中己设置的值,以提示用户若不设置则会使用云模板中设置的值

联系我们

欢迎加入CloudIaC开源技术交流群:
微信群超过200人无法扫码进入,请添加CloudIaC助手为好友,助手将邀请您进群

image

云模板创建交互优化

创建云模板时,在『基础设置』步骤填写完云模板名称进入下一步时,实时检测填写的名称是否合法,不要等最后一步提交时才检查。

同步实现 #60

  • 创建云模板时检查名称重复
  • 创建云模板时检查工作目录是否合法

环境增加查询/过滤/排序功能

项目下的环境列表,增加如下查询/过滤条件

  • 环境名
  • 模版名

同时,在项目下的模版列表,点击环境数量,跳转到该模版生成的所有环境列表 (相当于通过模版名查询)

新建用户流程太复杂了

现在组织设置中邀请用户,还要去项目设置中去授权。
建议项目管理员应该可以直接邀请用户。

审批直达

当环境创建处于“待审批”状态时,点击环境链接直接定位到审批按钮

增加资源『偏移检测』

● 针对环境增加『偏移检测』功能,支持自动『纠偏』;
● 偏移检测是指定时发起对环境状态与当前线上实时状态的差异检测,如果对环境资源有带外变更,则会自动检测出线上的变更与当前环境描述的终态是否存在差异,针对存在差异的资源进行记录并支持发送偏移事件通知;
● 自动纠偏开关默认关闭,当开启该选项时,检测到存在差异的资源后将自动执行terraform apply动作,将差异部分调整到与环境描述状态一致;
注:偏移检测及自动纠偏仅针对环境所属资源,无法检测应用配置的变更

  • 实现方式调研、测试
  • 输出方案设计文档
  • 功能开发
  • 联调

支持自定义pipeline

  • 设计方案确定,输出设计文档
  • 设计方案、文档评审
  • 任务创建流程修改
  • runner 任务执行流程修改
  • job callback 步骤实现
  • API 接口开发

云模板的仓库名称显示为 id 值

云模板只保存了 vcs 仓库的 id,未保存名称,在回显示仓库名称时一次只加载前 n 条,当仓库 id 不在这前 n 条中时前端直接显示了其 id。如下图:

image

建议:云模板表增加仓库名称字段,在创建或更新云模板时接口同时传仓库 id 和名称并保存

资源、模块关系可视化

支持环境内资源与模块间关系简易可视化,可根据资源所属模块、Provider、资源类型进行切换展示(后期考虑增加资源间关系可视化)

  • 资源、模块结构关系确定
  • UI可视化调研、测试
  • 功能开发
  • 联调

云模板可以设置必填变量

为云模板添加变量时可以设置其为必填,这种变量在云模板里可以有默认值或者为空值,在使用该云模板创建环境时必需为这些变量赋值,否则不允许创建环境。

使用场景:

  1. 将云模板依赖的云商账号变量设置为必填,保证创建的环境里设置了云商账号
  2. 第三方集成 IaC 时,只需要把必填变量导出供用户使用,其他变量在第三方平台用户不可见

runner 启动任务时自动 pull 镜像

目前 runner 启动任务时不会主动 pull 镜像,需要提前手动 pull 镜像到本地。

修改建议:

  • runner 启动容器前先调用 api 执行 image pull
  • 配置中可以关闭自动 image pull(默认开启)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.