如何在 Ansible 角色中传递 vars 文件内容?
How to pass vars file content in Ansible roles?
我正在迁移到 Ansible 角色模型,我有以下结构 -
../roles/vms/tasks/main.yml
---
# To Create VMs on the VMware vCenter Server
- name: Creation of Windows 8.1 VMs
vsphere_guest:
vcenter_hostname: "name"
guest: "{{ item }}"
from_template: yes
template_src: "templatename"
validate_certs: no
esxi:
datacenter: dc
hostname: hname
with_items: "{{ vmname81 }}"
../roles/vms/vars/main.yml
---
vmname81:
- Client1
- Client2
- Client3
vmname10:
- Client4
- Client5
playbook.yml
---
# To Create VMs on the VMware vCenter Server
- hosts: localhost
name: Creation of Windows 8.1 VMs
roles:
- { role: vms }
如您在剧本中所见,我正在尝试创建 Windows 8.1 VM,但我无法弄清楚如何在创建 8.1 VM 的角色中传递 vmname81。 /tasks/main.yml 中的 with_items 需要使用此处提供的输入,以便创建三个 Windows 8.1 VM。我也很想知道这是否可以用更好的方式完成。
您不应将 VM 名称添加到角色,角色应该是通用的。
- 将
with_items: "{{ vmname81 }}"
替换为with_items: "{{ vm_names }}"
- 将变量(
vmname81
、vmname10
)移动到您的 playbook/hosts/groups 变量
像这样应用角色:
- hosts: localhost
name: Creation of Windows 8.1 VMs
roles:
- role: vms
vm_names: "{{ vmname81 }}"
我正在迁移到 Ansible 角色模型,我有以下结构 -
../roles/vms/tasks/main.yml
---
# To Create VMs on the VMware vCenter Server
- name: Creation of Windows 8.1 VMs
vsphere_guest:
vcenter_hostname: "name"
guest: "{{ item }}"
from_template: yes
template_src: "templatename"
validate_certs: no
esxi:
datacenter: dc
hostname: hname
with_items: "{{ vmname81 }}"
../roles/vms/vars/main.yml
---
vmname81:
- Client1
- Client2
- Client3
vmname10:
- Client4
- Client5
playbook.yml
---
# To Create VMs on the VMware vCenter Server
- hosts: localhost
name: Creation of Windows 8.1 VMs
roles:
- { role: vms }
如您在剧本中所见,我正在尝试创建 Windows 8.1 VM,但我无法弄清楚如何在创建 8.1 VM 的角色中传递 vmname81。 /tasks/main.yml 中的 with_items 需要使用此处提供的输入,以便创建三个 Windows 8.1 VM。我也很想知道这是否可以用更好的方式完成。
您不应将 VM 名称添加到角色,角色应该是通用的。
- 将
with_items: "{{ vmname81 }}"
替换为with_items: "{{ vm_names }}"
- 将变量(
vmname81
、vmname10
)移动到您的 playbook/hosts/groups 变量 像这样应用角色:
- hosts: localhost name: Creation of Windows 8.1 VMs roles: - role: vms vm_names: "{{ vmname81 }}"