EvoBSD is a set of Ansible playbooks and roles providing a customisation of the OpenBSD operating system used by Evolix.
Go to file
Jérémy Dubois c6e3f06fd6 Add .gitignore file 2020-04-21 11:40:31 +02:00
roles Change in depreciated options 2020-04-21 11:35:45 +02:00
tasks Add initial project 2018-12-28 11:23:49 +01:00
vars revert forgotten extra variables in main 2019-09-19 17:12:21 -04:00
.gitignore Add .gitignore file 2020-04-21 11:40:31 +02:00
CONTRIBUTING.md Adds contribution guidelines 2019-01-03 12:53:58 -05:00
LICENSE Add license file 2018-12-28 11:22:56 +01:00
README.md Adds contribution guidelines 2019-01-03 12:53:58 -05:00
evolixisation.yml Make evolixisation playbook more complete 2020-04-21 11:15:27 +02:00
hosts Add initial project 2018-12-28 11:23:49 +01:00
prerequisite.yml Add initial project 2018-12-28 11:23:49 +01:00


EvoBSD 1.0

EvoBSD is an ansible project used for customising OpenBSD hosts used by Evolix.

How to install an OpenBSD machine

Note : The system must be installed with a root account only. Put your public key in the remote root's autorized_keys (/root/.ssh/authorized_keys)

1 - Install ansible's prerequisites

ansible-playbook prerequisite.yml -CDi hosts -l HOSTNAME

2 - Run it

ansible-playbook evolixisation.yml --ask-vault-pass -CDKi hosts -l HOSTNAME


Changes can be tested by using Packer and vmm(4) :

  • This process depends on the Go programming language.
# pkg_add go packer
$ go get -u github.com/prep/packer-builder-vmm/cmd/packer-builder-vmm
  • Here is an example build file
$ vim openbsd.json
  "description": "OpenBSD installation on vmm(4)",

  "variables": {
    "hostname":    "evobsd",
    "domain":      "example.com",

    "password": "evolix"

  "builders": [
      "type":      "vmm",
      "vm_name":   "evobsd",
      "disk_size": "2G",
      "format":    "qcow2",
      "mem_size":  "1024M",

      "iso_urls":          ["downloads/install64.fs", "https://ftp.nluug.nl/pub/OpenBSD/6.4/amd64/install64.fs"],
      "iso_checksum":      "7aa4344cb39efbf67300f97ac7eec005b607e8c19d4e31a0a593a8ee2b7136e4",
      "iso_checksum_type": "sha256",

      "boot_wait": "10s",
      "boot_command": [

        "cat <<EOF >disklabel.template<enter>",
        "/ 1G-* 100%<enter>",

        "cat <<EOF >install.conf<enter>",
        "System hostname = {{user `hostname`}}<enter>",
        "DNS domain name = {{user `domain`}}<enter>",
        "Password for root account = {{user `password`}}<enter>",
        "Do you expect to run the X Window System = no<enter>",
        "Setup a user = no<enter>",
        "Which disk is the root disk = sd1<enter>",
        "Use (A)uto layout, (E)dit auto layout, or create (C)ustom layout = c<enter>",
        "URL to autopartitioning template for disklabel = file://disklabel.template<enter>",
        "Location of sets = disk<enter>",
        "Is the disk partition already mounted = no<enter>",
        "Set name(s) = -bsd.rd<enter>",
        "Set name(s) = done<enter>",
        "Directory does not contain SHA256.sig. Continue without verification = yes<enter>",
        "What timezone are you in = Europe/Paris<enter>",

        "install -af install.conf<enter>",

        "/sbin/halt -p<enter><wait15>"
  • You need your unprivileged user to be able to run vmctl(8) through doas(1)
# echo "permit nopass myunprivilegeduser as root cmd /usr/sbin/vmctl" >> /etc/doas.conf
  • Build the virtual machine
$ packer build openbsd.json
  • Start it
doas vmctl start evobsd -cL -d output-vmm/evobsd.qcow2
  • Enable NAT on your host machine
pass out on em0 inet from tap0:network to any nat-to (em0)

assuming em0 is your egress interface


See the contribution guidelines


MIT License