From 3e891b1a1fe21c26e7a09293106bf60dea6334e5 Mon Sep 17 00:00:00 2001 From: binary Date: Thu, 19 Nov 2020 23:40:34 +0100 Subject: Basic behyve initialization --- roles/bhyve/tasks/guest.yml | 23 ++++++++++++++++ roles/bhyve/tasks/main.yml | 67 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 90 insertions(+) create mode 100644 roles/bhyve/tasks/guest.yml create mode 100644 roles/bhyve/tasks/main.yml (limited to 'roles/bhyve/tasks') diff --git a/roles/bhyve/tasks/guest.yml b/roles/bhyve/tasks/guest.yml new file mode 100644 index 0000000..9cabf90 --- /dev/null +++ b/roles/bhyve/tasks/guest.yml @@ -0,0 +1,23 @@ + +# bhyve guests ~~ roles/bhyve/tasks/guest.yml +# bhyve guest configuration + +--- + +- name: check kvm directory + stat: path="/data/bhyve/{{ guest.name }}" + register: st + +- name: create all vm bound with current host + shell: vm create -s "{{ guest.disks[0].size }}" "{{ guest.name }}" + when: st.stat.isdir is not defined + +- name: create guest configuration + template: + src: "templates/{{ guest.image }}.conf.j2" + dest: "/data/bhyve/{{ guest.name }}/{{ guest.name }}.conf" + vars: + guest_cpu: "{{ guest.cpu }}" + guest_memory: "{{ guest.memory }}" + guest_switch: "{{ hypervisor.switch }}" + guest_disks: "{{ guest.disks }}" diff --git a/roles/bhyve/tasks/main.yml b/roles/bhyve/tasks/main.yml new file mode 100644 index 0000000..34cafd8 --- /dev/null +++ b/roles/bhyve/tasks/main.yml @@ -0,0 +1,67 @@ + +# bhyve ~~ roles/bhyve/tasks/main.yml +# bhyve hypervisor configuration + +--- + +- name: create bhyve group + group: + name: bhyve + state: present + +- name: create bhyve user + user: + name: bhyve + group: bhyve + comment: Unpreviliged user for bhyve guests + shell: /sbin/nologin + system: true + +- name: check existence of bhyve directory + file: + path: /data/bhyve + owner: bhyve + group: bhyve + state: directory + mode: 0711 + +- name: load bhyve module + shell: "! kldstat | grep vmm && kldload vmm" + failed_when: false + +- name: install bhyve components + package: name="{{ item }}" + loop: + - vm-bhyve + - bhyve-firmware + - grub2-bhyve + +- name: enable bhyve vm + shell: | + sysrc vm_enable="YES" + sysrc vm_dir="/data/bhyve" + +- name: init vm directory and filesets + shell: vm init + +- name: create network switch + shell: | + vm switch create {{ hypervisor.switch }} + vm switch add public {{ hypervisor.interface }} + ignore_errors: true + +- name: create per vm configuration + include: guest.yml guest="{{ item }}" + loop: "{{ vms }}" + +- name: activate on boot all enabled vm + lineinfile: + path: /etc/rc.conf + regexp: "^vm_list=" + line: vm_list="{% for vm in vms %}{{ vm.name }} {% endfor %}" + +- name: set delay on boot between vm + lineinfile: + path: /etc/rc.conf + regexp: "^vm_delay=" + line: vm_delay="5" -- cgit v1.2.3