"Nope, to this one.  If you want to run something on the current machine,
where ansible is running, you need to write a module, which would reside in
the library. Ansible doesn't look in $PWD for modules, like it does for
tasks."

I think you're confused about the question.  The question was about how to
run one task, in the middle of a series of multi-host tasks, on just one
host, and then resume running steps on a wide array of hosts.

The OP should not be seeking to write a module to solve the above.





On Wed, May 14, 2014 at 6:23 PM, Adam Heath <[email protected]> wrote:

> Nope, to this one.  If you want to run something on the current machine,
> where ansible is running, you need to write a module, which would reside in
> the library. Ansible doesn't look in $PWD for modules, like it does for
> tasks.
>
> If you are running a module on the local machine, then you can do things
> like pause does, where it only runs once.
>
>
> On 05/14/2014 05:15 PM, Michael DeHaan wrote:
>
>> The multiple play method is correct because the tasks would not be
>> executed for every host in the host loop.
>>
>> Pause is a bit of an exception.
>>
>> (Sidenote, it appears Adam is replying to another question above I think?)
>>
>>
>>
>> On Wed, May 14, 2014 at 5:21 PM, Adam Heath <[email protected] <mailto:
>> [email protected]>> wrote:
>>
>>     By default, ansible looks for tasks in $PWD.  tasks are sent to
>>     the remote host, and don't run local.
>>
>>     If you create ansible.cfg in $PWD, and override defaults.library,
>>     then you can have local modules; these run on the local machine.
>>
>>     The following works when ansible is installed thru a package
>>     manager(I use debian):
>>
>>     cat $work_tree/ansible.cfg
>>     ==
>>     [defaults]
>>
>>     library =
>>     /home/adam/code/$shared_ansible_repo/library:/usr/share/ansible
>>     roles_path = /home/adam/code/$shared_ansible_repo/roles
>>     ==
>>
>>
>>
>>     On 05/14/2014 04:07 PM, Michael Peters wrote:
>>
>>         I feel like I'm missing something, but I couldn't find it in the
>>         documentation. Please feel free to RTFM me.
>>
>>         I was just playing around with the pause module in a playbook and
>>         noticed that it only ran on a single host no matter how many hosts
>>         were being executed in the play. That makes sense because
>>         pausing on
>>         multiple machines would just be silly.
>>
>>         The real question is how do I do that explicitly in my own
>>         tasks? I
>>         have a lot of places in playbooks where I have data that needs
>>         to be
>>         inserted on some centralized storage (like a database or files
>>         on an
>>         NFS server, etc). At best this data is pointless to insert/update
>>         multiple times. And most of the time it's difficult to make
>>         sure it's
>>         done in a idempotent way (think ALTER statements in SQL
>>         migrations).
>>
>>         Currently I deal with this by breaking up my playbook into
>>         multiple
>>         plays where most of the tasks are in parallel, then another
>>         play is
>>         done in serial with just 1 host at a time with some pre-condition
>>         checks to see if it needs to be run and skipping it when it
>>         doesn't.
>>         This has the effect of the first host through the serial
>>         section does
>>         the work and every other host gets a turn to waste cycles checking
>>         that it actually happened. Then after the "critical section"
>>         is done
>>         the rest of the tasks are done in a parallel play.
>>
>>         If I could just explicitly label a task as "just run this on
>>         the first
>>         server in the group" like the pause module does I'd be really
>>         happy.
>>
>>
>>     --     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/
>> 5373DE76.9090803%40brainfood.com.
>>
>>
>>     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/CA%2BnsWgzV9WFUC3v7fz0L6iYpR58T_
>> edMNCO_dphKVLv0TNXX1A%40mail.gmail.com <https://groups.google.com/d/
>> msgid/ansible-project/CA%2BnsWgzV9WFUC3v7fz0L6iYpR58T_
>> edMNCO_dphKVLv0TNXX1A%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/5373ECF2.9070405%40brainfood.com.
>
> 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%2BnsWgyPV7iJ9SQXaQ9k8fd8_8CORwnmd%3D6iU7L8FvM-0NU4Rw%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to