nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at devShellTools-shell 97 lines 2.2 kB view raw
1{ pkgs, ... }: 2 3let 4 master = 5 { pkgs, ... }: 6 { 7 # data base is stored in memory 8 # server crashes with default memory size 9 virtualisation.memorySize = 1024; 10 11 services.moosefs.master = { 12 enable = true; 13 openFirewall = true; 14 autoInit = true; 15 exports = [ 16 "* / rw,alldirs,admin,maproot=0:0" 17 "* . rw" 18 ]; 19 }; 20 }; 21 22 chunkserver = 23 { pkgs, ... }: 24 { 25 virtualisation.emptyDiskImages = [ 4096 ]; 26 boot.initrd.postDeviceCommands = '' 27 ${pkgs.e2fsprogs}/bin/mkfs.ext4 -L data /dev/vdb 28 ''; 29 30 fileSystems = pkgs.lib.mkVMOverride { 31 "/data" = { 32 device = "/dev/disk/by-label/data"; 33 fsType = "ext4"; 34 }; 35 }; 36 37 services.moosefs = { 38 masterHost = "master"; 39 chunkserver = { 40 openFirewall = true; 41 enable = true; 42 hdds = [ "~/data" ]; 43 }; 44 }; 45 }; 46 47 metalogger = 48 { pkgs, ... }: 49 { 50 services.moosefs = { 51 masterHost = "master"; 52 metalogger.enable = true; 53 }; 54 }; 55 56 client = 57 { pkgs, ... }: 58 { 59 services.moosefs.client.enable = true; 60 }; 61 62in 63{ 64 name = "moosefs"; 65 66 nodes = { 67 inherit master; 68 inherit metalogger; 69 chunkserver1 = chunkserver; 70 chunkserver2 = chunkserver; 71 client1 = client; 72 client2 = client; 73 }; 74 75 testScript = '' 76 # prepare master server 77 master.start() 78 master.wait_for_unit("multi-user.target") 79 master.wait_for_unit("mfs-master.service") 80 81 metalogger.wait_for_unit("mfs-metalogger.service") 82 83 for chunkserver in [chunkserver1, chunkserver2]: 84 chunkserver.wait_for_unit("multi-user.target") 85 chunkserver.succeed("chown moosefs:moosefs /data") 86 chunkserver.succeed("systemctl restart mfs-chunkserver") 87 chunkserver.wait_for_unit("mfs-chunkserver.service") 88 89 for client in [client1, client2]: 90 client.wait_for_unit("multi-user.target") 91 client.succeed("mkdir /moosefs") 92 client.succeed("mount -t moosefs master:/ /moosefs") 93 94 client1.succeed("echo test > /moosefs/file") 95 client2.succeed("grep test /moosefs/file") 96 ''; 97}