|
|
|
@ -29,13 +29,13 @@ |
|
|
|
|
|
|
|
|
|
- name: fetch ubuntu iso |
|
|
|
|
get_url: |
|
|
|
|
# url: "https://releases.ubuntu.com/20.04.3/ubuntu-20.04.3-live-server-amd64.iso" |
|
|
|
|
# dest: "{{ playbook_dir }}/vm/ubuntu20_04.iso" |
|
|
|
|
url: "http://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.img" |
|
|
|
|
dest: "{{ playbook_dir }}/vm/focal-server-cloudimg-amd64.img" |
|
|
|
|
url: "https://releases.ubuntu.com/20.04.3/ubuntu-20.04.3-live-server-amd64.iso" |
|
|
|
|
dest: "{{ playbook_dir }}/vm/ubuntu20_04.iso" |
|
|
|
|
|
|
|
|
|
# Installing VMs from Ready Images |
|
|
|
|
# https://www.x386.xyz/index.php/2021/01/06/kvm-on-ubuntu-server-1/ |
|
|
|
|
# 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: |
|
|
|
@ -55,19 +55,6 @@ |
|
|
|
|
# {{ playbook_dir }}/templates/meta-data |
|
|
|
|
# creates: "{{ playbook_dir }}/vm/seed.iso" |
|
|
|
|
|
|
|
|
|
# # ??? |
|
|
|
|
# - name: create new image |
|
|
|
|
# command: |
|
|
|
|
# cmd: > |
|
|
|
|
# qemu-img create |
|
|
|
|
# -b {{ playbook_dir }}/focal-server-cloudimg-amd64.img |
|
|
|
|
# -f qcow2 |
|
|
|
|
# -F qcow2 |
|
|
|
|
# {{ playbook_dir }}/vm/mirror.img |
|
|
|
|
# creates: "{{ playbook_dir }}/vm/mirror.img" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- name: create mirbr0 bridge network |
|
|
|
|
command: "virsh {{ item }}" |
|
|
|
|
loop: |
|
|
|
@ -85,7 +72,7 @@ |
|
|
|
|
- pool-start mirror |
|
|
|
|
when: pool_exists.rc != 0 |
|
|
|
|
|
|
|
|
|
# hardcoded to 10G since modification would require change to user-data |
|
|
|
|
# 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 }}" |
|
|
|
@ -103,6 +90,8 @@ |
|
|
|
|
|
|
|
|
|
# --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 |
|
|
|
|
command: > |
|
|
|
|
virt-install |
|
|
|
@ -111,8 +100,7 @@ |
|
|
|
|
--vcpus=1 |
|
|
|
|
--boot uefi |
|
|
|
|
--os-type linux |
|
|
|
|
--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 |
|
|
|
|
--cdrom {{ playbook_dir }}/vm/ubuntu20_04.iso |
|
|
|
|
--disk vol=mirror/mirror_root1.qcow2,bus=virtio |
|
|
|
|
--disk vol=mirror/mirror_root2.qcow2,bus=virtio |
|
|
|
|
--disk vol=mirror/mirror_disk1.qcow2,bus=virtio |
|
|
|
@ -122,58 +110,4 @@ |
|
|
|
|
--network bridge=mirbr0,model=virtio |
|
|
|
|
--graphics vnc,port=5911,listen=127.0.0.1 |
|
|
|
|
--noautoconsole |
|
|
|
|
when: vm_exists.rc != 0 |
|
|
|
|
# get user to set net.ipv4.ip_forward = 1 ? |
|
|
|
|
|
|
|
|
|
# in the vm to disable cloud-init run |
|
|
|
|
# sudo touch /etc/cloud/cloud-init.disabled |
|
|
|
|
|
|
|
|
|
# wait ? seconds (hope that vm is made in foreground) |
|
|
|
|
# copy over pub key into /root/.ssh/authorized_keys |
|
|
|
|
# add line to ssh config that allows ssh as root |
|
|
|
|
|
|
|
|
|
# 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 |
|
|
|
|
|
|
|
|
|
# this should execute in order right? |
|
|
|
|
- name: setup mirror vm |
|
|
|
|
hosts: 192.168.123.2 |
|
|
|
|
# - 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 |
|
|
|
|
|
|
|
|
|
# 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" |
|
|
|
|
when: vm_exists.rc != 0 |