我安装了以下版本: ansible 2.3.0 (devel 2131eaba0c)
我想将主变量指定为外部变量,然后在_1590969中使用它,类似于:
hosts: "{{integration}}"
在我的 group_vars/all 文件中,我有以下定义的变量:
integration: "int60"
host file 看起来像这样:
[int60]
hostA
[int61]
hostB
不幸的是,这不起作用 . 我还尝试以下列方式定义 host var :
[integration]
127.0.0.1 ansible_host="{{ integration_env }}"
并在我的 group_vars/all 文件中指定了integration_env . 在这种情况下,它似乎在本地运行任务而不是在所需的环境中运行 .
可以这样做吗?我会接受全新的做法 . 主要目标是在var文件中定义主变量 .
1 回答
如果您将
integration
变量作为额外变量传递,这将起作用:播放“ Headers ”中使用的任何变量都应该在Ansible分析剧本之前定义 .
在您的示例中,您将
integration
定义为主机事实 . 事实只在任务级别定义,而不是在游戏级别 .Update: 并且您可以使用其他方式传递变量,而不仅仅是额外的变量 . 例如:
也会工作 .