at 18.03-beta 1.2 kB view raw
1{ system ? builtins.currentSystem }: 2 3with import ../lib/testing.nix { inherit system; }; 4with pkgs.lib; 5 6let 7 metadataDrive = pkgs.stdenv.mkDerivation { 8 name = "metadata"; 9 buildCommand = '' 10 mkdir -p $out/iso 11 12 cat << EOF > $out/iso/user-data 13 #cloud-config 14 write_files: 15 - content: | 16 cloudinit 17 path: /tmp/cloudinit-write-file 18 EOF 19 20 cat << EOF > $out/iso/meta-data 21 instance-id: iid-local01 22 local-hostname: "test" 23 public-keys: 24 - "should be a key!" 25 EOF 26 ${pkgs.cdrkit}/bin/genisoimage -volid cidata -joliet -rock -o $out/metadata.iso $out/iso 27 ''; 28 }; 29in makeTest { 30 meta = with pkgs.stdenv.lib.maintainers; { 31 maintainers = [ lewo ]; 32 }; 33 machine = 34 { config, pkgs, ... }: 35 { 36 virtualisation.qemu.options = [ "-cdrom" "${metadataDrive}/metadata.iso" ]; 37 services.cloud-init.enable = true; 38 }; 39 testScript = '' 40 $machine->start; 41 $machine->waitForUnit("cloud-init.service"); 42 $machine->succeed("cat /tmp/cloudinit-write-file | grep -q 'cloudinit'"); 43 44 $machine->waitUntilSucceeds("cat /root/.ssh/authorized_keys | grep -q 'should be a key!'"); 45 ''; 46}