Есть ли способ зациклить две переменные при импорте роли Ansible? - PullRequest
0 голосов
/ 17 мая 2019

Я импортирую роль Ansible в пьесу и выполняю ее задачу «Установить». Роль предназначена для создания виртуальных машин на гипервизоре, таком как Vbox, и работает нормально. Однако я хочу использовать его для создания нескольких виртуальных машин одновременно, и я должен предоставить 2 переменные для этой цели: - vm_ip: ip виртуальной машины, которая будет создана - vm_name: имя создаваемого виртуального компьютера

Я уже почти все перепробовал с циклами, with_items и другими вещами. Например, этот код не работает:

- name: Create VMs
  hosts: localhost
  tasks:
  - import_role:
      name: vm_creation
      tasks_from: install
    vars:
      vm_ip: "{{ item.ips }}"
      vm_name: "{{ item.names }}"
      loop:
        - { ips: '192.168.20.4', names: 'test4' }
        - { ips: '192.168.20.5', names: 'test5' }

Предполагается создать виртуальные машины как .20.4, так и .20.5, но игра вылетает, сообщая мне следующее: «Задача включает параметр с неопределенной переменной. Ошибка была:« элемент »не определен

1 Ответ

0 голосов
/ 17 мая 2019

Похоже, вы неправильно указали директиву loop.При этом вы определили переменную с именем loop вместо фактического создания цикла (вот почему item не определено).

Вам также нужно будет использовать include_role вместо import_role.Вы можете прочитать о разнице между include_role и import_role в документации .

- name: Create VMs
  hosts: localhost
  tasks:
  - include_role:
      name: vm_creation
      tasks_from: install
    vars:
      vm_ip: "{{ item.ips }}"
      vm_name: "{{ item.names }}"
    loop:
      - { ips: '192.168.20.4', names: 'test4' }
      - { ips: '192.168.20.5', names: 'test5' }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...