56 lines
1.8 KiB
YAML
56 lines
1.8 KiB
YAML
- hosts: localhost
|
|
gather_facts: false
|
|
vars_files:
|
|
- hypervisor.vcenter.yml
|
|
- cluster.k3s.yml
|
|
tasks:
|
|
|
|
- name: Download OVF-template
|
|
ansible.builtin.get_url:
|
|
url: "https://{{ repo_username }}:{{ repo_password }}@{{ image.ova_url }}"
|
|
dest: /scratch/image.ova
|
|
|
|
- name: Deploy VMs from OVF-template
|
|
community.vmware.vmware_deploy_ovf:
|
|
hostname: "{{ hv.hostname }}"
|
|
username: "{{ hv.username }}"
|
|
password: "{{ hv_password }}"
|
|
validate_certs: no
|
|
datacenter: "{{ hv.datacenter }}"
|
|
folder: "{{ hv.folder }}"
|
|
cluster: "{{ hv.cluster }}"
|
|
name: "{{ kubernetes.clustername | upper }}-{{ (item.ip | checksum)[-5:] | upper }}"
|
|
datastore: "{{ hv.datastore }}"
|
|
disk_provisioning: thin
|
|
networks:
|
|
"LAN": "{{ hv.network }}"
|
|
power_on: yes
|
|
ovf: /scratch/image.ova
|
|
deployment_option: "{{ image.deployment_option }}"
|
|
properties:
|
|
guestinfo.hostname: "{{ kubernetes.clustername | upper }}-{{ (item.ip | checksum)[-5:] | upper }}"
|
|
guestinfo.rootpw: "{{ root_password }}"
|
|
guestinfo.rootsshkey: "foo"
|
|
guestinfo.ntpserver: "{{ network.ntpserver }}"
|
|
guestinfo.ipaddress: "{{ item.ip | ansible.utils.ipaddr('address') }}"
|
|
guestinfo.prefixlength: "{{ item.ip | ansible.utils.ipaddr('prefix') }}"
|
|
guestinfo.dnsserver: "{{ network.dnsserver }}"
|
|
guestinfo.gateway: "{{ network.gateway }}"
|
|
delegate_to: localhost
|
|
with_items: "{{ servers }}"
|
|
register: job_init
|
|
async: 300
|
|
poll: 0
|
|
|
|
- name: Poll for completion
|
|
ansible.builtin.async_status:
|
|
jid: "{{ item.ansible_job_id }}"
|
|
with_items: "{{ job_init.results }}"
|
|
register: job_poll
|
|
retries: 5
|
|
delay: 100
|
|
until: job_poll.finished
|
|
|
|
- ansible.builtin.debug:
|
|
var: job_poll
|