我想实现这样的功能:
for(int i=0;i<nums;i++){
hosts[i].something();
}
---
- hosts: vm[{{i}}]
with_sequence: start=0 end=10 format=i%d
gather_facts: False
remote_user: root
tasks:
- import_tasks: test.yaml
如何修改?
非常感谢,maskingtime
答案 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