at master 2.6 kB view raw
1{ lib, ... }: 2{ 3 name = "nomad"; 4 nodes = { 5 default_server = 6 { pkgs, lib, ... }: 7 { 8 networking = { 9 interfaces.eth1.ipv4.addresses = lib.mkOverride 0 [ 10 { 11 address = "192.168.1.1"; 12 prefixLength = 16; 13 } 14 ]; 15 }; 16 17 environment.etc."nomad.custom.json".source = (pkgs.formats.json { }).generate "nomad.custom.json" { 18 region = "universe"; 19 datacenter = "earth"; 20 }; 21 22 services.nomad = { 23 enable = true; 24 25 settings = { 26 server = { 27 enabled = true; 28 bootstrap_expect = 1; 29 }; 30 }; 31 32 extraSettingsPaths = [ "/etc/nomad.custom.json" ]; 33 enableDocker = false; 34 }; 35 }; 36 37 custom_state_dir_server = 38 { pkgs, lib, ... }: 39 { 40 networking = { 41 interfaces.eth1.ipv4.addresses = lib.mkOverride 0 [ 42 { 43 address = "192.168.1.1"; 44 prefixLength = 16; 45 } 46 ]; 47 }; 48 49 environment.etc."nomad.custom.json".source = (pkgs.formats.json { }).generate "nomad.custom.json" { 50 region = "universe"; 51 datacenter = "earth"; 52 }; 53 54 services.nomad = { 55 enable = true; 56 dropPrivileges = false; 57 58 settings = { 59 data_dir = "/nomad/data/dir"; 60 server = { 61 enabled = true; 62 bootstrap_expect = 1; 63 }; 64 }; 65 66 extraSettingsPaths = [ "/etc/nomad.custom.json" ]; 67 enableDocker = false; 68 }; 69 70 systemd.services.nomad.serviceConfig.ExecStartPre = "${pkgs.writeShellScript "mk_data_dir" '' 71 set -euxo pipefail 72 73 ${pkgs.coreutils}/bin/mkdir -p /nomad/data/dir 74 ''}"; 75 }; 76 }; 77 78 testScript = '' 79 def test_nomad_server(server): 80 server.wait_for_unit("nomad.service") 81 82 # wait for healthy server 83 server.wait_until_succeeds( 84 "[ $(nomad operator raft list-peers | grep true | wc -l) == 1 ]" 85 ) 86 87 # wait for server liveness 88 server.succeed("[ $(nomad server members | grep -o alive | wc -l) == 1 ]") 89 90 # check the region 91 server.succeed("nomad server members | grep -o universe") 92 93 # check the datacenter 94 server.succeed("[ $(nomad server members | grep -o earth | wc -l) == 1 ]") 95 96 97 servers = [default_server, custom_state_dir_server] 98 99 for server in servers: 100 test_nomad_server(server) 101 ''; 102}