我安装了以下版本: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文件中定义主变量.
我是Ansible(2.x)的新手,我在使用脚本模块和使用双引号和反斜杠传递参数时遇到了麻烦.
假设我们有一个{{foo}}包含字符串"foo" 的set变量,我有一个这样的任务:
set_fact:
arg: \(-name "{{foo}}" \)
name: call shell module
script: path/somescript.sh "{{arg}}"
Run Code Online (Sandbox Code Playgroud)
我的脚本需要以下参数结构才能工作:
\(-name "foo" \)
Run Code Online (Sandbox Code Playgroud)
我试过几件事,比如:
arg: \(-name \""{{foo}}"\" \) result: \\(-name \"foo\" \\)
arg: '\(-name \""{{foo}}"\" \)' result: \\(-name \"foo\" \\)
arg: \\(-name \""{{foo}}"\" \\) result: \\(-name \"foo\" \\)
Run Code Online (Sandbox Code Playgroud)
是否有可能在Ansible中逃避反斜杠和双引号?