From 9381d61d99b4058a37d13c6062656123ea89eddc Mon Sep 17 00:00:00 2001 From: Hyperling Date: Fri, 10 Oct 2025 16:07:17 -0700 Subject: [PATCH] Progress on testing provisioning on multiple distros. So far Debian and Ubuntu are working. Others need packages added. --- Config/ProvisionTests/Dockerfiles/arch | 12 ++ Config/ProvisionTests/Dockerfiles/debian | 12 ++ Config/ProvisionTests/Dockerfiles/fedora | 12 ++ Config/ProvisionTests/Dockerfiles/opensuse | 14 ++ Config/ProvisionTests/Dockerfiles/ubuntu | 12 ++ Config/ProvisionTests/bin/main.sh | 21 +++ .../docker-compose.standard.yml | 136 ++++++++++++++++++ Config/ProvisionTests/env.standard | 16 +++ Config/ProvisionTests/prep.sh | 23 +++ 9 files changed, 258 insertions(+) create mode 100644 Config/ProvisionTests/Dockerfiles/arch create mode 100644 Config/ProvisionTests/Dockerfiles/debian create mode 100644 Config/ProvisionTests/Dockerfiles/fedora create mode 100644 Config/ProvisionTests/Dockerfiles/opensuse create mode 100644 Config/ProvisionTests/Dockerfiles/ubuntu create mode 100644 Config/ProvisionTests/bin/main.sh mode change 100644 => 100755 Config/ProvisionTests/prep.sh diff --git a/Config/ProvisionTests/Dockerfiles/arch b/Config/ProvisionTests/Dockerfiles/arch new file mode 100644 index 0000000..c560724 --- /dev/null +++ b/Config/ProvisionTests/Dockerfiles/arch @@ -0,0 +1,12 @@ +# Create a VM for testing Ansible provisioning. + +FROM archlinux:base + +RUN pacman -Syu --noconfirm && pacman -Sy --noconfirm git bash curl sudo + +COPY bin/main.sh /root/main.sh +RUN chmod +x /root/main.sh + +WORKDIR /root/ +USER root +CMD ./main.sh diff --git a/Config/ProvisionTests/Dockerfiles/debian b/Config/ProvisionTests/Dockerfiles/debian new file mode 100644 index 0000000..c02e668 --- /dev/null +++ b/Config/ProvisionTests/Dockerfiles/debian @@ -0,0 +1,12 @@ +# Create a VM for testing Ansible provisioning. + +FROM debian:trixie + +RUN apt update && apt dist-upgrade -y && apt install -y git bash curl sudo + +COPY bin/main.sh /root/main.sh +RUN chmod +x /root/main.sh + +WORKDIR /root/ +USER root +CMD ./main.sh diff --git a/Config/ProvisionTests/Dockerfiles/fedora b/Config/ProvisionTests/Dockerfiles/fedora new file mode 100644 index 0000000..649eeb8 --- /dev/null +++ b/Config/ProvisionTests/Dockerfiles/fedora @@ -0,0 +1,12 @@ +# Create a VM for testing Ansible provisioning. + +FROM fedora:latest + +RUN dnf upgrade --refresh -y && dnf install -y git bash curl sudo + +COPY bin/main.sh /root/main.sh +RUN chmod +x /root/main.sh + +WORKDIR /root/ +USER root +CMD ./main.sh diff --git a/Config/ProvisionTests/Dockerfiles/opensuse b/Config/ProvisionTests/Dockerfiles/opensuse new file mode 100644 index 0000000..a4d45cb --- /dev/null +++ b/Config/ProvisionTests/Dockerfiles/opensuse @@ -0,0 +1,14 @@ +# Create a VM for testing Ansible provisioning. + +FROM opensuse/tumbleweed + +RUN zypper -n refresh \ + && zypper -n dist-upgrade -y \ + && zypper -n install -y git bash curl sudo + +COPY bin/main.sh /root/main.sh +RUN chmod +x /root/main.sh + +WORKDIR /root/ +USER root +CMD ./main.sh diff --git a/Config/ProvisionTests/Dockerfiles/ubuntu b/Config/ProvisionTests/Dockerfiles/ubuntu new file mode 100644 index 0000000..4bc69a6 --- /dev/null +++ b/Config/ProvisionTests/Dockerfiles/ubuntu @@ -0,0 +1,12 @@ +# Create a VM for testing Ansible provisioning. + +FROM ubuntu:rolling + +RUN apt update && apt dist-upgrade -y && apt install -y git bash curl sudo + +COPY bin/main.sh /root/main.sh +RUN chmod +x /root/main.sh + +WORKDIR /root/ +USER root +CMD ./main.sh diff --git a/Config/ProvisionTests/bin/main.sh b/Config/ProvisionTests/bin/main.sh new file mode 100644 index 0000000..b7986a4 --- /dev/null +++ b/Config/ProvisionTests/bin/main.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +sh -c "rm -rfv prov-test" +git clone $REPO --branch=$BRANCH prov-test + +cd prov-test + +echo "Starting Executable Script" + +tail -F /var/mail/mail & +tail -F /var/mail/ansible & + +logfile="/root/test.log" +$EXEC > $logfile & +tail -F $logfile + +echo "*** Finished $0 @ `date` ***" + +wait -n + +exit $? diff --git a/Config/ProvisionTests/docker-compose.standard.yml b/Config/ProvisionTests/docker-compose.standard.yml index e69de29..20f9054 100644 --- a/Config/ProvisionTests/docker-compose.standard.yml +++ b/Config/ProvisionTests/docker-compose.standard.yml @@ -0,0 +1,136 @@ +# Create containers which each execute a provisioning script and exit. + +volumes: + + pt-storage: + driver: local + driver_opts: + type: none + device: $PT_STORAGE_DIR + o: bind + +services: + + pt-arch: + container_name: pt-arch + build: + context: ./ + dockerfile: Dockerfiles/arch + network: host + restart: no + environment: + - REPO=$REPO + - BRANCH=$BRANCH + - EXEC=$EXEC + volumes: + - type: volume + source: pt-storage + target: /root + volume: + subpath: arch + deploy: + mode: global + resources: + limits: + cpus: $CPU + memory: $RAM + + + pt-debian: + container_name: pt-debian + build: + context: ./ + dockerfile: Dockerfiles/debian + network: host + restart: no + environment: + - REPO=$REPO + - BRANCH=$BRANCH + - EXEC=$EXEC + volumes: + - type: volume + source: pt-storage + target: /root + volume: + subpath: debian + deploy: + mode: global + resources: + limits: + cpus: $CPU + memory: $RAM + + + pt-ubuntu: + container_name: pt-ubuntu + build: + context: ./ + dockerfile: Dockerfiles/ubuntu + network: host + restart: no + environment: + - REPO=$REPO + - BRANCH=$BRANCH + - EXEC=$EXEC + volumes: + - type: volume + source: pt-storage + target: /root + volume: + subpath: ubuntu + deploy: + mode: global + resources: + limits: + cpus: $CPU + memory: $RAM + + + pt-fedora: + container_name: pt-fedora + build: + context: ./ + dockerfile: Dockerfiles/fedora + network: host + restart: no + environment: + - REPO=$REPO + - BRANCH=$BRANCH + - EXEC=$EXEC + volumes: + - type: volume + source: pt-storage + target: /root + volume: + subpath: fedora + deploy: + mode: global + resources: + limits: + cpus: $CPU + memory: $RAM + + + pt-opensuse: + container_name: pt-opensuse + build: + context: ./ + dockerfile: Dockerfiles/opensuse + network: host + restart: no + environment: + - REPO=$REPO + - BRANCH=$BRANCH + - EXEC=$EXEC + volumes: + - type: volume + source: pt-storage + target: /root + volume: + subpath: opensuse + deploy: + mode: global + resources: + limits: + cpus: $CPU + memory: $RAM diff --git a/Config/ProvisionTests/env.standard b/Config/ProvisionTests/env.standard index e69de29..89552c0 100644 --- a/Config/ProvisionTests/env.standard +++ b/Config/ProvisionTests/env.standard @@ -0,0 +1,16 @@ +# This file should be renamed '.env' and have any private values modified. + +COMPOSE_BAKE=true + +## Performance +CPU=0.2 +RAM=0.2G + +## Storage +#STORAGE_DIR=../../Volumes/ProvisionTests +PT_STORAGE_DIR=/tmp/ProvisionTests + +## Script +REPO=https://git.hyperling.com/me/env-ansible +BRANCH=dev +EXEC="./setup.sh -l" diff --git a/Config/ProvisionTests/prep.sh b/Config/ProvisionTests/prep.sh old mode 100644 new mode 100755 index e69de29..4d43806 --- a/Config/ProvisionTests/prep.sh +++ b/Config/ProvisionTests/prep.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env bash +# 2025-07-22 Hyperling +# Create the necessary folders for LibreTranslate's volumes to work. +# This must be run before the container will start properly. + +## Setup ## + +DIR="$(dirname -- "${BASH_SOURCE[0]}")" +source $DIR/.env +source ../../source.env + +## Main ## + +# Create folders. + +mkdir -pv "$PT_STORAGE_DIR/arch" +mkdir -pv "$PT_STORAGE_DIR/debian" +mkdir -pv "$PT_STORAGE_DIR/fedora" +mkdir -pv "$PT_STORAGE_DIR/ubuntu" +mkdir -pv "$PT_STORAGE_DIR/opensuse" + +# Finish successfully. +exit 0