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