我完成了这项任务:
- name: script
script: "scripts/script.sh"
在这个脚本中,我想使用像{{myvar}}
这样的ansible var这可能吗?
THKS
答案 0 :(得分:1)
据我所知,正如你所描述的那样,在script内没有直接使用Ansible变量的方法。
有许多不同的方法可以实现我认为你会追求的行为。
第一个选项是以这样的方式编写脚本,即可以将所需的变量值作为参数传入。如脚本模块docs中所述:
脚本模块获取脚本名称,后跟空格分隔的参数列表。
因此,您可以运行一个脚本,该变量将变量作为参数,如:
- name: script
script: scripts/script.sh {{myvar}}
另一个选项是template out脚本,并使用Ansible template模块将变量值直接替换到脚本中。然后,您可以使用command或shell Ansible模块在远程节点上执行从模板配置的脚本。
答案 1 :(得分:0)
如果您的字符串很长且包含换行符或空格,则最好使用单个配额将其作为一个字符串传递
另外,您可能会发现 stdout 或 stdout_lines
的有用结尾- name: script
script: "{{ role_path }}/scripts/script.sh '{{ myvar.stdout }}'"