To elaborate:  the vars_plugin theoretically could be returned via a
specialized inventory plugin.   It's more efficient to do so for small
numbers of hosts.  But there are dangers - lots of accesses, if not lazily
done, could bog down the system immensely, and make it intractable for
large numbers of hosts.

I'm worried about that.

If we have a playbook of 10,000 systems, and we have 50 tasks in that
playbook, and -f 200, how does Redis hold up, etc.

Anyway, more of a topic for ansible-devel really.







On Thu, Jul 17, 2014 at 9:31 PM, Michael DeHaan <[email protected]> wrote:

> While I appreciate the interest, fact caching will need to have very rigid
> design requirements so we are unlikely to take a pull request on it at this
> time.
>
> Ultimately I see this happening as a combination of a callback plugin to
> intercept facts, and a vars plugin to provide them.
>
> And it will need to be optimized for database usage.
>
>
>
>
>
> On Thu, Jul 17, 2014 at 9:26 PM, Josh Drake <[email protected]> wrote:
>
>> Greetings,
>>
>> I know it has been attempted before and is still slated for the future,
>> but I recently needed fact caching in my personal use of Ansible. I
>> leveraged the work that was already done to fix the bugs that were present
>> and complete a handful of working caching backends: redis, memcached, and a
>> simple file backend. I have been using them in my environments for a couple
>> of weeks now (mostly redis, but testing the others as well), and haven't
>> had any issues. I am still extremely new to Ansible, and basically only
>> have enough knowledge of the internals to implement the aforementioned
>> functionality. That said, I figured I'd re-open discussion on this topic
>> here before submitting a pull request. I've included a link here and below
>> to a feature branch diff
>> <https://github.com/joshdrake/ansible/compare/feature/fact_caching?expand=1&w=1>
>> against the devel branch for review. Things of note:
>>
>>
>>    1. Only SETUP_CACHE is leveraging caching backends. VARS_CACHE is
>>    untouched as I'm not quite sure I understand the use-case behind caching
>>    play variables between playbook executions.
>>    2. Caching backends have a base class they should extend to ensure
>>    the API is properly implemented. All the heavy lifting is done by each
>>    caching backend.
>>    3. Given the existing usage of SETUP_CACHE (eg: dictionary based
>>    access), caching backends must be able to return the keys that are being
>>    held in cache. There are various ways of doing that can be seen in the
>>    diff. Redis is perhaps the most interesting and optimal since it allows
>>    usage of sorted sets.
>>    4. All unit tests pass and the sample playbooks noted as issues in
>>    the previous threads are not present. I haven't had time recently to do 
>> so,
>>    but I'll work on running the integration tests as well.
>>
>> Hopefully I'm not encroaching on any plans of major refactoring for fact
>> caching since I know it's been in the pipeline for awhile. I don't have any
>> strong opinions on the matter, but I figured that I would make what I've
>> done available in the event it might be useful.
>>
>> Diff for Fact Caching Feature Branch:
>> https://github.com/joshdrake/ansible/compare/feature/fact_caching?expand=1&w=1
>>
>> --
>> 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/0ad9bef2-a918-45d5-9bcb-a0bbb83a3a7e%40googlegroups.com
>> <https://groups.google.com/d/msgid/ansible-project/0ad9bef2-a918-45d5-9bcb-a0bbb83a3a7e%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%2BnsWgzsyhdi0-S4RD-%2B506YqASsdD91B0_qSzX%2B8cEjFOjCZA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to