" as I was running several tasks in a row, all using with_items on the same array and could not use a handler."
If using with_items and a handler, you'll get one notification if anything in the list reports changed. I think what you have is ok really, because you'll want those things to happen "then" rather than at the end when handlers normally run, so good work! On Mon, Dec 8, 2014 at 2:14 PM, Jae Task <[email protected]> wrote: > > Hi, First of all I want to thank you all for this thread, it helped me > solve a problem that I was struggling with. This is my first post to the > group and want to say hello :) > > I have a slightly different solution to this problem as I was running > several tasks in a row, all using with_items on the same array and could > not use a handler. > > I am building a multi wordpress installation playbook and solved the > problem like this: > > - name: Create wordpress database > mysql_db: name={{ item.wp_db_name }} state=present > with_items: wordpress_nginx_sites > register: create_wordpress_databases > > #- name: debug reg > # debug: var="{{ create_wordpress_databases }}" > > - name: Create wordpress database user > mysql_user: name={{ item.wp_db_user }} password={{ item.wp_db_password > }} priv={{ item.wp_db_name }}.*:ALL host='localhost' state=present > with_items: wordpress_nginx_sites > > - name: Copy the wordpress mysql db > copy: src=files/sites/{{ item.item.name }}/{{ item.item.wp_db_name > }}.sql dest=/tmp > when: item.changed == True > with_items: create_wordpress_databases.results > > - name: Import the database > mysql_db: name={{ item.item.wp_db_name }} state=import target=/tmp/{{ > item.item.wp_db_name }}.sql > when: item.changed == True > with_items: create_wordpress_databases.results > > > As you can see. Because there are multiple databases being created via > looping a dictionary, I could not see a way to call a handler and know > which element of the dictionary had triggered the handler. > > The interesting part of this is when looping the result of the create > task, you must use {{ item.item.name }} to get at the value. > > I am fairly new to ansible so feel free to advise on a better way of doing > this if Its not best practice. > > Jae. > > > > On Friday, 7 February 2014 04:06:48 UTC, Jeff Geerling wrote: >> >> Coming into this discussion a little late, but here's an example to >> illustrate what's being suggested: >> >> Play: >> >> - name: Ensure example database exists. >> mysql_db: name=exampledb state=present >> notify: import example database >> >> Handler: >> >> - name: import example database >> mysql_db: name=example state=import target=/path/to/example_schema.sql >> >> This works great, and avoids errors I was getting when I tried doing the >> import straightaway; the import only seems to work if the database already >> exists. >> >> On Tuesday, November 26, 2013 3:12:25 PM UTC-6, Fred Badel wrote: >>> >>> I don’t know why, but in my mind, notifying handlers was only to restart >>> a service … now I can see the light!! :) >>> >>> Although, this would not help if the db exists but is empty, you just >>> help me understand how I can use and how useful “notify” can be ! >>> >>> Thank you. >>> >>> fred >>> >>> On Nov 26, 2013, at 19:18 , David Karban <[email protected]> wrote: >>> >>> Hi, >>> >>> you can use notify in create DB to create schema. That way, it will be >>> called only on db creation. >>> >>> David >>> Dne 26.11.2013 17:42 "Fred Badel" <[email protected]> napsal(a): >>> >>>> Hello, >>>> >>>> I have a playbook that create a mysql DB and import an empty schema: >>>> >>>> - name: create DB >>>> mysql_db: name={{ db_name }} state=present login_host=127.0.0.1 >>>> >>>> - name: create schema >>>> mysql_db: name={{ db_name }} state=import login_host=127.0.0.1 >>>> target=/create_tables.sql >>>> >>>> From what i could notice, the sql file is imported each time the >>>> playbook is run ... (aka, the task is marked as changed each time I run the >>>> playbook) >>>> is this an expected behavior? >>>> does someone have a recommended way of using the import feature and run >>>> it only once? >>>> >>>> Thanks. >>>> >>>> Fred >>>> >>>> -- >>>> 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]. >>>> For more options, visit https://groups.google.com/groups/opt_out. >>>> >>> >>> -- >>> 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]. >>> For more options, visit https://groups.google.com/groups/opt_out. >>> >>> >>> -- > 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/c622bc6c-d7c9-4440-81bb-1d048b8df7c3%40googlegroups.com > <https://groups.google.com/d/msgid/ansible-project/c622bc6c-d7c9-4440-81bb-1d048b8df7c3%40googlegroups.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/CA%2BnsWgyW1FL06uzqexqkKv%2BWj4M3g2jF%2BGTCRbhD94HF%2BW%3DFpQ%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
