前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >IaC: 简洁 Or 灵活?

IaC: 简洁 Or 灵活?

作者头像
newbmiao
发布2024-08-27 19:14:03
760
发布2024-08-27 19:14:03
举报
文章被收录于专栏:学点Rust

最近在搞 devops,记录一下对 Infrastructure as code 代码风格的一点感悟

直接从一个例子展开吧

假如需要将原来单账号下以下多网络分别创建到单独的账号下

为了网络创建复用自然需要使用 module 去按账号构建

(别想动态指定 provider,terraform 不支持!)

那问题是怎么将 vpc 的配置按账号分组传递给对应的 module

来看两种方案

方案一:动态分组

给每个 vpc 配置加 acct_key, 然后代码动态分组

聚合那里代码需要两段,主要是 terraform 的默认聚合,只会按 key 相同合并成 array,但我们其实是要把 array 的每个元素合并成一个 object, 方便后续按网络的 key 去索引资源创建的结果

(比如 module 输出了 vpc 资源的创建结果 vpcs,就可以用 module.acct_a_vpcs.vpcs.network1 拿到 network1 的结果)

聚合后结果如下:

这不是程序员最擅长的代码封装么,配置没怎么变,代码动态一聚合就完成了变更的需求,灵活吧。

等等,再来看一个方案

方案二:静态分组

就是配置按账号重新拆分

然后使用时按账号获取配置就是一目了然的事

整体看下来两种方案好像都差不多,但如果考虑代码的简洁与配置聚合的粒度的话,第二种就更胜一筹

毕竟对于 IaC 而言,一目了然的简洁比复杂的代码抽象更易于维护,基础设施的配置文件本来就不应该搞复杂。

哈哈, 代码封装也有碰壁的时候。

当然也有需要代码封装的时候,比如把多个账号的vpcs结果合并起来,便于其他资源跨账号按vpc key查询资源id,路由表id啥的

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-08-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 菜鸟Miao 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 方案一:动态分组
  • 方案二:静态分组
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档