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}