将变量从一个包含的 Ansible 剧本传递到另一个

将变量从一个包含的 Ansible 剧本传递到另一个

假设我想将一些变量从命令行传递到剧本,然后再传递到另一个(包含的)剧本,最干净的方法是什么?

我想我会这样走吧?

[me@my_box]$ ansible-playbook -i foo -e "server_farm=qa2" playbooks/main_pb.yaml

现在,假设在我的主剧本中我想将 server_farm 变量传递给包含的剧本,我会这样做吗?

---
# playbook: main_pb.yaml

[some stuff]
tasks:
  - include subtasks/init_services.yaml {{ server_farm }}

那么如何在 init_services.yaml 中使用此变量呢?我会这样做:

---
# playbook: init_services.yaml

[some stuff]
- name: start some_service
  [some start service stuff]
  when: server_farm == "qa2"

我做对了吗? 如果是这样,这是最干净的方法吗?

--Jeff(你可能已经猜到了,我刚刚开始使用 Ansible;它有很大的潜力)

答案1

重新阅读 Ansible 文档时得到了答案:

由于我的初始变量是在命令行(-e 参数)上传递的,所以这些变量是全局范围的,因此不需要在剧本之间传递。

相关内容