我有一个剧本,我正在使用 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 }}"
有没有办法将变量从一个剧本传递到另一个剧本?
我找到了 Ansible best practice for passing vars to nested playbooks? 但不幸的是它没有我可以使用的解决方案。
最佳答案
您可以一起使用 set_fact 和 hostvars 来实现您想要的。
在一组主机(即本地主机)上执行 set_fact,并使用 hostvars 在不同的游戏中访问它们
关于ansible - 在嵌套剧本之间传递变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31708736/