Initial commit
This commit is contained in:
87
generate-config.sh
Executable file
87
generate-config.sh
Executable file
@@ -0,0 +1,87 @@
|
||||
#!/bin/bash
|
||||
set -o errexit -o pipefail -o noclobber -o nounset -o errtrace -o functrace
|
||||
|
||||
shopt -s dotglob
|
||||
|
||||
quadlet_template="
|
||||
- path: /home/__USER__/.config/containers/systemd/user/__FILE__
|
||||
mode: 0644
|
||||
contents:
|
||||
local: quadlets/__USER__/__FILE__
|
||||
user:
|
||||
name: __USER__
|
||||
group:
|
||||
name: __USER__"
|
||||
home_template="
|
||||
- path: /var/home/__USER__/__FILE__
|
||||
mode: 0755
|
||||
contents:
|
||||
local: home/__USER__/__FILE__
|
||||
user:
|
||||
name: __USER__
|
||||
group:
|
||||
name: __USER__"
|
||||
service_template="
|
||||
- path: /var/home/__USER__/.config/systemd/user/__FILE__
|
||||
mode: 0755
|
||||
contents:
|
||||
local: services/__USER__/__FILE__
|
||||
user:
|
||||
name: __USER__
|
||||
group:
|
||||
name: __USER__"
|
||||
directory_template="
|
||||
- path: /var/mnt/nas/containers/__USER__/storage/__VOLUME__
|
||||
mode: 0755
|
||||
user:
|
||||
name: __USER__
|
||||
group:
|
||||
name: __USER__"
|
||||
files_template="
|
||||
files:
|
||||
- path: /var/lib/systemd/linger/__USER__
|
||||
mode: 0644"
|
||||
users=('arr' 'gitea' 'homeassistant' 'jdownloader' 'kiwix' 'komga' 'navidrome' 'nextcloud' 'nginx' 'pairdrop' 'paperless' 'pihole' 'qbittorrent' 'synapse' 'tga' 'wallabag')
|
||||
mkdir -p users
|
||||
for user in "${users[@]}"; do
|
||||
user_butane="users/${user}.bu"
|
||||
sed "s/__USER__/${user}/g" user-template.bu >| "${user_butane}"
|
||||
if [[ -d "quadlets/${user}" ]]; then
|
||||
directory_template_user="${directory_template//__USER__/${user}}"
|
||||
for file in "quadlets/${user}/"*.volume; do
|
||||
if [[ -f "${file}" ]]; then
|
||||
content="$(grep "Device" "${file}")"
|
||||
if [[ "${content}" =~ ^Device=/var/mnt/nas/containers/${user}/storage/(.+)$ ]]; then
|
||||
volume="${BASH_REMATCH[1]}"
|
||||
printf '%s' "${directory_template_user//__VOLUME__/${volume}}" >> "${user_butane}"
|
||||
else
|
||||
echo "Not found! ${content}"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
fi
|
||||
printf '%s' "${files_template//__USER__/${user}}" >> "${user_butane}"
|
||||
if [[ -d "quadlets/${user}" ]]; then
|
||||
quadlet_template_user="${quadlet_template//__USER__/${user}}"
|
||||
for file in "quadlets/${user}/"*; do
|
||||
filename="$(basename "${file}")"
|
||||
printf '%s' "${quadlet_template_user//__FILE__/${filename}}" >> "${user_butane}"
|
||||
done
|
||||
fi
|
||||
if [[ -d "home/${user}" ]]; then
|
||||
home_template_user="${home_template//__USER__/${user}}"
|
||||
for file in "home/${user}/"*; do
|
||||
filename="$(basename "${file}")"
|
||||
printf '%s' "${home_template_user//__FILE__/${filename}}" >> "${user_butane}"
|
||||
done
|
||||
fi
|
||||
if [[ -d "services/${user}" ]]; then
|
||||
service_template_user="${service_template//__USER__/${user}}"
|
||||
for file in "services/${user}/"*; do
|
||||
filename="$(basename "${file}")"
|
||||
printf '%s' "${service_template_user//__FILE__/${filename}}" >> "${user_butane}"
|
||||
done
|
||||
fi
|
||||
podman run --rm --interactive --security-opt label=disable --volume "${PWD}:/pwd" --workdir /pwd quay.io/coreos/butane:release --pretty --strict -d /pwd "${user_butane}" >| "users/${user}.ign"
|
||||
done
|
||||
podman run --rm --interactive --security-opt label=disable --volume "${PWD}:/pwd" --workdir /pwd quay.io/coreos/butane:release --pretty --strict -d /pwd pi4.bu >| pi4.ign
|
||||
Reference in New Issue
Block a user