Retrieve facts from a lookup plugin

Skip to first unread message

John Day

Aug 23, 2021, 10:51:16 AMAug 23
to Ansible Development
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.

John Day

Aug 23, 2021, 10:56:23 AMAug 23
to Ansible Development
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.

John Day

Aug 23, 2021, 5:23:08 PMAug 23
to Ansible Development
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?

Sloane Hertel

Aug 23, 2021, 6:18:08 PMAug 23
to Ansible Development
Make sure the vars are documented, since the documentation doubles as the arg spec:
        description: ...
          - 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).
Reply all
Reply to author
0 new messages