Gitlab + Ansible Deploy/administrate 多集群

Gitlab + Ansible Deploy/administrate multiple cluster

我想就如何在 Git/Ansible 中组织我的工作提出一些建议。

假设我有一个 Gitlab 项目,里面有 Ansible roles/playbooks。 我正在使用带有 ansible 的 gitlab-ci 作业来部署我的集群(Elastic、Kubernetes 等)。

当你有几十个集群时,你会如何组织你的项目?

在每个集群的文件夹上,Ansible 风格?但在这种情况下,一项修改将适用于所有集群,并且您不希望一次 upgrade/patch 所有集群。

每个集群一个分支?当你想更新时,在每个分支上从 master 变基?

或者每个集群一个项目,从主项目分叉?

还有一个问题:您将如何验证您的运行器以使 Ansible 工作? 将 ssh 密钥放入 Gitlab 的秘密变量中,并将其设置在 docker runner 中? 但是任何对项目具有开发访问权限的人都可以在作业中打印变量并获取 ssh 密钥。

谢谢。

  • 每个集群的每个项目(k8s、elastic 等)一个单独的存储库
  • 每个环境、测试、生产的单独分支
  • 在受保护的 banches 中使用受保护的 Secret 变量
  • 保护所有分支,使任何人都无法直接推送,而是创建一个合并请求
  • 接受来自开发人员的更改作为合并请求,以便您查看更改,合并前他们在做什么,这样您就不允许任何人更改 ci 文件以回显秘密
  • 你也可以使用EE版本的文件锁定功能,但是保护分支的方法更好
  • 您也可以从 hashicorp 保险库获取秘密,而不是在跑步者上