厨师12 organizations
和environments
的概念。
你将如何逻辑build模不同的数据中心?
例如,如果您有两个数据中心,则有两个环境。
us-datacenter \_ production \_ stage eu-datacenter \_ production \_ stage
每个环境都有需要指向不同数据库的Web服务器
us-prod-web01 => us-prod-db01 eu-prod-web01 => eu-prod-db01 us-stage-web01 => us-stage-db01 eu-stage-web01 => eu-stage-db01
显而易见的答案是创build包含正确数据库的IP地址的嵌套数据包。
$datacenter/$environment/web $datacenter/$environment/database
然而,数据库具有严格的二级层次,没有我能find的“数据中心”的概念。
这最好如何模拟? 我能想到的两种方法。
使用2级数据库
$环境/美网
$环境/我们的数据库
$环境/ EU-网
$环境/ EU数据库
这有很多数据库放在一个目录下的缺点。 即使你使用托pipeCHEF的GUI,这仍然很难滚动数据包。 (8 data centers * 4 environments * 6 types of webservers + 2 types of database servers = a lot )
这是在IRC上提出的,但是写一个帮手的方法看起来非常复杂(对于厨师来说是新的,从来没有做过这样的事情)。 另外,它似乎是一个应用程序非常普遍的重用方法。 例如, 这可以简单地在puppet + hiera中完成
当然,我不是第一个使用厨师在不同数据中心进行不同设置的人。
如果您正在计划单独的数据中心,则可能会遇到两个问题:
一个厨师安装速度太慢,无法支持所有事情 – 你可能最终会得到一个DC。
很多数据库用于各种目的。 在这一点上,GUI和手动编辑停止成为一个问题。 只是在每次更改时对整个存储库进行同步,而不是处理单个文件或在GUI中执行任何操作。
你可能会觉得有用(如果你在每个区域都有类似的服务),就是在每个环境中使用全名 – 就像“eu-test”,“eu-prod”等一样,并且颠倒层级,与…一起
/ database - eu-stage - eu-prod - us-prod / web ...
和access /service/$environment
。
我相信组织之间的数据包也是分开的,所以如果你和us
完全不同,那么可以有用。 如果它们是相似的,那么在这种分离中可能没有意义。
PS:如果你刚开始与厨师,不要叫你的服务“networking” – 你很可能会得到另一个不同angular色的networking服务器…给它一个更有意义的名字。 相同的“数据库”。
我最终实现的解决schemelogging在我的博客上
基本上我有3个angular色和2个环境。 我根据其位置和types将多个angular色应用于服务器。
层次结构看起来像这样: