split vm_deploy
This commit is contained in:
parent
7ce5e21906
commit
c6eb329c73
5
.vscode/settings.json
vendored
Normal file
5
.vscode/settings.json
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"yaml.schemas": {
|
||||||
|
"https://raw.githubusercontent.com/ansible/schemas/main/f/ansible.json#/$defs/tasks": "file:///home/michael/Code/home/IaC/ansible/roles/vm_deploy/tasks/deploy.yaml"
|
||||||
|
}
|
||||||
|
}
|
83
ansible/roles/vm_deploy/tasks/deploy.yaml
Normal file
83
ansible/roles/vm_deploy/tasks/deploy.yaml
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
---
|
||||||
|
- name: set vm_name
|
||||||
|
ansible.builtin.set_fact:
|
||||||
|
vm_name: "{{ vm_name_prefix }}{{ vm_number }}"
|
||||||
|
|
||||||
|
- name: list vms
|
||||||
|
community.libvirt.virt:
|
||||||
|
command: list_vms
|
||||||
|
register: vm_list
|
||||||
|
|
||||||
|
- name: debug vm list
|
||||||
|
ansible.builtin.debug:
|
||||||
|
var: vm_list.list_vms
|
||||||
|
|
||||||
|
- name: proceed if vm does not exist
|
||||||
|
when: vm_name not in vm_list.list_vms
|
||||||
|
block:
|
||||||
|
|
||||||
|
- name: create root vhd from template
|
||||||
|
ansible.builtin.shell:
|
||||||
|
cmd: |
|
||||||
|
qemu-img create \
|
||||||
|
-b {{ root_vhd_pool_dir }}/{{ vhd_template }} \
|
||||||
|
-F qcow2 \
|
||||||
|
-f qcow2 \
|
||||||
|
{{ root_vhd_pool_dir }}/{{ vm_name }}_vda.qcow2
|
||||||
|
creates: "{{ root_vhd_pool_dir }}/{{ vm_name }}_vda.qcow2"
|
||||||
|
register: root_vhd_created
|
||||||
|
|
||||||
|
- name: copy network files to hypervisor host
|
||||||
|
when: root_vhd_created is changed
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: eno1.network.j2
|
||||||
|
dest: /tmp/eno1_{{ vm_name }}.network
|
||||||
|
|
||||||
|
- name: customize root vhd
|
||||||
|
when: root_vhd_created is changed
|
||||||
|
ansible.builtin.shell:
|
||||||
|
cmd: |
|
||||||
|
virt-customize -a {{ root_vhd_pool_dir }}/{{ vm_name }}_vda.qcow2 \
|
||||||
|
--format qcow2 \
|
||||||
|
--hostname {{ vm_name }}.{{ vm_domain }} \
|
||||||
|
--copy-in /tmp/eno1_{{ vm_name }}.network:/etc/systemd/network/10-eno1.network \
|
||||||
|
--append-line "/etc/hosts:127.0.1.1 {{ vm_name }}.{{ vm_domain }} {{ vm_name }}"
|
||||||
|
--password ladmin:password:{{ hostvars[vm_name]['ansible_become_pass'] }} \
|
||||||
|
--root-password password:{{ hostvars[vm_name]['ansible_root_pass'] }} \
|
||||||
|
--password-crypto sha512 \
|
||||||
|
--ssh-inject "ladmin:string:{{ hostvars[vm_name]['ssh_public_key_string'] }}"
|
||||||
|
|
||||||
|
- name: cleanup network files on hypervisor host
|
||||||
|
ansible.builtin.file:
|
||||||
|
state: absent
|
||||||
|
path: /tmp/eno1_{{ vm_name }}.network
|
||||||
|
|
||||||
|
- name: create container storage vhd
|
||||||
|
ansible.builtin.shell:
|
||||||
|
cmd: |
|
||||||
|
qemu-img create -f qcow2 {{ containers_vhd_pool_dir }}/{{ vm_name }}_vdb.qcow2 64G
|
||||||
|
creates: "{{ containers_vhd_pool_dir }}/{{ vm_name }}_vdb.qcow2"
|
||||||
|
|
||||||
|
- name: create nvme data storage vhd
|
||||||
|
ansible.builtin.shell:
|
||||||
|
cmd: |
|
||||||
|
qemu-img create -f qcow2 {{ data_nvme_vhd_pool_dir }}/{{ vm_name }}_vdc.qcow2 64G
|
||||||
|
creates: "{{ data_nvme_vhd_pool_dir }}/{{ vm_name }}_vdc.qcow2"
|
||||||
|
|
||||||
|
- name: create hdd data storage vhd
|
||||||
|
ansible.builtin.shell:
|
||||||
|
cmd: |
|
||||||
|
qemu-img create -f qcow2 {{ data_hdd_vhd_pool_dir }}/{{ vm_name }}_vdd.qcow2 4T
|
||||||
|
creates: "{{ data_hdd_vhd_pool_dir }}/{{ vm_name }}_vdd.qcow2"
|
||||||
|
|
||||||
|
- name: define vm
|
||||||
|
community.libvirt.virt:
|
||||||
|
command: define
|
||||||
|
autostart: false
|
||||||
|
name: "{{ vm_name }}"
|
||||||
|
xml: "{{ lookup('template', 'vm_template.xml.j2') }}"
|
||||||
|
|
||||||
|
- name: start vm
|
||||||
|
community.libvirt.virt:
|
||||||
|
state: started
|
||||||
|
name: "{{ vm_name }}"
|
6
ansible/roles/vm_deploy/tasks/main.yaml
Normal file
6
ansible/roles/vm_deploy/tasks/main.yaml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
- name: create k8s vms
|
||||||
|
with_items: "{{ vm_name_suffixes }}"
|
||||||
|
loop_control:
|
||||||
|
loop_var: vm_number
|
||||||
|
ansible.builtin.include_tasks: deploy.yaml
|
@ -1,89 +0,0 @@
|
|||||||
---
|
|
||||||
- name: create k8s vms
|
|
||||||
with_items: "{{ vm_name_suffixes }}"
|
|
||||||
loop_control:
|
|
||||||
loop_var: vm_number
|
|
||||||
block:
|
|
||||||
|
|
||||||
- name: set vm_name
|
|
||||||
ansible.builtin.set_fact:
|
|
||||||
vm_name: "{{ vm_name_prefix }}{{ vm_number }}"
|
|
||||||
|
|
||||||
- name: list vms
|
|
||||||
community.libvirt.virt:
|
|
||||||
command: list_vms
|
|
||||||
register: vm_list
|
|
||||||
|
|
||||||
- name: debug vm list
|
|
||||||
ansible.builtin.debug:
|
|
||||||
var: vm_list.list_vms
|
|
||||||
|
|
||||||
- name: proceed if vm does not exist
|
|
||||||
when: vm_name not in vm_list.list_vms
|
|
||||||
block:
|
|
||||||
|
|
||||||
- name: create root vhd from template
|
|
||||||
ansible.builtin.shell:
|
|
||||||
cmd: |
|
|
||||||
qemu-img create \
|
|
||||||
-b {{ root_vhd_pool_dir }}/{{ vhd_template }} \
|
|
||||||
-F qcow2 \
|
|
||||||
-f qcow2 \
|
|
||||||
{{ root_vhd_pool_dir }}/{{ vm_name }}_vda.qcow2
|
|
||||||
creates: "{{ root_vhd_pool_dir }}/{{ vm_name }}_vda.qcow2"
|
|
||||||
register: root_vhd_created
|
|
||||||
|
|
||||||
- name: copy network files to hypervisor host
|
|
||||||
when: root_vhd_created is changed
|
|
||||||
ansible.builtin.template:
|
|
||||||
src: eno1.network.j2
|
|
||||||
dest: /tmp/eno1_{{ vm_name }}.network
|
|
||||||
|
|
||||||
- name: customize root vhd
|
|
||||||
when: root_vhd_created is changed
|
|
||||||
ansible.builtin.shell:
|
|
||||||
cmd: |
|
|
||||||
virt-customize -a {{ root_vhd_pool_dir }}/{{ vm_name }}_vda.qcow2 \
|
|
||||||
--format qcow2 \
|
|
||||||
--hostname {{ vm_name }}.{{ vm_domain }} \
|
|
||||||
--copy-in /tmp/eno1_{{ vm_name }}.network:/etc/systemd/network/10-eno1.network \
|
|
||||||
--append-line "/etc/hosts:127.0.1.1 {{ vm_name }}.{{ vm_domain }} {{ vm_name }}"
|
|
||||||
--password ladmin:password:{{ hostvars[vm_name]['ansible_become_pass'] }} \
|
|
||||||
--root-password password:{{ hostvars[vm_name]['ansible_root_pass'] }} \
|
|
||||||
--password-crypto sha512 \
|
|
||||||
--ssh-inject "ladmin:string:{{ hostvars[vm_name]['ssh_public_key_string'] }}"
|
|
||||||
|
|
||||||
- name: cleanup network files on hypervisor host
|
|
||||||
ansible.builtin.file:
|
|
||||||
state: absent
|
|
||||||
path: /tmp/eno1_{{ vm_name }}.network
|
|
||||||
|
|
||||||
- name: create container storage vhd
|
|
||||||
ansible.builtin.shell:
|
|
||||||
cmd: |
|
|
||||||
qemu-img create -f qcow2 {{ containers_vhd_pool_dir }}/{{ vm_name }}_vdb.qcow2 64G
|
|
||||||
creates: "{{ containers_vhd_pool_dir }}/{{ vm_name }}_vdb.qcow2"
|
|
||||||
|
|
||||||
- name: create nvme data storage vhd
|
|
||||||
ansible.builtin.shell:
|
|
||||||
cmd: |
|
|
||||||
qemu-img create -f qcow2 {{ data_nvme_vhd_pool_dir }}/{{ vm_name }}_vdc.qcow2 64G
|
|
||||||
creates: "{{ data_nvme_vhd_pool_dir }}/{{ vm_name }}_vdc.qcow2"
|
|
||||||
|
|
||||||
- name: create hdd data storage vhd
|
|
||||||
ansible.builtin.shell:
|
|
||||||
cmd: |
|
|
||||||
qemu-img create -f qcow2 {{ data_hdd_vhd_pool_dir }}/{{ vm_name }}_vdd.qcow2 4T
|
|
||||||
creates: "{{ data_hdd_vhd_pool_dir }}/{{ vm_name }}_vdd.qcow2"
|
|
||||||
|
|
||||||
- name: define vm
|
|
||||||
community.libvirt.virt:
|
|
||||||
command: define
|
|
||||||
autostart: false
|
|
||||||
name: "{{ vm_name }}"
|
|
||||||
xml: "{{ lookup('template', 'vm_template.xml.j2') }}"
|
|
||||||
|
|
||||||
- name: start vm
|
|
||||||
community.libvirt.virt:
|
|
||||||
state: started
|
|
||||||
name: "{{ vm_name }}"
|
|
Loading…
Reference in New Issue
Block a user