diff --git a/ansible/roles/blank/tasks/common.yaml b/ansible/roles/blank/tasks/common.yaml index 386bbf1..bef243a 100644 --- a/ansible/roles/blank/tasks/common.yaml +++ b/ansible/roles/blank/tasks/common.yaml @@ -30,6 +30,14 @@ # - src: foo.conf # dest: /usr/local/etc/foo.conf +# - name: Clone Source +# git: +# repo: "https://foo.bar/baz.git" +# dest: /foo/bar +# version: "v1.0.2" +# force: true +# diff: false + - import_tasks: tasks/freebsd.yaml when: 'os_flavor == "freebsd"' diff --git a/ansible/roles/freebsd_update_server/files/build_release.bash b/ansible/roles/freebsd_update_server/files/build_release.bash new file mode 100644 index 0000000..9dc6185 --- /dev/null +++ b/ansible/roles/freebsd_update_server/files/build_release.bash @@ -0,0 +1,15 @@ +#!/usr/bin/env bash +# +set -euo pipefail +IFS=$'\n\t' +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +function main { + build_release +} + +function build_release { + /usr/src/release/release.sh -c /opt/freebsd_update_server/release.conf +} + +main "${@}" diff --git a/ansible/roles/freebsd_update_server/files/release.conf b/ansible/roles/freebsd_update_server/files/release.conf new file mode 100644 index 0000000..915bc0f --- /dev/null +++ b/ansible/roles/freebsd_update_server/files/release.conf @@ -0,0 +1,118 @@ +#!/bin/sh +# + +## Redefine environment variables here to override prototypes +## defined in release.sh. +#load_chroot_env() { } +#load_target_env() { } +#buildenv_setup() { } + +## Set the directory within which the release will be built. +CHROOTDIR="/scratch" + +## Do not explicitly require the devel/git port to be installed. +#NOGIT=1 +## Set the version control system host. +GITROOT="https://git.freebsd.org/" +GITSRC="src.git" +GITPORTS="ports.git" + +## Set the src/, ports/, and doc/ branches or tags. +#SRCBRANCH="stable/13" +SRCBRANCH="main" +PORTBRANCH="main" + +## Sample configuration for using git from ports. +#GITCMD="/usr/local/bin/git clone -q --branch main" + +## Set to override the default target architecture. +#TARGET="amd64" +#TARGET_ARCH="amd64" +#KERNEL="GENERIC" +KERNEL="GENERIC-NODEBUG" +## Multiple kernels may be set. +#KERNEL="GENERIC XENHVM" + +## Set to specify a custom make.conf and/or src.conf +#MAKE_CONF="/etc/local/make.conf" +#SRC_CONF="/etc/local/src.conf" + +## Set to use make(1) flags. +#MAKE_FLAGS="-s" + +## Set to use world- and kernel-specific make(1) flags. +#WORLD_FLAGS="-j $(sysctl -n hw.ncpu)" +#KERNEL_FLAGS="-j $(( $(( $(sysctl -n hw.ncpu) + 1 )) / 2 ))" + +## Set miscellaneous 'make release' settings. +#NOPORTS= +#NOSRC= +#WITH_DVD= +#WITH_COMPRESSED_IMAGES= + +## Set to '1' to disable multi-threaded xz(1) compression. +#XZ_THREADS=0 + +## Set when building embedded images. +#EMBEDDEDBUILD= + +## Set to a list of ports required to build embedded system-on-chip +## images, such as sysutils/u-boot-rpi. +#EMBEDDEDPORTS= + +## Set to the hardware platform of the target userland. This value +## is passed to make(1) to set the TARGET (value of uname -m) to cross +## build. +#EMBEDDED_TARGET= + +## Set to the machine processor architecture of the target userland. +## This value is passed to make(1) to set the TARGET_ARCH (value of uname -p) +## to cross build. +#EMBEDDED_TARGET_ARCH= + +## Set to skip the chroot environment buildworld/installworld/distribution +## step if it is expected the build environment will exist via alternate +## means. +#CHROOTBUILD_SKIP= + +## Set to a non-empty value skip checkout or update of /usr/src in +## the chroot. This is intended for use when /usr/src already exists. +#SRC_UPDATE_SKIP= + +## Set to a non-empty value skip checkout or update of /usr/ports in +## the chroot. This is intended for use when /usr/ports already exists. +#PORTS_UPDATE_SKIP= + +## Set to pass additional flags to make(1) for the build chroot setup, such +## as TARGET/TARGET_ARCH. +#CHROOT_MAKEENV= + +## Set to a non-empty value to build virtual machine images as part of the +## release build. +#WITH_VMIMAGES= + +## Set to a non-empty value to compress virtual machine images with xz(1) +## as part of the release build. +#WITH_COMPRESSED_VMIMAGES= + +## If WITH_VMIMAGES is set to a non-empty value, this is the name of the +## file to use for the installed userland/kernel. +#VMBASE="vm" + +## If WITH_VMIMAGES is set to a non-empty value, this is the size of the +## virtual machine disk filesystem. Valid size values are described in +## the makefs(8) manual page. +#VMSIZE="20g" + +## If WITH_VMIMAGES is set to a non-empty value, this is a list of disk +## image formats to create. Valid values are listed in the mkimg(1) +## manual page, as well as 'mkimg --formats' output. +#VMFORMATS="vhdf vmdk qcow2 raw" + +## Set to a non-empty value to build virtual machine images for various +## cloud providers as part of the release build. +#WITH_CLOUDWARE= + +## If WITH_CLOUDWARE is set to a non-empty value, this is a list of providers +## to create disk images. +#CLOUDWARE="EC2 GCE VAGRANT-VIRTUALBOX VAGRANT-VMWARE" diff --git a/ansible/roles/freebsd_update_server/tasks/common.yaml b/ansible/roles/freebsd_update_server/tasks/common.yaml index fef1101..764e0c6 100644 --- a/ansible/roles/freebsd_update_server/tasks/common.yaml +++ b/ansible/roles/freebsd_update_server/tasks/common.yaml @@ -1,5 +1,5 @@ - import_tasks: tasks/freebsd.yaml - when: 'os_flavor == "freebsd"' + when: 'os_flavor == "freebsd" and build_user is defined' - import_tasks: tasks/linux.yaml when: 'os_flavor == "linux"' diff --git a/ansible/roles/freebsd_update_server/tasks/freebsd.yaml b/ansible/roles/freebsd_update_server/tasks/freebsd.yaml index b2e1ac8..f7edb61 100644 --- a/ansible/roles/freebsd_update_server/tasks/freebsd.yaml +++ b/ansible/roles/freebsd_update_server/tasks/freebsd.yaml @@ -23,3 +23,25 @@ become: true become_user: "{{ build_user.name }}" diff: false + +- name: Install Configuration + copy: + src: "files/{{ item.src }}" + dest: "{{ item.dest }}" + mode: 0600 + owner: "{{ build_user.name }}" + group: "{{ build_user.group }}" + loop: + - src: release.conf + dest: /opt/freebsd_update_server/release.conf + +- name: Install scripts + copy: + src: "files/{{ item.src }}" + dest: "{{ item.dest }}" + mode: 0755 + owner: root + group: wheel + loop: + - src: build_release.bash + dest: /usr/local/bin/build_release