我的任务是为基础架构设计和实施配置管理 (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)
使用两个厨师服务器有一些我不知道如何克服的问题。
我愿意接受其他建议。我正在考虑不使用厨师服务器,而是使用chef-zeroor chef-solo。我的理解是,在使用多个环境时,这不是最佳解决方案。
我讨厌这种不信任的环境,但我明白;您必须处理业务要求...
您可以使用说明书的 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 将帮助您防止配置随时间变化。
| 归档时间: |
|
| 查看次数: |
361 次 |
| 最近记录: |