[英]Is there a way to loop on two variables when importing an Ansible role?
我正在游戲中導入Ansible角色並運行其“安裝”任務。該角色用於在像Vbox這樣的虛擬機管理程序上創建虛擬機並且工作正常。 但是,我想用它同時創建多個VM,我必須為此提供2個變量: - vm_ip:要創建的vm的ip - vm_name:要創建的vm的名稱
我已經嘗試了幾乎所有的循環,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虛擬機,但播放崩潰告訴我:“任務包含一個帶有未定義變量的選項。錯誤是:'item'未定義
您似乎錯誤地縮進了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' }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.