我的任务是设计和实现基础设施的配置管理(Chef),在这个基础设施中,生产服务器是完全分段的,并且被隔离在一个跳转框中。
---------------------------------
| Production | Staging, Test, Dev |
---------------------------------将文件投入生产的唯一方法是使用sftp连接。只有两个人有能力直接投入生产。允许严格控制的自动化系统(如jenkins)将文件复制到生产中,可以做出例外处理。
通常,我建议在云中设置一个单独的主厨服务器,但是生产服务器无法进行外部访问。(对一些非常不情愿的人没有多少说服力)。
我看到的一个解决方案是使用两台主厨服务器
---------------------------------------
| chef-production | chef-local |
| Production | Staging, Test, Dev |
---------------------------------------使用两个厨师服务器有一些问题,我不知道如何克服。
我愿意接受其他建议。我正在考虑不使用厨师服务器,而是使用chef-zero或chef-solo。我的理解是,当使用多个环境时,它不是最好的解决方案。
发布于 2015-04-23 00:33:59
我讨厌这种不信任的环境,但我明白,你必须处理商业需求.
您可以通过为您的食谱使用CI/CD管道来解决烹饪书保持同步的问题,这样它们就可以自动部署到两个主厨服务器上。您可能想广泛地利用诸如食谱钉扎之类的东西,但是提供更新(即使它们没有被积极使用)是没有问题的。苏-大厨是我的公司的开源工具,可以帮助人们开始自动测试食谱并上传到厨师服务器。必须对其进行修改,以满足多个主厨服务器的情况,但其中大多数都在那里。
由于Chef12具有“组织”和“基于角色的访问控制”(RBAC)的两个特性(每个功能过去都只能在付费产品中使用),您可以建立权限,以便只有指定的人员可以修改生产环境,或者生产是同一个Chef服务器中的一个单独的组织。
向Prod服务器添加新节点将需要某种形式的引导。细节将根据您的环境而有很大的差异,但是如果安装程序是本地的,那么在启动或从VM模板部署时,可以将其设置为一次运行一次的任务。如果您有通过API旋转VM的工具,那么将其扩展到添加引导命令应该不会太糟糕。(毕竟,厨师是一个API驱动的系统。)
你关于数据库的问题对这里来说太宽泛了。
请记住,拥有多个主厨服务器将需要有单独的knife配置,因此您必须记住为每个服务器传递一个配置标志,或者为knife关联一个配置文件包装命令。当然,除非您有足够的自动化来不需要knife。
Chef-Zero用于本地测试,您可以在其中使用Chef-Solo,但需要搜索。管理你的产品盒是没有意义的。
一些公司以“按需运行”的方式为他们的非测试环境使用Chef-Solo。就我个人而言我不喜欢这样。我喜欢用于本地测试的Solo (比如Vagrant),或者如果您设置系统的意图是它们是不可变的。如果您要拥有长期运行的服务器(大部分是无状态的,并且经常被拆掉),标准Chef将帮助您防止信任随着时间的推移而漂移。
https://serverfault.com/questions/684832
复制相似问题