An Ansible lookup plugin that caches the results of any other lookup, most useful in group/host vars.
By default, Ansible evaluates any lookups in a group/host var whenever the var is accessed. For example, given a group/host var:
content: "{{ lookup('pipe', 'a-very-slow-command' }}"
any tasks that access content
(e.g. in a template) will re-evaluate the
lookup, which adds up very quickly. See
ansible/ansible#9263.
-
Pick a name that you want to use to call this plugin in Ansible playbooks. This documentation assumes you're using the name
cached
.pip install ansible-cached-lookup
-
Create a
lookup_plugins
directory in the directory in which you run Ansible.By default, Ansible will look for lookup plugins in an
lookup_plugins
folder adjacent to the running playbook. For more information on this, or to change the location where Ansible looks for lookup plugins, see the Ansible docs. -
Create a file called
cached.py
(or whatever name you picked) in thelookup_plugins
directory, with one line:from ansible_cached_lookup import LookupModule
To run the tests, run tox
.
To format code to pass tox -e lint
, run tox -e format
.