Were you able to reach a proper solution to this problem ? I have the exact same problem that I can't overcome.
On Sunday, February 1, 2015 at 8:42:58 PM UTC+2, Victor Volle wrote: > > Hi! > > I tried to read up on everything I could find w.r.t. multi stage > environments, but I haven't found a solution that fits my needs yet. > > Let's say, I have 4 "environments": dev, test, stage, production > And 2 "kinds" of servers: web, db > > To simplify things, I only have on variable, the size of the "ram". > In "dev", "test" and "stage" the ram for "web" should be 1GB, and 4GB for > "prod" (artificial example to show the issue!) > And in "dev", "test" and "stage" the ram for "db" should be 2GB, and 8GB > for "prod": > > dev test stage prod > > +-----------+ +-----------+ +-----------+ +-----------+ > web | (1GB) | | (1GB) | | (1GB) | | (4GB) | > +-----------+ +-----------+ +-----------+ +-----------+ > > +-----------+ +-----------+ +-----------+ +-----------+ > db | (2GB) | | (2GB) | | (2GB) | | (8GB) | > +-----------+ +-----------+ +-----------+ +-----------+ > > > The roles are centrally defined (say ansible-galaxy), and I cannot use the > defaults from the roles. > > Possible solutions: > > 1) I have an inventory for each stage, but then I have to maintain the > "ram" variable duplicated everywhere, > although I have a useful default value for each "kind" of server. I do not > know where to put the default "ram" for "web" > servers or for "db" servers: > > ├── dev/ > │ ├── group_vars/ > │ │ ├── db > │ │ └── web > │ └── inventory > > ... > > └── prod/ > ├── group_vars/ > │ ├── db > │ └── web > └── inventory > > > 2) I could merge the inventories, like this: > > [db-prod] > [web-prod] > [db-dev] > [web-prod] > ... > > [db:children] > db-prod > db-dev > ... > > [web:children] > ... > > [prod:children] > db-prod > web-prod > > [dev:children] > ... > > > But the problem is that group precedence is alphabetically, I cannot > express that "prod" has precedence over "web" > > 3) I could use the fact that group-vars in the inventory vars have lower > precedence than group_vars in the file system, so that I define group vars > for server "kinds" (db and web) in the inventory file and group vars for > environment in the file system. But that feels rather artificial > > 4) I could use the alphabetical precedence of group names by using by > using names like: > > 10env_dev 10env_test 10env_stage 10env_prod > 20kind_db 20kind_web > > but this is quite ugly. > > -- > > I would like to be able to express the precedence of groups and perhaps > use a directory structure like this: > > ├── db > ├── web > ├── dev > │ ├── db > │ └── web > ... > └── prod > ├── db > └── web > > > How do you solve the problem? > > > [1] http://rosstuck.com/multistage-environments-with-ansible/ > [2] > http://www.erikaheidi.com/blog/configuring-a-multistage-environment-with-ansible-and-vagrant > [3] > http://docs.ansible.com/playbooks_best_practices.html#how-to-differentiate-stage-vs-production > -- You received this message because you are subscribed to the Google Groups "Ansible Project" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/116e4607-6e8e-471d-b6ba-fdf93441a951%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
