From fbfadadffcddf02ec73e9b07068505eafad1df5a Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Tue, 1 Nov 2022 18:53:03 -0400 Subject: [PATCH] Start a bhyve role. --- .../environments/laptop/host_vars/odofreebsd | 1 + ansible/playbook.yaml | 51 ++++++++++--------- ansible/roles/bhyve/defaults/main.yaml | 1 + ansible/roles/bhyve/tasks/common.yaml | 14 +++++ ansible/roles/bhyve/tasks/freebsd.yaml | 22 ++++++++ ansible/roles/bhyve/tasks/linux.yaml | 6 +++ ansible/roles/bhyve/tasks/main.yaml | 2 + ansible/roles/bhyve/tasks/peruser.yaml | 29 +++++++++++ .../roles/bhyve/tasks/peruser_freebsd.yaml | 0 ansible/roles/bhyve/tasks/peruser_linux.yaml | 0 10 files changed, 101 insertions(+), 25 deletions(-) create mode 100644 ansible/roles/bhyve/defaults/main.yaml create mode 100644 ansible/roles/bhyve/tasks/common.yaml create mode 100644 ansible/roles/bhyve/tasks/freebsd.yaml create mode 100644 ansible/roles/bhyve/tasks/linux.yaml create mode 100644 ansible/roles/bhyve/tasks/main.yaml create mode 100644 ansible/roles/bhyve/tasks/peruser.yaml create mode 100644 ansible/roles/bhyve/tasks/peruser_freebsd.yaml create mode 100644 ansible/roles/bhyve/tasks/peruser_linux.yaml diff --git a/ansible/environments/laptop/host_vars/odofreebsd b/ansible/environments/laptop/host_vars/odofreebsd index ba98b33..9c383e3 100644 --- a/ansible/environments/laptop/host_vars/odofreebsd +++ b/ansible/environments/laptop/host_vars/odofreebsd @@ -44,3 +44,4 @@ jail_list: - name: dagger conf: src: dagger +bhyve_dataset: zroot/freebsd/release/vm diff --git a/ansible/playbook.yaml b/ansible/playbook.yaml index ce84353..9e387b6 100644 --- a/ansible/playbook.yaml +++ b/ansible/playbook.yaml @@ -2,28 +2,29 @@ vars: ansible_become: True roles: - - sudo - - users - - package_manager - - zrepl - - zsh - - network - - sshd - - base - - firewall - - cpu - - ntp - - build - - graphics - - gpg - - fonts - - alacritty - - sway - - emacs - - firefox - - devfs - - ssh_client - - jail - - fuse - - autofs - - exfat + # - sudo + # - users + # - package_manager + # - zrepl + # - zsh + # - network + # - sshd + # - base + # - firewall + # - cpu + # - ntp + # - build + # - graphics + # - gpg + # - fonts + # - alacritty + # - sway + # - emacs + # - firefox + # - devfs + # - ssh_client + # - jail + # - fuse + # - autofs + # - exfat + - bhyve diff --git a/ansible/roles/bhyve/defaults/main.yaml b/ansible/roles/bhyve/defaults/main.yaml new file mode 100644 index 0000000..1838e9c --- /dev/null +++ b/ansible/roles/bhyve/defaults/main.yaml @@ -0,0 +1 @@ +bhyve_mountpoint: "/vm" diff --git a/ansible/roles/bhyve/tasks/common.yaml b/ansible/roles/bhyve/tasks/common.yaml new file mode 100644 index 0000000..d7c1735 --- /dev/null +++ b/ansible/roles/bhyve/tasks/common.yaml @@ -0,0 +1,14 @@ +- import_tasks: tasks/freebsd.yaml + when: 'os_flavor == "freebsd"' + +- import_tasks: tasks/linux.yaml + when: 'os_flavor == "linux"' + +- include_tasks: + file: tasks/peruser.yaml + apply: + become: yes + become_user: "{{ initialize_user }}" + loop: "{{ users | dict2items | community.general.json_query('[?value.initialize==`true`].key') }}" + loop_control: + loop_var: initialize_user diff --git a/ansible/roles/bhyve/tasks/freebsd.yaml b/ansible/roles/bhyve/tasks/freebsd.yaml new file mode 100644 index 0000000..bbdf85f --- /dev/null +++ b/ansible/roles/bhyve/tasks/freebsd.yaml @@ -0,0 +1,22 @@ +# +# Create a new VM: +# vm iso 'http://mirror.clarkson.edu/archlinux/iso/2022.01.01/archlinux-2022.01.01-x86_64.iso' +# vm create -t arch -s 50G testvm +# vm install testvm 'archlinux-2022.01.01-x86_64.iso' +# +# +- name: Install packages + package: + name: + - vm-bhyve + - tmux # for interactive consoles + - bhyve-firmware # For UEFI + # - uefi-edk2-bhyve # Other UEFI firmware? + state: present + +- name: Create zfs dataset + zfs: + name: "{{ bhyve_dataset }}" + state: present + extra_zfs_properties: + mountpoint: "{{ bhyve_mountpoint }}" diff --git a/ansible/roles/bhyve/tasks/linux.yaml b/ansible/roles/bhyve/tasks/linux.yaml new file mode 100644 index 0000000..e1835f0 --- /dev/null +++ b/ansible/roles/bhyve/tasks/linux.yaml @@ -0,0 +1,6 @@ +# - name: Install packages +# pacman: +# name: +# - foo +# state: present +# update_cache: true diff --git a/ansible/roles/bhyve/tasks/main.yaml b/ansible/roles/bhyve/tasks/main.yaml new file mode 100644 index 0000000..639ba76 --- /dev/null +++ b/ansible/roles/bhyve/tasks/main.yaml @@ -0,0 +1,2 @@ +- import_tasks: tasks/common.yaml + when: os_flavor == "freebsd" and bhyve_dataset is defined diff --git a/ansible/roles/bhyve/tasks/peruser.yaml b/ansible/roles/bhyve/tasks/peruser.yaml new file mode 100644 index 0000000..111e886 --- /dev/null +++ b/ansible/roles/bhyve/tasks/peruser.yaml @@ -0,0 +1,29 @@ +- include_role: + name: per_user + +# - name: Create directories +# file: +# name: "{{ account_homedir.stdout }}/{{ item }}" +# state: directory +# mode: 0700 +# owner: "{{ account_name.stdout }}" +# group: "{{ group_name.stdout }}" +# loop: +# - ".config/foo" + +# - name: Copy files +# copy: +# src: "files/{{ item.src }}" +# dest: "{{ account_homedir.stdout }}/{{ item.dest }}" +# mode: 0600 +# owner: "{{ account_name.stdout }}" +# group: "{{ group_name.stdout }}" +# loop: +# - src: foo.conf +# dest: .config/foo/foo.conf + +- import_tasks: tasks/peruser_freebsd.yaml + when: 'os_flavor == "freebsd"' + +- import_tasks: tasks/peruser_linux.yaml + when: 'os_flavor == "linux"' diff --git a/ansible/roles/bhyve/tasks/peruser_freebsd.yaml b/ansible/roles/bhyve/tasks/peruser_freebsd.yaml new file mode 100644 index 0000000..e69de29 diff --git a/ansible/roles/bhyve/tasks/peruser_linux.yaml b/ansible/roles/bhyve/tasks/peruser_linux.yaml new file mode 100644 index 0000000..e69de29