Vet*_*emi 7 ansible ansible-playbook ansible-2.x
我安装了以下版本:ansible 2.3.0(devel 2131eaba0c)
我想将主变量指定为外部变量,然后在类似于此的playbook中使用它:
hosts: "{{integration}}"
Run Code Online (Sandbox Code Playgroud)
在我的group_vars/all文件中,我有以下定义的变量:
integration: "int60"
Run Code Online (Sandbox Code Playgroud)
该主机文件看起来是这样的:
[int60]
hostA
[int61]
hostB
Run Code Online (Sandbox Code Playgroud)
不幸的是,这不起作用.我还尝试以下列方式定义主机var:
[integration]
127.0.0.1 ansible_host="{{ integration_env }}"
Run Code Online (Sandbox Code Playgroud)
并在我的group_vars/all文件中指定integration_env.在这种情况下,它似乎在本地运行任务而不是在所需的环境中运行.
可以这样做吗?我会接受全新的做法.主要目标是在var文件中定义主变量.
如果您将integration变量作为额外变量传递,这将起作用:
ansible-playbook -e integration=int60 myplaybook.yml
Run Code Online (Sandbox Code Playgroud)
播放"标题"中使用的任何变量都应该在Ansible分析剧本之前定义.
在您的示例中,您将定义integration为主机事实.事实只在任务级别定义,而不是在游戏级别.
更新:您可以使用其他方式传递变量,而不仅仅是额外的变量.例如:
- hosts: "{{ lookup('env','DYN_HOSTS') }}"
Run Code Online (Sandbox Code Playgroud)
也会工作.
| 归档时间: |
|
| 查看次数: |
7582 次 |
| 最近记录: |