将数组/列表从bash脚本传递到ansible循环



我心中有一个简单的目标,我认为这应该是微不足道的,但事实并非如此。我在bash中有一个未知名称的列表,例如instances="i1,i2,i3";并且需要在Ansible的角色中迭代它们,看起来像这样:

- name My name
shell: "runServer {{item}}"
loop: "{{ my_instances }}"

我还尝试使用with_items:

- name My name
shell: "runServer {{item}}"
with_items: "{{ my_instances }}"

其中my_instances是我试图基于上述实例构建的变量。到目前为止,我尝试了几种方法:

  1. 使用--extra_vars "instances='i1,i2,i3'"
  2. 使用--extra_vars "instances=['i1','i2','i3']",其中实例在Rundeck作业的bash shell外部构造为bash数组
  3. 使用--extra_vars "{instances:['i1','i2','i3']}"
  4. 使用--extra_vars "instances='i1,i2,i3',在var部分的主作业中尝试将其转换为如下列表:my_instances: "{{ instances.split(',') | list }}"在所有情况下,我只是简单地声明my_instances: "{{ instances }}"
  5. 使用loop: "{{ query('my_instances', 'all') }}"与1-4一起发挥作用(在上述所有其他情况下,我只是简单地将变量声明为my_instances:var部分中的"{{instances}}"(

不管我怎么尝试,我总是会犯同样可怕的错误。有人能解释一下我做错了什么吗?以及如何迭代角色剧本(main.yml(中的项目,其中循环变量来自bash shell之外(在我的例子中是Rundeck的bash shell(?我的想法快用完了。

提前感谢!

--extra-vars是一个参数,之后不需要使用=。当您使用wiht_itemsloop时,需要使用列表,这是您的第二种方法:

--extra_vars "instances=['i1','i2','i3']"

最新更新