您可以在防火墙后面使用配置管理(Puppet/Chef)吗?

spu*_*der 5 chef

我的任务是为基础架构设计和实施配置管理 (Chef),在该基础架构中,生产服务器完全分段并隔离在一个跳转盒后面。

 ---------------------------------
| Production | Staging, Test, Dev |
 ---------------------------------
Run Code Online (Sandbox Code Playgroud)

将文件投入生产的唯一方法是使用 sftp 连接。只有两个人有能力直接跳入生产。可以例外地允许严格控制的自动化系统(如 jenkins)将文件复制到生产中。

通常,我会建议在云中设置单个厨师服务器,但是生产服务器不能具有外部访问权限。(没有很多说服一些非常不情愿的人)。

我看到的一种解决方案是使用两个 Chef 服务器

 ---------------------------------------
| chef-production | chef-local         |
| Production      | Staging, Test, Dev |
 ---------------------------------------
Run Code Online (Sandbox Code Playgroud)

使用两个厨师服务器有一些我不知道如何克服的问题。

  • 如何使生产和本地服务器说明书保持同步?
  • 我们如何向生产厨师服务器添加新的生产节点,而不需要其中一位管理员运行 Knife 命令?
  • 我们如何更改生产中的数据包?

我愿意接受其他建议。我正在考虑不使用厨师服务器,而是使用chef-zeroor chef-solo。我的理解是,在使用多个环境时,这不是最佳解决方案。

gWa*_*ldo 4

我讨厌这种不信任的环境,但我明白;您必须处理业务要求...

您可以使用说明书的 CI/CD 管道来解决保持说明书同步的问题,以便它们自动部署到两台 Chef 服务器。您可能希望广泛利用食谱固定等功能,但提供更新(即使它们没有被积极使用)不是问题。 Sous-Chef是我公司开源的一款工具,可帮助人们开始自动化食谱测试并上传到 Chef 服务器。必须对其进行修改才能满足多个 Chef 服务器的情况,但其中大部分都在那里。

由于 Chef12 具有“组织”和“基于角色的访问控制”(RBAC) 两种功能(这两种功能过去仅在付费产品中可用),因此您可以建立权限,以便只有指定的人员可以修改生产环境,或者生产是同一 Chef 服务器内的独立组织。

将新节点添加到 Prod Chef 服务器将需要某种引导。详细信息将根据您的环境而有很大差异,但如果安装程序位于该环境本地,您可以在从 VM 模板启动或部署时将其设置为运行一次作业。如果您有通过 API 来启动虚拟机的工具,那么将其扩展为添加引导命令应该不会太糟糕。(Chef 毕竟是一个 API 驱动的系统。)

您关于数据袋的问题在这里太广泛了。

请记住,拥有多个厨师服务器将需要具有单独的knife配置,因此您必须记住为每个厨师服务器传递一个配置标志,或者包装用于knife关联配置文件的命令。当然,除非您有足够的自动化,永远不需要knife

Chef-Zero适用于本地测试,您可以在其中使用Chef-Solo,但需要搜索。这对于管理你的产品盒来说并没有真正的意义。

一些公司Chef-Solo以“按需运行的方式”用于其非测试环境。就我个人而言,我不喜欢这样。我喜欢Solo本地测试(例如使用 Vagrant),或者如果您正在设置系统以使其不可变。如果您打算拥有长期运行的服务器(基本上是无状态的,并且经常拆除,标准 Chef-Server 将帮助您防止配置随时间变化。