簡體   English   中英

導入Ansible角色時有沒有辦法循環兩個變量?

[英]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_roleimport_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM