gpt4 book ai didi

ansible - 在嵌套的剧本之间传递变量

转载 作者:行者123 更新时间:2023-12-04 22:59:07 26 4
gpt4 key购买 nike

我有一本剧本,我在其中使用 ec2 在 aws 中启动一个实例模块。为了更加灵活,我通过提示输入主机名来询问。我在 ec2 中找到了示例代码片段,它允许您使用新启动的实例运行第二个剧本以进行进一步配置。

现在我想通过模块 hostname 设置主机名但我无法访问第二个剧本中的变量。

这就是我的剧本的样子:

---
- hosts: localhost
...

vars_prompt:
- name: var_hostname
prompt: "Please enter the hostname"
private: no

tasks:

- name: Spin up instance
local_action:
module: ec2
...
register: ec2

- name: Add new instance to host group
add_host: hostname={{ item.public_ip }} groupname=launched
with_items: ec2.instances

- hosts: launched
...

tasks:

- name: Set hostname
hostname: name="{{ var_hostname }}"

fatal: [launched] => One or more undefined variables: 'var_hostname' is undefined



有没有办法将变量从一个剧本传递到另一个剧本?

我找到了 Ansible best practice for passing vars to nested playbooks?但不幸的是,它没有我可以使用的解决方案。

最佳答案

您可以一起使用 set_fact 和 hostvars 来实现您想要的。

在一组主机(即 localhost)上执行 set_fact,并使用 hostvars 在不同的游戏中访问它们

{{hostvars['localhost']["new_fact"]}}

关于ansible - 在嵌套的剧本之间传递变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31708736/

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