#########################
Pros: Far less roles, uses two types of roles. You apply both a datacenter role and a web server type role. No real need for wrapper cookbooks. Need to be careful that when you apply two types of roles, they don't overlap settings. Last one applied will win. Make sure datacenter roles are 'overrides'
Cons: Be careful you don't duplicate settings between _datacenter and _web override roles. Last one will win.
Databags
- web
- production
-web-version = 2.0.0
-web-version-beta = 2.2.0
-web-version-previous = 1.0.0
- stage
-web-version = 3.0.0
Environments
- Production
- Stage
Roles
The roles that start with an underscore are override roles for the special snowflakes. They have a variable that tells the cookbook to look at a special databag (e.g web-version-beta databag and web-version-previous databag).
- _us-east1 #Uses override level attributes
- _eu-north1 #Uses override level attributes
- _aws-west1 #Uses override level attributes
- _azure-south1 #Uses override level attributes
- _web-beta #Overrides pool of web-base servers
- _web-previous #Override pool of web-base servers
- web-base
- web-netsage
- web-mailproc
- web-fast
Cookbooks
- web-base
- web-netsage
- web-mailproc
- web-fast
Finally figured out the best solution for us by using a combination of roles. Will blog about it here: http://spuder.github.io/2015/chef-datacenter-pattern/