|
|
|
@ -5,19 +5,19 @@ |
|
|
|
|
become: yes |
|
|
|
|
tasks: |
|
|
|
|
- name: mirbr0 network exists |
|
|
|
|
command: "virsh net-dumpxml mirbr0" |
|
|
|
|
command: "virsh -c qemu:///system net-dumpxml mirbr0" |
|
|
|
|
changed_when: false |
|
|
|
|
ignore_errors: true |
|
|
|
|
register: net_exists |
|
|
|
|
|
|
|
|
|
- name: storage pool exists |
|
|
|
|
command: "virsh pool-dumpxml mirror" |
|
|
|
|
command: "virsh -c qemu:///system pool-dumpxml mirror" |
|
|
|
|
changed_when: false |
|
|
|
|
ignore_errors: true |
|
|
|
|
register: pool_exists |
|
|
|
|
|
|
|
|
|
- name: mirror vm exists |
|
|
|
|
command: "virsh dumpxml mirror" |
|
|
|
|
command: "virsh -c qemu:///system dumpxml mirror" |
|
|
|
|
changed_when: false |
|
|
|
|
ignore_errors: true |
|
|
|
|
register: vm_exists |
|
|
|
@ -33,31 +33,8 @@ |
|
|
|
|
url: "https://releases.ubuntu.com/20.04.3/ubuntu-20.04.3-live-server-amd64.iso" |
|
|
|
|
dest: "{{ playbook_dir }}/vm/ubuntu20_04.iso" |
|
|
|
|
|
|
|
|
|
# autoinstall not working for libvirt |
|
|
|
|
# https://manintheit.org/en/posts/automation/ubuntu-autoinstall/ |
|
|
|
|
# https://ubuntu.com/server/docs/install/autoinstall-quickstart |
|
|
|
|
# |
|
|
|
|
# --network-config {{ playbook_dir }}/templates/network |
|
|
|
|
# - name: create ubuntu iso seed |
|
|
|
|
# command: |
|
|
|
|
# cmd: > |
|
|
|
|
# cloud-localds |
|
|
|
|
# {{ playbook_dir }}/vm/seed.iso |
|
|
|
|
# {{ playbook_dir }}/templates/user-data |
|
|
|
|
# {{ playbook_dir }}/templates/meta-data |
|
|
|
|
# creates: "{{ playbook_dir }}/vm/seed.iso" |
|
|
|
|
# - name: create ubuntu iso seed |
|
|
|
|
# command: |
|
|
|
|
# cmd: > |
|
|
|
|
# genisoimage |
|
|
|
|
# -output {{ playbook_dir }}/vm/cidata.iso |
|
|
|
|
# -V cidata -r -J |
|
|
|
|
# {{ playbook_dir }}/templates/user-data |
|
|
|
|
# {{ playbook_dir }}/templates/meta-data |
|
|
|
|
# creates: "{{ playbook_dir }}/vm/seed.iso" |
|
|
|
|
|
|
|
|
|
- name: create mirbr0 bridge network |
|
|
|
|
command: "virsh {{ item }}" |
|
|
|
|
command: "virsh -c qemu:///system {{ item }}" |
|
|
|
|
loop: |
|
|
|
|
- net-define {{ playbook_dir }}/templates/network.xml |
|
|
|
|
- net-autostart mirbr0 |
|
|
|
@ -65,7 +42,7 @@ |
|
|
|
|
when: net_exists.rc != 0 |
|
|
|
|
|
|
|
|
|
- name: create storage pool |
|
|
|
|
command: "virsh {{ item }}" |
|
|
|
|
command: "virsh -c qemu:///system {{ item }}" |
|
|
|
|
loop: |
|
|
|
|
- pool-define-as mirror dir --target="{{ playbook_dir }}/vm" |
|
|
|
|
- pool-build mirror |
|
|
|
@ -73,32 +50,27 @@ |
|
|
|
|
- pool-start mirror |
|
|
|
|
when: pool_exists.rc != 0 |
|
|
|
|
|
|
|
|
|
# TODO: allow user to create any number of disks with any size |
|
|
|
|
- name: create virtual disks |
|
|
|
|
command: |
|
|
|
|
cmd: "virsh vol-create-as mirror {{ item.name }} {{ item.size }}" |
|
|
|
|
cmd: "virsh -c qemu:///system vol-create-as mirror {{ item.name }} {{ item.size }}" |
|
|
|
|
creates: "{{ playbook_dir }}/vm/{{ item.name }}" |
|
|
|
|
loop: |
|
|
|
|
- { name: mirror_root1.qcow2, size: 10G } |
|
|
|
|
- { name: mirror_root2.qcow2, size: 10G } |
|
|
|
|
- { name: mirror_disk1.qcow2, size: 10G } |
|
|
|
|
- { name: mirror_disk2.qcow2, size: 10G } |
|
|
|
|
- { name: mirror_disk3.qcow2, size: 10G } |
|
|
|
|
- { name: mirror_disk4.qcow2, size: 10G } |
|
|
|
|
|
|
|
|
|
# does not exist yet |
|
|
|
|
# --os-variant ubuntu20.04 |
|
|
|
|
- { name: mirror_root1.qcow2, size: "{{ root_disks_size }}" } |
|
|
|
|
- { name: mirror_root2.qcow2, size: "{{ root_disks_size }}" } |
|
|
|
|
- { name: mirror_disk1.qcow2, size: "{{ zfs_disks_size }}" } |
|
|
|
|
- { name: mirror_disk2.qcow2, size: "{{ zfs_disks_size }}" } |
|
|
|
|
- { name: mirror_disk3.qcow2, size: "{{ zfs_disks_size }}" } |
|
|
|
|
- { name: mirror_disk4.qcow2, size: "{{ zfs_disks_size }}" } |
|
|
|
|
|
|
|
|
|
# --cdrom path={{ playbook_dir }}/vm/ubuntu20_04.iso |
|
|
|
|
# --disk path={{ playbook_dir }}/vm/seed.iso,format=raw,bus=virtio |
|
|
|
|
# --cloud-init user-data={{ playbook_dir }}/templates/user-data,meta-data={{ playbook_dir }}/templates/meta-data |
|
|
|
|
# --disk path={{ playbook_dir }}/vm/focal-server-cloudimg-amd64.img |
|
|
|
|
- name: create vm |
|
|
|
|
# flag does not work: |
|
|
|
|
# --os-variant ubuntu20.04 |
|
|
|
|
command: > |
|
|
|
|
virt-install |
|
|
|
|
--connect=qemu:///system |
|
|
|
|
--name=mirror |
|
|
|
|
--memory=2048 |
|
|
|
|
--vcpus=1 |
|
|
|
|
--memory={{ vm_ram }} |
|
|
|
|
--vcpus={{ vm_vcpus }} |
|
|
|
|
--boot uefi |
|
|
|
|
--os-type linux |
|
|
|
|
--cdrom {{ playbook_dir }}/vm/ubuntu20_04.iso |
|
|
|
@ -109,6 +81,6 @@ |
|
|
|
|
--disk vol=mirror/mirror_disk3.qcow2,bus=virtio |
|
|
|
|
--disk vol=mirror/mirror_disk4.qcow2,bus=virtio |
|
|
|
|
--network bridge=mirbr0,model=virtio |
|
|
|
|
--graphics vnc,port=5911,listen=127.0.0.1 |
|
|
|
|
--graphics vnc,port={{ vnc_port }},listen=127.0.0.1 |
|
|
|
|
--noautoconsole |
|
|
|
|
when: vm_exists.rc != 0 |