feat: Remove node-template hypervisor upload logic (treat as prerequisite instead)
This commit is contained in:
parent
544f98a8fb
commit
594e62cf71
@ -1,73 +0,0 @@
|
||||
- block:
|
||||
|
||||
- name: Check for existing template on hypervisor
|
||||
community.vmware.vmware_guest_info:
|
||||
name: "{{ (filename | basename | split('.'))[:-1] | join('.') }}"
|
||||
register: existing_ova
|
||||
ignore_errors: yes
|
||||
|
||||
- name: Store inventory path of existing template
|
||||
ansible.builtin.set_fact:
|
||||
nodetemplate_inventorypath: "{{ existing_ova.instance.hw_folder ~ '/' ~ existing_ova.instance.hw_name }}"
|
||||
when: existing_ova is not failed
|
||||
|
||||
- block:
|
||||
|
||||
- name: Parse OVA file for network mappings
|
||||
ansible.builtin.shell:
|
||||
cmd: govc import.spec -json {{ filename }}
|
||||
environment:
|
||||
GOVC_INSECURE: '1'
|
||||
GOVC_URL: "{{ vapp['hv.fqdn'] }}"
|
||||
GOVC_USERNAME: "{{ vapp['hv.username'] }}"
|
||||
GOVC_PASSWORD: "{{ vapp['hv.password'] }}"
|
||||
register: ova_spec
|
||||
|
||||
- name: Deploy OVA template on hypervisor
|
||||
community.vmware.vmware_deploy_ovf:
|
||||
cluster: "{{ vcenter_info.cluster }}"
|
||||
datastore: "{{ vcenter_info.datastore }}"
|
||||
name: "{{ (filename | basename | split('.'))[:-1] | join('.') }}"
|
||||
networks: "{u'{{ ova_spec.stdout | from_json | json_query('NetworkMapping[0].Name') }}':u'{{ vcenter_info.network }}'}"
|
||||
allow_duplicates: no
|
||||
power_on: false
|
||||
ovf: "{{ filename }}"
|
||||
register: ova_deploy
|
||||
|
||||
- name: Add additional placeholder disk
|
||||
community.vmware.vmware_guest_disk:
|
||||
name: "{{ ova_deploy.instance.hw_name }}"
|
||||
disk:
|
||||
- size: 1Mb
|
||||
scsi_controller: 1
|
||||
scsi_type: paravirtual
|
||||
unit_number: 0
|
||||
|
||||
# Disabled to allow disks to be resized; at the cost of cloning speed
|
||||
# - name: Create snapshot on deployed VM
|
||||
# community.vmware.vmware_guest_snapshot:
|
||||
# name: "{{ ova_deploy.instance.hw_name }}"
|
||||
# state: present
|
||||
# snapshot_name: "{{ ansible_date_time.iso8601_basic_short }}-base"
|
||||
|
||||
- name: Mark deployed VM as templates
|
||||
community.vmware.vmware_guest:
|
||||
name: "{{ ova_deploy.instance.hw_name }}"
|
||||
is_template: yes
|
||||
|
||||
- name: Store inventory path of deployed template
|
||||
ansible.builtin.set_fact:
|
||||
nodetemplate_inventorypath: "{{ ova_deploy.instance.hw_folder ~ '/' ~ ova_deploy.instance.hw_name }}"
|
||||
|
||||
when: existing_ova is failed
|
||||
|
||||
vars:
|
||||
filename: "{{ query('ansible.builtin.fileglob', '/opt/workloadcluster/node-templates/*.ova') | first }}"
|
||||
module_defaults:
|
||||
group/vmware:
|
||||
hostname: "{{ vapp['hv.fqdn'] }}"
|
||||
validate_certs: no
|
||||
username: "{{ vapp['hv.username'] }}"
|
||||
password: "{{ vapp['hv.password'] }}"
|
||||
datacenter: "{{ vcenter_info.datacenter }}"
|
||||
folder: "{{ vcenter_info.folder }}"
|
@ -0,0 +1,33 @@
|
||||
- block:
|
||||
|
||||
- name: Check for existing template
|
||||
community.vmware.vmware_guest_info:
|
||||
name: "{{ vapp['workloadcluster.nodetemplate'] }}"
|
||||
hostname: "{{ vapp['hv.fqdn'] }}"
|
||||
validate_certs: false
|
||||
username: "{{ vapp['hv.username'] }}"
|
||||
password: "{{ vapp['hv.password'] }}"
|
||||
datacenter: "{{ vcenter_info.datacenter }}"
|
||||
folder: "{{ vcenter_info.folder }}"
|
||||
register: nodetemplate
|
||||
until:
|
||||
- nodetemplate is not failed
|
||||
retries: 600
|
||||
delay: 30
|
||||
#wait for 5 hr.
|
||||
vars:
|
||||
color_reset: "\e[0m"
|
||||
ansible_callback_diy_runner_retry_msg: >-
|
||||
{%- set result = ansible_callback_diy.result.output -%}
|
||||
{%- set retries_left = result.retries - result.attempts -%}
|
||||
TEMPLATE '{{ vapp['workloadcluster.nodetemplate'] }}' NOT FOUND; PLEASE UPLOAD MANUALLY -- ({{ retries_left }} retries left)
|
||||
ansible_callback_diy_runner_retry_msg_color: bright yellow
|
||||
|
||||
- name: Store inventory path of existing template
|
||||
ansible.builtin.set_fact:
|
||||
nodetemplate_inventorypath: "{{ nodetemplate.instance.hw_folder ~ '/' ~ nodetemplate.instance.hw_name }}"
|
||||
|
||||
rescue:
|
||||
- name: CRITICAL ERROR
|
||||
ansible.builtin.fail:
|
||||
msg: Required node-template is not available; cannot continue
|
@ -1,73 +0,0 @@
|
||||
- block:
|
||||
|
||||
- name: Check for existing template on hypervisor
|
||||
community.vmware.vmware_guest_info:
|
||||
name: "{{ (filename | basename | split('.'))[:-1] | join('.') }}"
|
||||
register: existing_ova
|
||||
ignore_errors: yes
|
||||
|
||||
- name: Store inventory path of existing template
|
||||
ansible.builtin.set_fact:
|
||||
nodetemplate_inventorypath: "{{ existing_ova.instance.hw_folder ~ '/' ~ existing_ova.instance.hw_name }}"
|
||||
when: existing_ova is not failed
|
||||
|
||||
- block:
|
||||
|
||||
- name: Parse OVA file for network mappings
|
||||
ansible.builtin.shell:
|
||||
cmd: govc import.spec -json {{ filename }}
|
||||
environment:
|
||||
GOVC_INSECURE: '1'
|
||||
GOVC_URL: "{{ vapp['hv.fqdn'] }}"
|
||||
GOVC_USERNAME: "{{ vapp['hv.username'] }}"
|
||||
GOVC_PASSWORD: "{{ vapp['hv.password'] }}"
|
||||
register: ova_spec
|
||||
|
||||
- name: Deploy OVA template on hypervisor
|
||||
community.vmware.vmware_deploy_ovf:
|
||||
cluster: "{{ vcenter_info.cluster }}"
|
||||
datastore: "{{ vcenter_info.datastore }}"
|
||||
name: "{{ (filename | basename | split('.'))[:-1] | join('.') }}"
|
||||
networks: "{u'{{ ova_spec.stdout | from_json | json_query('NetworkMapping[0].Name') }}':u'{{ vcenter_info.network }}'}"
|
||||
allow_duplicates: no
|
||||
power_on: false
|
||||
ovf: "{{ filename }}"
|
||||
register: ova_deploy
|
||||
|
||||
- name: Add additional placeholder disk
|
||||
community.vmware.vmware_guest_disk:
|
||||
name: "{{ ova_deploy.instance.hw_name }}"
|
||||
disk:
|
||||
- size: 1Gb
|
||||
scsi_controller: 1
|
||||
scsi_type: paravirtual
|
||||
unit_number: 0
|
||||
|
||||
# Disabled to allow disks to be resized; at the cost of cloning speed
|
||||
# - name: Create snapshot on deployed VM
|
||||
# community.vmware.vmware_guest_snapshot:
|
||||
# name: "{{ ova_deploy.instance.hw_name }}"
|
||||
# state: present
|
||||
# snapshot_name: "{{ ansible_date_time.iso8601_basic_short }}-base"
|
||||
|
||||
- name: Mark deployed VM as templates
|
||||
community.vmware.vmware_guest:
|
||||
name: "{{ ova_deploy.instance.hw_name }}"
|
||||
is_template: yes
|
||||
|
||||
- name: Store inventory path of deployed template
|
||||
ansible.builtin.set_fact:
|
||||
nodetemplate_inventorypath: "{{ ova_deploy.instance.hw_folder ~ '/' ~ ova_deploy.instance.hw_name }}"
|
||||
|
||||
when: existing_ova is failed
|
||||
|
||||
vars:
|
||||
filename: "{{ query('ansible.builtin.fileglob', '/opt/metacluster/node-templates/*.ova') | first }}"
|
||||
module_defaults:
|
||||
group/vmware:
|
||||
hostname: "{{ vapp['hv.fqdn'] }}"
|
||||
validate_certs: no
|
||||
username: "{{ vapp['hv.username'] }}"
|
||||
password: "{{ vapp['hv.password'] }}"
|
||||
datacenter: "{{ vcenter_info.datacenter }}"
|
||||
folder: "{{ vcenter_info.folder }}"
|
@ -38,8 +38,29 @@
|
||||
|
||||
- name: Configure Ansible defaults
|
||||
ansible.builtin.template:
|
||||
src: ansible.j2
|
||||
dest: /etc/ansible/ansible.cfg
|
||||
content: |
|
||||
[defaults]
|
||||
callbacks_enabled = ansible.posix.profile_tasks
|
||||
force_color = true
|
||||
stdout_callback = community.general.diy
|
||||
|
||||
[callback_diy]
|
||||
|
||||
[callback_profile_tasks]
|
||||
task_output_limit = 0
|
||||
|
||||
- name: Create default shell aliases
|
||||
ansible.builtin.lineinfile:
|
||||
path: ~/.bashrc
|
||||
state: present
|
||||
line: "{{ item }}"
|
||||
insertafter: EOF
|
||||
loop:
|
||||
- alias k="kubectl"
|
||||
- alias less="less -rf"
|
||||
loop_control:
|
||||
label: "{{ (item | regex_findall('([^ =\"]+)'))[2] }}"
|
||||
|
||||
- name: Cleanup
|
||||
ansible.builtin.apt:
|
||||
|
@ -1,6 +0,0 @@
|
||||
[defaults]
|
||||
callbacks_enabled = ansible.posix.profile_tasks
|
||||
force_color = true
|
||||
|
||||
[callback_profile_tasks]
|
||||
task_output_limit = 5
|
@ -162,6 +162,19 @@ PropertyCategories:
|
||||
- cp1w1ws1
|
||||
UserConfigurable: true
|
||||
|
||||
- Key: workloadcluster.nodetemplate
|
||||
Type: string["ubuntu-2204-kube-v1.30.0", "photon-5-kube-v1.30.0.ova"]
|
||||
Label: Workload-cluster node template
|
||||
Description: |
|
||||
All worker and worker-storage nodes for the workload-cluster will be provisioned with this node template.
|
||||
Note:
|
||||
Make sure that this exact template has been uploaded to the vCenter instance before powering on this appliance!
|
||||
DefaultValue: ubuntu-2204-kube-v1.30.0
|
||||
Configurations:
|
||||
- cp1w1ws0
|
||||
- cp1w1ws1
|
||||
UserConfigurable: true
|
||||
|
||||
- Key: workloadcluster.nodesize
|
||||
Type: string["small", "medium", "large"]
|
||||
Label: Workload-cluster node size*
|
||||
|
@ -44,7 +44,7 @@ PropertyCategories:
|
||||
Configurations: '*'
|
||||
UserConfigurable: true
|
||||
|
||||
- Name: 2) Add meta-cluster node
|
||||
- Name: 2) Meta-cluster new node
|
||||
ProductProperties:
|
||||
|
||||
- Key: guestinfo.hostname
|
||||
@ -95,7 +95,20 @@ PropertyCategories:
|
||||
# Configurations: '*'
|
||||
# UserConfigurable: true
|
||||
|
||||
- Name: 3) Common
|
||||
- Name: 3) Workload-cluster
|
||||
ProductProperties:
|
||||
|
||||
- Key: workloadcluster.nodetemplate
|
||||
Type: string["ubuntu-2204-kube-v1.30.0", "photon-5-kube-v1.30.0.ova"]
|
||||
Label: Workload-cluster node template
|
||||
Description: |
|
||||
All worker and worker-storage nodes for the workload-cluster will be provisioned with this node template.
|
||||
Note:
|
||||
Make sure that this exact template has been uploaded to the vCenter instance before powering on this appliance!
|
||||
DefaultValue: ubuntu-2204-kube-v1.30.0
|
||||
UserConfigurable: true
|
||||
|
||||
- Name: 4) Common
|
||||
ProductProperties:
|
||||
|
||||
- Key: guestinfo.rootsshkey
|
||||
@ -106,7 +119,7 @@ PropertyCategories:
|
||||
Configurations: '*'
|
||||
UserConfigurable: true
|
||||
|
||||
- Name: 4) Hypervisor
|
||||
- Name: 5) Hypervisor
|
||||
ProductProperties:
|
||||
|
||||
- Key: hv.fqdn
|
||||
|
Loading…
Reference in New Issue
Block a user