使用ansible

时间:2019-09-30 08:48:31

标签: ansible

我想实现这样的功能:

for(int i=0;i<nums;i++){
  hosts[i].something();
}
  • 我打算循环播放此节目,主持人是vm [0],vm [1],vm [2]……
  • 这是一个错误的例子:
---
- hosts: vm[{{i}}]
  with_sequence: start=0 end=10 format=i%d
  gather_facts: False
  remote_user: root
  tasks:
  - import_tasks: test.yaml  

如何修改?

非常感谢,maskingtime

1 个答案:

答案 0 :(得分:0)

所以我认为您可能在这里有几个问题,对于初学者来说,当您调用with_sequence时,它会迭代到一个名为“ item”的变量,系统将不知道如何处理放置在其中的i变量它。格式行只是对要放入“ item”中的字符串执行附加转换。如果要命名它而不是“ item”,则必须将loop_control和loop_var子参数附加到任务上。

https://docs.ansible.com/ansible/latest/user_guide/playbooks_loops.html

这将我们带到了下一个要点,我认为您不能对这样的剧本应用循环,我很确定您只能对任务执行此循环。

但是,如果您的目标只是通过以“ vm”开头的一组特定主机进行迭代,则可以通过清单进行操作。在清单文件中,建立一个将一系列主机捆绑在一起的组:

[test_servers]
vm[0:10]

然后重新格式化您的游戏,使其看起来像这样:

---
- hosts: test_servers
  gather_facts: False
  remote_user: root
  tasks:
  - import_tasks: test.yaml