假设我想将一些变量从命令行传递到剧本,然后再传递到另一个(包含的)剧本,最干净的方法是什么?
我想我会这样走吧?
[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 参数)上传递的,所以这些变量是全局范围的,因此不需要在剧本之间传递。