2021-09-14 01:12:52 -04:00
|
|
|
---
|
2021-09-17 01:02:45 -04:00
|
|
|
- name: setup mirror vm
|
|
|
|
hosts: 127.0.0.1
|
2021-09-26 16:22:29 -04:00
|
|
|
gather_facts: false
|
2021-09-12 16:32:12 -04:00
|
|
|
tasks:
|
2021-09-17 16:42:15 -04:00
|
|
|
- name: mirbr0 network exists
|
2021-09-26 16:22:29 -04:00
|
|
|
command: "virsh net-dumpxml mirbr0"
|
2021-09-22 00:50:14 -04:00
|
|
|
changed_when: false
|
2021-09-17 01:02:45 -04:00
|
|
|
ignore_errors: true
|
2021-09-22 00:50:14 -04:00
|
|
|
register: net_exists
|
2021-09-14 01:12:52 -04:00
|
|
|
|
2021-09-17 01:02:45 -04:00
|
|
|
- name: storage pool exists
|
2021-09-26 16:22:29 -04:00
|
|
|
command: "virsh pool-dumpxml mirror"
|
2021-09-22 00:50:14 -04:00
|
|
|
changed_when: false
|
2021-09-17 01:02:45 -04:00
|
|
|
ignore_errors: true
|
2021-09-22 00:50:14 -04:00
|
|
|
register: pool_exists
|
2021-09-16 00:47:36 -04:00
|
|
|
|
2021-09-17 16:42:15 -04:00
|
|
|
- name: mirror vm exists
|
2021-09-26 16:22:29 -04:00
|
|
|
command: "virsh dumpxml mirror"
|
2021-09-22 00:50:14 -04:00
|
|
|
changed_when: false
|
2021-09-17 01:02:45 -04:00
|
|
|
ignore_errors: true
|
2021-09-22 00:50:14 -04:00
|
|
|
register: vm_exists
|
2021-09-16 00:47:36 -04:00
|
|
|
|
|
|
|
- name: create directory for vm
|
2021-09-15 00:46:18 -04:00
|
|
|
file:
|
2021-09-17 16:42:15 -04:00
|
|
|
path: "{{ playbook_dir }}/vm/disks"
|
2021-09-15 00:46:18 -04:00
|
|
|
state: directory
|
2021-09-17 16:42:15 -04:00
|
|
|
recurse: yes
|
2021-09-16 00:47:36 -04:00
|
|
|
|
|
|
|
- name: fetch ubuntu iso
|
2021-09-15 00:46:18 -04:00
|
|
|
get_url:
|
2021-09-26 02:32:22 -04:00
|
|
|
url: "https://releases.ubuntu.com/20.04.3/ubuntu-20.04.3-live-server-amd64.iso"
|
2021-09-16 00:47:36 -04:00
|
|
|
dest: "{{ playbook_dir }}/vm/ubuntu20_04.iso"
|
|
|
|
|
2021-09-17 16:42:15 -04:00
|
|
|
# Installing VMs from Ready Images
|
|
|
|
# https://www.x386.xyz/index.php/2021/01/06/kvm-on-ubuntu-server-1/
|
2021-09-16 00:47:36 -04:00
|
|
|
- name: create ubuntu iso seed
|
2021-09-17 16:42:15 -04:00
|
|
|
command:
|
|
|
|
cmd: >
|
|
|
|
cloud-localds
|
|
|
|
--network-config {{ playbook_dir }}/templates/network
|
|
|
|
{{ playbook_dir }}/vm/seed.qcow2
|
|
|
|
{{ playbook_dir }}/templates/user-data
|
|
|
|
creates: "{{ playbook_dir }}/vm/seed.qcow2"
|
2021-09-16 00:47:36 -04:00
|
|
|
|
|
|
|
- name: create mirbr0 bridge network
|
|
|
|
command: "virsh {{ item }}"
|
2021-09-17 16:42:15 -04:00
|
|
|
loop:
|
2021-09-16 00:47:36 -04:00
|
|
|
- net-define {{ playbook_dir }}/templates/network.xml
|
|
|
|
- net-autostart mirbr0
|
|
|
|
- net-start mirbr0
|
2021-09-26 16:22:29 -04:00
|
|
|
when: net_exists.rc != 0
|
2021-09-14 01:12:52 -04:00
|
|
|
|
2021-09-16 00:47:36 -04:00
|
|
|
- name: create storage pool
|
|
|
|
command: "virsh {{ item }}"
|
2021-09-17 16:42:15 -04:00
|
|
|
loop:
|
|
|
|
- pool-define-as mirror dir --target="{{ playbook_dir }}/vm/disks"
|
2021-09-16 00:47:36 -04:00
|
|
|
- pool-build mirror
|
|
|
|
- pool-autostart mirror
|
2021-09-22 00:50:14 -04:00
|
|
|
- pool-start mirror
|
2021-09-26 16:22:29 -04:00
|
|
|
when: pool_exists.rc != 0
|
2021-09-14 01:12:52 -04:00
|
|
|
|
2021-09-17 16:42:15 -04:00
|
|
|
# hardcoded to 10G since modification would require change to user-data
|
2021-09-16 00:47:36 -04:00
|
|
|
- name: create virtual disks
|
2021-09-17 16:42:15 -04:00
|
|
|
command:
|
|
|
|
cmd: "virsh vol-create-as mirror {{ item.name }} {{ item.size }}"
|
|
|
|
creates: "{{ playbook_dir }}/vm/disks/{{ 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 }
|
2021-09-14 01:12:52 -04:00
|
|
|
|
2021-09-26 16:22:29 -04:00
|
|
|
# does not exist yet
|
|
|
|
# --os-variant ubuntu20.04
|
2021-09-16 00:47:36 -04:00
|
|
|
- name: create vm
|
2021-09-15 00:46:18 -04:00
|
|
|
command: >
|
|
|
|
virt-install
|
|
|
|
--name=mirror
|
|
|
|
--memory=2048
|
|
|
|
--vcpus=1
|
|
|
|
--boot uefi
|
2021-09-26 16:22:29 -04:00
|
|
|
--os-type linux
|
2021-09-16 00:47:36 -04:00
|
|
|
--disk path={{ playbook_dir }}/vm/seed.qcow2,device=cdrom
|
2021-09-15 00:46:18 -04:00
|
|
|
--disk vol=mirror/mirror_root1.qcow2
|
|
|
|
--disk vol=mirror/mirror_root2.qcow2
|
|
|
|
--disk vol=mirror/mirror_disk1.qcow2
|
|
|
|
--disk vol=mirror/mirror_disk2.qcow2
|
|
|
|
--disk vol=mirror/mirror_disk3.qcow2
|
|
|
|
--disk vol=mirror/mirror_disk4.qcow2
|
|
|
|
--network bridge=mirbr0
|
|
|
|
--graphics vnc,port=5911,listen=127.0.0.1
|
|
|
|
--noautoconsole
|
2021-09-26 16:22:29 -04:00
|
|
|
when: vm_exists.rc != 0
|
2021-09-24 01:19:56 -04:00
|
|
|
# get user to set net.ipv4.ip_forward = 1 ?
|
|
|
|
|
2021-09-15 00:46:18 -04:00
|
|
|
# in the vm to disable cloud-init run
|
|
|
|
# sudo touch /etc/cloud/cloud-init.disabled
|
2021-09-12 16:32:12 -04:00
|
|
|
|
2021-09-16 00:47:36 -04:00
|
|
|
# wait ? seconds (hope that vm is made in foreground)
|
2021-09-15 00:46:18 -04:00
|
|
|
# copy over pub key into /root/.ssh/authorized_keys
|
|
|
|
# add line to ssh config that allows ssh as root
|
2021-09-14 01:12:52 -04:00
|
|
|
|
2021-09-26 16:22:29 -04:00
|
|
|
# modprobe kvm_intel
|
|
|
|
|
|
|
|
# depending on where you are installing may need to edit
|
|
|
|
# /etc/libvirt/qemu.conf
|
|
|
|
# user = "root"
|
|
|
|
# group = "root"
|
|
|
|
|
|
|
|
# then service libvirtd restart
|
|
|
|
|
|
|
|
# adduser <youruser> libvirt
|
|
|
|
# adduser -aG <youruser> libvirt
|
|
|
|
|
2021-09-26 02:32:22 -04:00
|
|
|
# this should execute in order right?
|
2021-09-24 01:19:56 -04:00
|
|
|
- name: setup mirror vm
|
|
|
|
hosts: 192.168.123.2
|
2021-09-26 02:32:22 -04:00
|
|
|
# - modify ssh config to allow root login
|
|
|
|
# - copy over ssh public keys (if provided)
|
|
|
|
roles:
|
|
|
|
- "../roles/system"
|
|
|
|
- "../roles/mirror"
|
|
|
|
# - "../roles/ftp"
|
|
|
|
# - "../roles/nginx"
|
|
|
|
# - "../roles/rsync"
|
|
|
|
# tasks:
|
|
|
|
# allow root login from here
|
|
|
|
# become: root
|
2021-09-17 16:42:15 -04:00
|
|
|
|
2021-09-26 02:32:22 -04:00
|
|
|
# loop does not work...
|
|
|
|
# - name: setup system
|
|
|
|
# import_role:
|
|
|
|
# name: "../roles/system"
|
|
|
|
# - name: setup mirror
|
|
|
|
# import_role:
|
|
|
|
# name: "../roles/mirror"
|
|
|
|
# - name: setup ftp
|
|
|
|
# import_role:
|
|
|
|
# name: "../roles/ftp"
|
|
|
|
# - name: setup nginx
|
|
|
|
# import_role:
|
|
|
|
# name: "../roles/nginx"
|
|
|
|
# - name: setup rsync
|
|
|
|
# import_role:
|
|
|
|
# name: "../roles/rsync"
|
|
|
|
# - name: setup rsync
|
|
|
|
# import_role: "../roles/mirrormanager"
|