Retrieve facts from a lookup plugin

I am building a lookup plugin to help with identifying AWS resource ids from other relevant resource information, e.g. the Name tag.

My issue is that I need the region, access key id, and secret access key to invoke the boto3 functions and I don’t really want to pass these as arguments to the lookup function on each use.

I have these set as both variables and facts in my plays. Is there something in ansible utilities that I can call to retrieve the variable value or fact variable from within the lookup plugin?

Thanks in advance.

I should add that I tried setting environment variables using “environment:” in the play, but those do not appear to be set yet in the process that is running the jinja2 templating.

I partially answered my own question, from what should have been obvious. The variable stack is passed to the lookup plugin.
self.set_options(var_options=variables, direct=kwargs)
x = variables[‘vars’][‘<variable_name>’]

But I am still stuck with a problem. That returns the literal string value that was assigned to the variable, it does not evaluate that value.
For example, if I have the following in a vars file
x: ‘a value’
y: “{{ x }}”

variables[‘vars’][‘y’] will return “{{ x }}”, not the evaluated result “a value”.

Is there some other utility function I need to call to force that evaluation?

Make sure the vars are documented, since the documentation doubles as the arg spec:

DOCUMENTATION = “”"

options:
option_name:
description: …
vars:

  • name: my_var
    “”"
    And use self.get_option(‘option_name’) to retrieve the value after setting options with self.set_options(var_options=variables, direct=kwargs).