переменная хостов цикла с использованием ansible - PullRequest
0 голосов
/ 30 сентября 2019

Я хочу реализовать функцию, подобную этой:

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  

Как я могу ее изменить?

Большое спасибо, время маскировки

1 Ответ

0 голосов
/ 01 октября 2019

Так что я думаю, что у вас может быть несколько проблем здесь, для начала, когда вы вызываете 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  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...