使用ansible变量运行脚本模块

时间:2017-11-30 11:13:56

标签: ansible

我完成了这项任务:

- name: script
  script: "scripts/script.sh"

在这个脚本中,我想使用像{{myvar}}

这样的ansible var

这可能吗?

THKS

2 个答案:

答案 0 :(得分:1)

据我所知,正如你所描述的那样,在script内没有直接使用Ansible变量的方法。

有许多不同的方法可以实现我认为你会追求的行为。

第一个选项是以这样的方式编写脚本,即可以将所需的变量值作为参数传入。如脚本模块docs中所述:

  

脚本模块获取脚本名称,后跟空格分隔的参数列表。

因此,您可以运行一个脚本,该变量将变量作为参数,如:

- name: script
  script: scripts/script.sh {{myvar}}

另一个选项是template out脚本,并使用Ansible template模块将变量值直接替换到脚本中。然后,您可以使用commandshell Ansible模块在远程节点上执行从模板配置的脚本。

答案 1 :(得分:0)

如果您的字符串很长且包含换行符或空格,则最好使用单个配额将其作为一个字符串传递

另外,您可能会发现 stdout stdout_lines

的有用结尾
- name: script
  script: "{{ role_path }}/scripts/script.sh '{{ myvar.stdout }}'"