Removed syncoid module
This commit is contained in:
parent
917b7f352d
commit
a816f12d4c
|
@ -1,91 +0,0 @@
|
||||||
{
|
|
||||||
options,
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib) mkIf;
|
|
||||||
|
|
||||||
cfg = config.aa.services.syncoid;
|
|
||||||
in {
|
|
||||||
options.aa.services.syncoid = with lib; {
|
|
||||||
enable = mkEnableOption "syncoid (ZFS snap replication)";
|
|
||||||
commands = mkOption {
|
|
||||||
type = types.attrs;
|
|
||||||
default = {};
|
|
||||||
description = "Commands to pass directly to syncoid, see `services.syncoid.commands`";
|
|
||||||
};
|
|
||||||
remoteTargetUser = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
default = "";
|
|
||||||
description = "The user to use on the target machine.";
|
|
||||||
};
|
|
||||||
remoteTargetDatasets = mkOption {
|
|
||||||
type = types.listOf types.str;
|
|
||||||
default = [];
|
|
||||||
description = "Datasets to be used as a remote target (e.g. a NAS's backups dataset)";
|
|
||||||
};
|
|
||||||
remoteTargetPublicKeys = mkOption {
|
|
||||||
type = types.listOf types.str;
|
|
||||||
default = [];
|
|
||||||
description = "SSH public keys that the syncoid service's user should trust";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
services.syncoid = {
|
|
||||||
enable = true;
|
|
||||||
localSourceAllow =
|
|
||||||
options.services.syncoid.localSourceAllow.default
|
|
||||||
++ [
|
|
||||||
"mount"
|
|
||||||
];
|
|
||||||
localTargetAllow =
|
|
||||||
options.services.syncoid.localTargetAllow.default
|
|
||||||
++ [
|
|
||||||
"destroy"
|
|
||||||
];
|
|
||||||
commands = lib.mkAliasDefinitions options.aa.services.syncoid.commands;
|
|
||||||
};
|
|
||||||
|
|
||||||
environment.systemPackages = mkIf (cfg.remoteTargetUser != "") (with pkgs; [
|
|
||||||
lzop
|
|
||||||
mbuffer
|
|
||||||
]);
|
|
||||||
|
|
||||||
users = mkIf (cfg.remoteTargetUser != "") {
|
|
||||||
users."${cfg.remoteTargetUser}" = {
|
|
||||||
shell = pkgs.bashInteractive;
|
|
||||||
group = cfg.remoteTargetUser;
|
|
||||||
isSystemUser = true;
|
|
||||||
home = "/var/lib/${cfg.remoteTargetUser}";
|
|
||||||
createHome = true;
|
|
||||||
openssh.authorizedKeys.keys = cfg.remoteTargetPublicKeys;
|
|
||||||
};
|
|
||||||
groups."${cfg.remoteTargetUser}" = {};
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.services.setup-syncoid-remote = {
|
|
||||||
description = "Permission setup for syncoid remote targets";
|
|
||||||
documentation = ["https://github.com/jimsalterjrs/sanoid/wiki/Syncoid#running-without-root"];
|
|
||||||
wantedBy = ["multi-user.target"];
|
|
||||||
path = [pkgs.zfs];
|
|
||||||
|
|
||||||
serviceConfig = {
|
|
||||||
Type = "oneshot";
|
|
||||||
RemainAfterExit = "yes";
|
|
||||||
};
|
|
||||||
|
|
||||||
script = ''
|
|
||||||
DATASETS=(${toString cfg.remoteTargetDatasets})
|
|
||||||
for dataset in "''${DATASETS[@]}"; do
|
|
||||||
zfs allow \
|
|
||||||
-u ${cfg.remoteTargetUser} \
|
|
||||||
compression,mountpoint,create,mount,receive,rollback,destroy \
|
|
||||||
"$dataset"
|
|
||||||
done
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -44,16 +44,6 @@
|
||||||
configureClientRouting = true;
|
configureClientRouting = true;
|
||||||
configureServerRouting = true;
|
configureServerRouting = true;
|
||||||
};
|
};
|
||||||
services.syncoid = {
|
|
||||||
enable = true;
|
|
||||||
commands = {
|
|
||||||
"rpool" = {
|
|
||||||
target = "backups@192.168.113.13:tank/backups/gospel/rpool";
|
|
||||||
recursive = true;
|
|
||||||
sshKey = "/var/lib/syncoid/.ssh/id_ed25519";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
services.prometheus.enable = true;
|
services.prometheus.enable = true;
|
||||||
services.promtail.enable = true;
|
services.promtail.enable = true;
|
||||||
services.hydra = {
|
services.hydra = {
|
||||||
|
|
|
@ -42,13 +42,6 @@
|
||||||
};
|
};
|
||||||
services.loki.enable = true;
|
services.loki.enable = true;
|
||||||
services.promtail.enable = true;
|
services.promtail.enable = true;
|
||||||
services.syncoid = {
|
|
||||||
# sudo -u backups zfs create -o mountpoint=/tank/backups/gospel tank/backups/gospel
|
|
||||||
enable = true;
|
|
||||||
remoteTargetUser = "backups";
|
|
||||||
remoteTargetDatasets = ["tank/backups"];
|
|
||||||
remoteTargetPublicKeys = ["ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAhA+9O2OBMDH1Xnj6isu36df5TOdZG8aEA4JpN2K60e syncoid@gospel"];
|
|
||||||
};
|
|
||||||
services.teslamate = {
|
services.teslamate = {
|
||||||
enable = true;
|
enable = true;
|
||||||
database = {
|
database = {
|
||||||
|
|
Loading…
Reference in a new issue