inventory/auto-pull-update: init
This commit is contained in:
@@ -37,10 +37,105 @@
|
||||
"rigel"
|
||||
"vega"
|
||||
];
|
||||
|
||||
dm-bootstrapper = [
|
||||
"rigel"
|
||||
"cursa"
|
||||
"deneb"
|
||||
"bosona"
|
||||
"canopus"
|
||||
];
|
||||
};
|
||||
|
||||
instances = {
|
||||
|
||||
data-mesher = {
|
||||
module = {
|
||||
name = "data-mesher";
|
||||
input = "clan-core";
|
||||
};
|
||||
roles.bootstrap.tags = [ "dm-bootstrapper" ];
|
||||
roles.default.tags = [ "all" ];
|
||||
roles.default.settings.interfaces = [ "ygg" ];
|
||||
};
|
||||
|
||||
auto-pull-update = {
|
||||
module = {
|
||||
name = "dm-pull-deploy";
|
||||
input = "clan-community";
|
||||
};
|
||||
roles.push.machines."rigel".settings = {
|
||||
gitUrl = "https://git.b4l.co.th/newedge/infra.git";
|
||||
branch = "main";
|
||||
};
|
||||
roles.push.extraModules = [
|
||||
(
|
||||
{ pkgs, config, ... }:
|
||||
{
|
||||
# work around until upstream is fixed
|
||||
environment.systemPackages = [
|
||||
(pkgs.writeShellApplication {
|
||||
name = "custom-dm-send-deploy";
|
||||
runtimeInputs = [
|
||||
config.services.data-mesher.package
|
||||
pkgs.git
|
||||
pkgs.nix
|
||||
pkgs.jq
|
||||
];
|
||||
text =
|
||||
let
|
||||
settings.gitUrl = "https://git.b4l.co.th/newedge/infra.git";
|
||||
settings.branch = "main";
|
||||
in
|
||||
''
|
||||
if [ $# -gt 1 ]; then
|
||||
echo "Usage: dm-send-deploy [<flake-ref>]"
|
||||
echo "Without arguments, sends the latest commit on '${settings.branch}' from ${settings.gitUrl}"
|
||||
echo "Example: dm-send-deploy git+https://example.com/repo.git?rev=abc123..."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
KEY="${config.clan.core.vars.generators.dm-pull-deploy-signing-key.files."signing.key".path}"
|
||||
if [ ! -r "$KEY" ]; then
|
||||
echo "Error: cannot read signing key at $KEY (are you root?)"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ $# -eq 1 ]; then
|
||||
FLAKE_REF="$1"
|
||||
else
|
||||
REV=$(git ls-remote "${settings.gitUrl}" "refs/heads/${settings.branch}" | cut -f1)
|
||||
if [ -z "$REV" ]; then
|
||||
echo "Error: could not determine latest commit on ${settings.branch} from ${settings.gitUrl}"
|
||||
exit 1
|
||||
fi
|
||||
FLAKE_REF="git+${settings.gitUrl}?rev=$REV"
|
||||
fi
|
||||
|
||||
TMPFILE=$(mktemp)
|
||||
trap 'rm -f "$TMPFILE"' EXIT
|
||||
|
||||
printf '%s' "$FLAKE_REF" > "$TMPFILE"
|
||||
|
||||
NETWORK_ID="${config.clan.core.vars.generators.data-mesher-network.files."network.pub".path}"
|
||||
|
||||
data-mesher file update "$TMPFILE" \
|
||||
--url http://localhost:7331 \
|
||||
--network-id "$NETWORK_ID" \
|
||||
--key "$KEY" \
|
||||
--name "dm_pull_deploy/target"
|
||||
|
||||
echo "Deployment target pushed: $FLAKE_REF"
|
||||
'';
|
||||
})
|
||||
];
|
||||
}
|
||||
)
|
||||
];
|
||||
roles.default.tags = [ "all" ];
|
||||
roles.default.settings.action = "switch";
|
||||
};
|
||||
|
||||
sshd = {
|
||||
roles.server.tags."all" = { };
|
||||
roles.server.settings = {
|
||||
|
||||
Reference in New Issue
Block a user