There's no current way to add "serial" to a task right now, nor is that the
proper keyword for this.

I think this would be proposing an override for "forks" as a task attribute.





On Mon, Jul 21, 2014 at 6:11 AM, Guillaume Subiron <[email protected]>
wrote:

> Here is another example :
>
> - name: Fetch public ssh key
>   command: cat /root/.ssh/id_rsa.pub
>   register: root_pub_key
>
> - name: Add public ssh key to backup account
>   delegate_to: "{{ backup_server }}"
>   authorized_key: >
>     user={{ hostvars[backup_server]['backup_user'] }}
>     key="{{root_pub_key.stdout}}"
>
> This second task cannot be executed in parallel, because the
> authorized_key module is not thread safe.
>
> Problem is, this task is in the middle of a role, so I cannot just
> split my role in two parts to have 3 plays :
> - role (part one)
> - task with serial:1
> - role (part two)
>
> It would work, but it is really ugly.
>
>
>
> Le 14/05/21 15:57, Garron Moore claviotta :
> > I agree the serial keyword on each task is likely a better option for
> most
> > people and is easier to use and understand.
> >
> > I have multiple inventory entries that point at the same machine. In my
> > particular situation, I wanted the tasks to run in parallel as much as
> > possible with the restriction that it isn't OK to have multiple in
> parallel
> > on the same physical box. I realize this is probably an uncommon use
> case.
> > Serial tasks would have solved my problem as well, just with longer run
> > time in some situations.
> >
> > Garron
> >
> >
> > >>>>> On Mon, Feb 17, 2014 at 7:09 AM, Vidar Langseid <
> [email protected]>wrote:
> > >>>>>
> > >>>>>> Hi
> > >>>>>>
> > >>>>>> In playbook for web servers, I need set firewall rules so that
> > >>>>>> database accepts connections:
> > >>>>>> - name: FW rule - accept input 3306 from web server to DB server
> > >>>>>>   lineinfile: dest=/etc/sysconfig/iptables
> > >>>>>>               regexp="^-A INPUT -p tcp -m state --state NEW -m
> tcp -s
> > >>>>>> {{ ansible_eth0["ipv4"]["address"] }} --dport 3306 -j ACCEPT$"
> > >>>>>>               line="-A INPUT -p tcp -m state --state NEW -m tcp
> -s {{
> > >>>>>> ansible_eth0["ipv4"]["address"] }} --dport 3306 -j ACCEPT"
> > >>>>>>               state=present
> > >>>>>>               insertbefore="^-A INPUT -j REJECT --reject-with
> > >>>>>> icmp-host-prohibited.*$"
> > >>>>>>   delegate_to: "{{ groups.dbservers.0 }}"
> > >>>>>>   notify:
> > >>>>>>     - Restart iptables on DB server
> > >>>>>>   tags: fwrules
> > >>>>>>
> > >>>>>>
> > >>>>>> However, since I have multiple web servers, the liniinfile action
> > >>>>>> will be run in parallel on the db server, causing an
> unpredictable result (
> > >>>>>> trying to change the file from multiple processes at the same
> time )...
> > >>>>>> Any thoughts about adding support for "Serial:1" in task context?
> > >>>>>> I found this thread on the topic : https://groups.google.com/foru
> > >>>>>> m/#!topic/ansible-project/CNxrMIyKx58
> > >>>>>> but no solution yet...
> > >>>>>>
> > >>>>>>
> > >>>>>> In one attempt to work around this problem, I have tried to set
> the
> > >>>>>> FW rules in the playbook for Database server instead, by looping
> over
> > >>>>>> groups['webservers']...
> > >>>>>> However, I still need the IP of each web server and that is
> > >>>>>> problematic. It should  be possible to get the IPs using magic
> variable :
> > >>>>>>
> > >>>>>> {{ hostvars['test.example.com']['ansible_distribution'] }}
> > >>>>>>
> > >>>>>> Since I am looping over groups['webservers'], I have the name of
> the web server in {{ item }}. How to I inject that variable name in the
> expression?
> > >>>>>>
> > >>>>>>
> > >>>>>>
> > >>>>>> The following do not work ( substituting lineinfile with shell to
> illustrating the variable problem ) :
> > >>>>>> - name: FW rule - accept input 3306 from web server to DB server
> > >>>>>>   shell: /bin/true {{
> hostvars.item.ansible_eth0["ipv4"]["address"] }} {{ hostvars.[{{ 'item'
> }}].ansible_eth0["ipv4"]["address"] }}
> > >>>>>>
> > >>>>>>
> > >>>>>>
> > >>>>>>   with_items:  groups['webservers']
> > >>>>>>   notify:
> > >>>>>>     - Restart iptables on DB server
> > >>>>>>   tags: fwrules
> > >>>>>>
> > >>>>>>
> > >>>>>> Btw, when using Rolles (
> http://docs.ansible.com/playbooks_roles.html#roles ), in which file may I
> specify Serial ?
> > >>>>>>
> > >>>>>>
> > >>>>>>
> > >>>>>> Neither in tasks/main.yml, handlers/main.yml or vars/main.yml
> seems to work....
> > >>>>>>
>
> --
> Guillaume Subiron
>   Mail - [email protected]
>    GPG - 5BC2 EADB
> Jabber - [email protected]
>    IRC - maethor@(freenode|geeknode)
>
> --
> 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/20140721101104.GE14256%40subiron.org
> .
> 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%2BnsWgxMKD%3Dmmr5PsTsPpp%3DDRyd8TxdE3O%2BCFLFFY4aBKyMJyg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to