I started using the ansible_runner python library and i really like it.
The only thing is that I need to retrieve a registered variable. And I just can't find how.
import ansible_runner
class Infra:
def __init__(self, extravars, envvars, private_data_dir):
self.extravars = extravars
self.envvars = envvars
self.private_data_dir = private_data_dir
self.runner = None
def create(self):
self.run("create.yml")
def destroy(self):
self.run("destroy.yml")
def run(self, playbook):
self.runner = ansible_runner.run(
private_data_dir=self.private_data_dir,
playbook=playbook,
verbosity=5,
extravars=self.extravars,
envvars=self.envvars
)
if __name__ == "__main__":
extravars = {}
envvars = {}
private_data_dir = ""
i = infra(extravars, envvars, private_data_dir)
i.create()
Now after I created the infra, I want to retrieve the IP which is registered in my create.yml
- name: "Get terraform output"
shell: >
cd {{ TERRAFORM_CONTEXT_PATH }} && \
export TF_VAR_provisionning_ssh_private_key_path={{ SSH_PRIVATE_KEY }} && \
terraform output -json
register: terraform_output
Is it something possible? I looked in the runner.events, but I haven't found it.
Thanks
You can set fact in your playbook using
set_factwithcacheable: yesoption.And afterwards read it in python using
get_fact_cacheon runner instance.