aboutsummaryrefslogtreecommitdiffstats
path: root/roles/bhyve/tasks
diff options
context:
space:
mode:
Diffstat (limited to 'roles/bhyve/tasks')
-rw-r--r--roles/bhyve/tasks/guest.yml23
-rw-r--r--roles/bhyve/tasks/main.yml67
2 files changed, 90 insertions, 0 deletions
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"
remember that computers suck.