Files
nspawn-oci/machinectl-oci-import.sh
T
2022-11-02 20:37:39 +00:00

36 lines
993 B
Bash

#!/usr/bin/env bash
set -euo pipefail
mkdir -p /run/nspawn-oci
skopeo_output=$(echo /run/nspawn-oci/$1 | sed s.://./.g)
mkdir -p $skopeo_output
skopeo copy $1 oci:$skopeo_output:latest
umoci_output=/run/nspawn-oci/$2
rm -rf $umoci_output
umoci --verbose unpack --image $skopeo_output $umoci_output
mkdir -p /etc/systemd/nspawn
oci_config=$umoci_output/config.json
nspawn_config=/etc/systemd/nspawn/$2.nspawn
cat << end > $nspawn_config
[Exec]
ProcessTwo=true
end
for environment in $(jq --compact-output '.process.env' $oci_config | sed "s/[][]//g;s/\"//g;s/,/ /g")
do
echo $environment
cat << end >> $nspawn_config
Environment=$environment
end
done
cat << end >> $nspawn_config
WorkingDirectory=$(jq --compact-output '.process.cwd' $oci_config | sed "s/[][]//g;s/\"//g;s/,/ /g")
Parameters=$(jq --compact-output '.process.args' $oci_config | sed "s/[][]//g;s/,/ /g")
end
machinectl import-fs $umoci_output/rootfs $2
echo "$2 created from $1. start/enable via systemd-nspawn@$2.service"