gpt4 book ai didi

python - 在ansible_runner python库中,是否可以使用运行器从剧本中检索注册的变量?

转载 作者:太空宇宙 更新时间:2023-11-03 21:46:39 25 4
gpt4 key购买 nike

我开始使用 ansible_runner python 库,我真的很喜欢它。

唯一的事情是我需要检索已注册的变量。我就是找不到方法。

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()

现在,在创建基础设施后,我想检索在 create.yml 中注册的 IP

- 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

有可能吗?我查看了 runner.events,但没有找到它。

谢谢

最佳答案

您可以使用 set_factcacheable: yes 选项在 Playbook 中设置事实。

- name: Save IP address
set_fact:
ip_address: "{{ terraform_output['parameter_name'] }}"
cacheable: yes

然后在运行器实例上使用 get_fact_cache 在 python 中读取它。

self.runner.get_fact_cache(host)['ip_address']

关于python - 在ansible_runner python库中,是否可以使用运行器从剧本中检索注册的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52445281/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com