NixOS & NixOps deklaratives Gruppenmanagement und Services

505
8bit.wappen

Kann man in NixOS und NixOps Gruppen deklarativ verwalten?

Ich möchte in der Lage sein, eine neue Gruppe zu erstellen configuration.nixund Benutzer hinzuzufügen. Ich konnte keine verfügbaren Optionen dafür finden und habe Probleme mit manuell hinzugefügten Gruppen, die durch neue Nixops-Bereitstellungen entfernt wurden.

Was ich versucht habe

Ich habe versucht, die durch Dienste erstellten Benutzergruppen in einer configuration.nixDatei zu ändern:

system.activationScripts = { mediaGroup = '' echo "Adding `media` group" getent group media || groupadd media ''; };  users.users.plex.extraGroups = [ "media" ]; users.users.radarr.extraGroups = [ "media" ]; users.users.sonarr.extraGroups = [ "media" ]; users.users.deluge.extraGroups = [ "media" ]; 

Und auch durch Ändern der Dienste, Plex, Radarr, Sonarr und Sintflut, kann eine zusätzliche Gruppenoption gewählt werden:

{ config, pkgs, lib, ... }:  with lib;  let cfg = config.services.sonarr; in { options = { services.sonarr = { openFirewall = mkOption { type = types.bool; default = false; description = '' Open ports in the firewall for the media server ''; };  user = mkOption { type = types.str; default = "sonarr"; description = "User account under which sonarr runs."; };  group = mkOption { type = types.str; default = "sonarr"; description = "Group under which sonarr runs."; };  }; };  config = mkIf cfg.enable { systemd.services.sonarr = pkgs.lib.mkForce { description = "Sonarr"; after = [ "network.target" ]; wantedBy = [ "multi-user.target" ]; preStart = '' test -d /var/lib/sonarr/ || { echo "Creating sonarr data directory in /var/lib/sonarr/" mkdir -p /var/lib/sonarr/ } chown -R $:$ /var/lib/sonarr/ chmod 0700 /var/lib/sonarr/ '';  serviceConfig = { Type = "simple"; User = cfg.user; Group = cfg.group; PermissionsStartOnly = "true"; ExecStart = "$/bin/NzbDrone --no-browser"; Restart = "on-failure"; }; };  networking.firewall = mkIf cfg.openFirewall { allowedTCPPorts = [ 8989 ]; };  users.users = mkIf (cfg.user == "sonarr") { sonarr = pkgs.lib.mkForce { uid = config.ids.uids.sonarr; home = "/var/lib/sonarr"; group = cfg.group; extraGroups = [ "media" ]; }; };  users.groups = mkIf (cfg.group == "sonarr") { sonarr = pkgs.lib.mkForce { gid = config.ids.gids.sonarr; }; };  }; } 

Auf jedem nixops deploybekomme ich:

my_server...> activating the configuration...  my_server...> removing group ‘media’  my_server...> warning: user ‘media’ has unknown group ‘media’  my_server...> warning: user ‘plex’ has unknown group ‘media’  my_server...> warning: user ‘radarr’ has unknown group ‘media’  my_server...> warning: user ‘sonarr’ has unknown group ‘media’  

Und wenn ich jede Benutzergruppe überprüfe, bekomme ich Folgendes, auch wenn ich den Benutzer manuell zu einer Gruppe hinzugefügt habe usermod:

[root@my_server:/var/lib]# groups sonarr sonarr : nogroup 

Kontext

Das Fehlen einer gemeinsamen Gruppe zwischen diesen Diensten führt zu Berechtigungsproblemen, die die Automatisierung des Dateikopierens von Sonarr und Radarr auf die Plex Media-Standorte verhindern. Ich denke, das ist das einzige Problem damit, ich habe auch den Sprühflutdienst so konfiguriert, dass er einen umaskvon verwendet, 002und die Berechtigungen scheinen korrekt zu sein.

[root@my_server:/var/lib/deluge/Downloads]# ls -l && cd MovieFolder && ls -l drwxrwxr-- 2 deluge media 4096 Aug 26 11:39 MovieFolder -rw-rw-r-- 1 deluge media 2420763104 Aug 26 11:08 TheMovie.mkv 

Auch die Nachricht von Sonarr und Radarr:

No files found are eligible for import in /var/lib/deluge/Downloads/MovieFolder 

Und eine Beispielprotokollmeldung:

18-8-26 12:47:51.3|Error|DownloadedEpisodesImportService|Import failed, path does not exist or is not accessible by Sonarr: /var/lib/deluge/Downloads/MovieFolder 
0

1 Antwort auf die Frage

0
tilpner

Versuchen

users.groups.media.members = [ ... ]; 

oder

users.groups.media = {}; users.users.plex.extraGroups = [ "media" ]; 
Willkommen bei Super User! Könnten Sie eine kleine Erklärung hinzufügen, warum Sie vorschlagen, dass OP diese Dinge versucht? bertieb vor 6 Jahren 0