define all DBs in group_vars/all then have 3 groups:
[singledbA] mydbs = dbA [singledbB] mydbs = dbA, dbB [bothddbs] mydbs = dbA,dbB then have the task that installs them use use the mydbs you can even define mydbs by host On Thu, Nov 20, 2014 at 12:11 PM, David Fritzsche < [email protected]> wrote: > Hi James, > > thanks for the tip. I think the approach is not totally suitable for my > situation. I would rather not define all the databases for one server in > one > place for two reasons: > > I would like to have it very easy to "move" the database to a different > server > (only in the sense that it gets installed on a different server if I run > everything from scratch to install a test/staging environment) > > Also quite important is that I want to be able to run a playbook that > installs > just db01 and not db02 to save development time (e.g., when I change the > database schema of db01, but do not want to run the tasks that check if > there > needs to be updates to db02 or when I want to setup a new test environment > where I know that I do not need db02...). > > Maybe there is a way to setup things that I have to compromise at most on > one > of these things? > > > > On 20.11.2014 17:18, James Cammarata wrote: > > Hi David, the best way to do this would be to make the role aware of the > fact > > that there may be more than one database installed on it, so that the > > variables in the group would then become an array: > > > > # group_vars/foo.yml: > > databases: > > - name: db01 > > user: db_user1 > > password: xxxxxx > > - name: db02 > > user: db_user2 > > password: xxxxxx > > ... > > > > And then you would loop over this list in your role tasks. > > > > Hope that helps! > > > > > > On Thu, Nov 20, 2014 at 5:30 AM, David Fritzsche > > <[email protected] > > <mailto:[email protected]>> wrote: > > > > Hi all, > > > > in the setup I would like to automate with ansible I have mostly > servers with > > distinct purposes and on each server they may be several distinct > > services/components. The plan is to use ansible to have the > configuration of > > all these servers in one place and to enable us to setup staging > environments > > for the new software we develop and for new releases of the software > stack we > > use (mariadb, nginx, ...) > > > > Since we want to be able to rearrange the "services" (i.e., a > database or a > > FastCGI application) independently to different hosts I started to > organize > > everything into ansible groups, i.e., I have groups like > > > > - database_01 > > - database_02 > > - ... > > - fcgi_01 > > - fcgi_02 > > - ... > > > > for each group I set variables in group_vars/<group-name>, which > looks a > > little bit like the following: > > > > group_vars/database_01:: > > --- > > database_name: db01 > > database_user: user01 > > database_password: xxxxx > > .... > > > > and then I have defined roles so that I can use very simple > playbooks to roll > > this setup out: > > > > database_01.yml:: > > --- > > - hosts: database_01 > > roles: [ database_role ] > > > > > > Now for the tricky part: The way ansible works this can not work if > I have two > > databases on the same host. Then I would have two database groups > (e.g., > > database_01 and database_01) that contain the same host > > > > hosts:: > > [database_01] > > db_host > > > > [database_02] > > db_host > > > > and the playbook would load for host db_host the variables of all > groups that > > include db_host, i.e, the variables of both database_01 and > database_02 are > > loaded and I do not install the correct database when running the > playbook. > > > > > > Is there some best practice how to configure small "components" > (databases, > > fastcgi applications, ...) so that I can separate the configuration > of the > > component from the configuration where the component is going to be > installed > > and I can have multiple "components" of the same kind on the same > host? > > > > -- > > 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] > > <mailto:ansible-project%[email protected]>. > > To post to this group, send email to > [email protected] > > <mailto:[email protected]>. > > To view this discussion on the web visit > > > https://groups.google.com/d/msgid/ansible-project/546DD0E0.9070207%40mvua.de > . > > For more options, visit https://groups.google.com/d/optout. > > > > > > -- > > 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] > > <mailto:[email protected]>. > > To post to this group, send email to [email protected] > > <mailto:[email protected]>. > > To view this discussion on the web visit > > > https://groups.google.com/d/msgid/ansible-project/CAMFyvFiBJy%2BvD90h_9zTBCqLxaXd6qV76LUnavdq9XqdW68hGQ%40mail.gmail.com > > < > https://groups.google.com/d/msgid/ansible-project/CAMFyvFiBJy%2BvD90h_9zTBCqLxaXd6qV76LUnavdq9XqdW68hGQ%40mail.gmail.com?utm_medium=email&utm_source=footer > >. > > For more options, visit https://groups.google.com/d/optout. > > -- > 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/546E20C2.7050400%40mvua.de > . > For more options, visit https://groups.google.com/d/optout. > -- Brian Coca -- 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/CAJ5XC8%3DLTH92fAvnt%3DEp_bq8ibXebmh9M6YDyzKCa3pZ8iZ7-A%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
