MCPcopy Create free account
hub / github.com/celer-pkg/celer / Command

Method Command

cmds/cmd_setup.go:20–68  ·  view source on GitHub ↗
(celer *configs.Celer)

Source from the content-addressed store, hash-verified

18}
19
20func (s *setupCmd) Command(celer *configs.Celer) *cobra.Command {
21 command := &cobra.Command{
22 Use: "setup",
23 Short: "One-time NFS cache setup (server or client, run with sudo).",
24 Long: `One-time NFS cache setup for server or client.
25
26Server mode (--nfs-server-dir):
27 Prepares an NFS-shared directory for use as a celer package cache.
28 It must be run as root on the NFS server. It performs:
29
30 1. Create "celer" system user/group if it does not exist.
31 2. chown -R celer:celer <nfs-dir>
32 3. chmod 2775 on all directories (group writable + setgid), chmod 664 on all files (group can overwrite in-place).
33 4. chattr +a on all directories (append-only: allows new files, blocks deletion).
34 5. Add the invoking non-root user to celer group (uses SUDO_USER when run via sudo).
35 6. Add NFS export to /etc/exports and reload (exportfs -ra).
36 7. Install cron job to keep new directories append-only (chattr +a every minute).
37
38Client mode (--nfs-client-dir):
39 Sets up an NFS client mount for the celer package cache.
40 It must be run as root on the client machine. It performs:
41
42 1. Install NFS client packages.
43 2. Mount the NFS share on the existing local directory.
44 3. Validate that local celer group gid matches the mounted export gid (NFS sec=sys checks numeric gids).
45 4. Add the invoking non-root user to celer group (uses SUDO_USER when run via sudo).
46 5. Add entry to /etc/fstab for persistent mounting.
47
48Note: group membership takes effect after re-login or running: newgrp celer
49
50Examples:
51 sudo celer setup --nfs-server-dir=/srv/celer-cache
52 sudo celer setup --nfs-client-dir=/home/phil/celer-cache@10.0.8.60:/mnt/data/celer-cache
53 sudo celer setup --nfs-server-dir=/srv/celer-cache --remove
54 sudo celer setup --nfs-client-dir=/home/phil/celer-cache@10.0.8.60:/mnt/data/celer-cache --remove`,
55 Args: cobra.NoArgs,
56 RunE: func(cmd *cobra.Command, args []string) error {
57 return s.doSetup()
58 },
59 }
60
61 command.Flags().StringVar(&s.nfsServerDir, "nfs-server-dir", "", "path to the NFS cache directory on the server")
62 command.Flags().StringVar(&s.nfsClientDir, "nfs-client-dir", "", "NFS client mount setup, format: <mount_point>@<server>:<export_path>")
63 command.Flags().BoolVar(&s.remove, "remove", false, "remove NFS server/client setup configuration")
64
65 command.SilenceErrors = true
66 command.SilenceUsage = true
67 return command
68}
69
70func (s *setupCmd) doSetup() error {
71 if os.Geteuid() != 0 {

Callers

nothing calls this directly

Calls 1

doSetupMethod · 0.95

Tested by

no test coverage detected