ansible - 使用ansible循环主机变量
问题描述
我想实现这样的功能:
for(int i=0;i<nums;i++){
hosts[i].something();
}
- 我的目标是循环播放这部剧,hosts是vm[0],vm[1],vm[2]……</li>
- 这是一个错误的例子:
---
- hosts: vm[{{i}}]
with_sequence: start=0 end=10 format=i%d
gather_facts: False
remote_user: root
tasks:
- import_tasks: test.yaml
我该如何修改它?
非常感谢,掩蔽时间
解决方案
所以我认为你在这里可能有几个问题,对于初学者来说,当你调用 with_sequence 时,它会迭代到一个名为“item”的变量,系统将不知道如何处理你放置在其中的 i 变量。格式行只是对要放入“项目”的字符串执行额外的转换。如果要将其命名为“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
推荐阅读
- machine-learning - 如何知道 pytorch 模型的输入形状?
- python-3.x - Python 错误:系列的真值在 if 语句中不明确
- php - 分步设置会话
- nlp - 如何在 JSON 中存储令牌信息的自定义属性并用于训练
- python - Python:通过 SMTP 发送 html 格式的电子邮件
- python - 如何仅向graphene-django中的用户个人资料所有者显示特定字段?
- python - 如果在另一个列表 python 中不存在,则按日期计数用户
- android - 为什么我的 android studio 无休止地多次索引?
- python - Pandas - 添加一列以在分组后唯一标识每个组
- c# - 'ERROR_DESTINATION_NOT_REACHABLE:' 尝试部署到 Google Cloud Platform 时出错