amazon-init.service: fix starting services at startup
We now make it happen later in the boot process so that multi-user has already activated, so as to not run afoul of the logic in switch-to-configuration.pl. It's not my favorite solution, but at least it works. Also added a check to the VM test to catch the failure so we don't break in future. Fixes #23121
This commit is contained in:
parent
bccac381b2
commit
6018cf4a69
|
@ -45,9 +45,8 @@ in {
|
|||
inherit script;
|
||||
description = "Reconfigure the system from EC2 userdata on startup";
|
||||
|
||||
wantedBy = [ "sshd.service" ];
|
||||
before = [ "sshd.service" ];
|
||||
after = [ "network-online.target" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
after = [ "multi-user.target" ];
|
||||
requires = [ "network-online.target" ];
|
||||
|
||||
restartIfChanged = false;
|
||||
|
|
|
@ -25,8 +25,13 @@ let
|
|||
# access. Mostly copied from
|
||||
# modules/profiles/installation-device.nix.
|
||||
system.extraDependencies =
|
||||
[ pkgs.stdenv pkgs.busybox pkgs.perlPackages.ArchiveCpio
|
||||
pkgs.unionfs-fuse pkgs.mkinitcpio-nfs-utils
|
||||
with pkgs; [
|
||||
stdenv busybox perlPackages.ArchiveCpio unionfs-fuse mkinitcpio-nfs-utils
|
||||
|
||||
# These are used in the configure-from-userdata tests for EC2. Httpd and valgrind are requested
|
||||
# directly by the configuration we set, and libxslt.bin is used indirectly as a build dependency
|
||||
# of the derivation for dbus configuration files.
|
||||
apacheHttpd valgrind.doc libxslt.bin
|
||||
];
|
||||
}
|
||||
];
|
||||
|
@ -137,6 +142,8 @@ in {
|
|||
|
||||
# ### http://nixos.org/channels/nixos-unstable nixos
|
||||
userData = ''
|
||||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
<nixpkgs/nixos/modules/virtualisation/amazon-image.nix>
|
||||
|
@ -146,12 +153,22 @@ in {
|
|||
environment.etc.testFile = {
|
||||
text = "whoa";
|
||||
};
|
||||
|
||||
services.httpd = {
|
||||
enable = true;
|
||||
adminAddr = "test@example.org";
|
||||
documentRoot = "${pkgs.valgrind.doc}/share/doc/valgrind/html";
|
||||
};
|
||||
networking.firewall.allowedTCPPorts = [ 80 ];
|
||||
}
|
||||
'';
|
||||
script = ''
|
||||
$machine->start;
|
||||
$machine->waitForFile("/etc/testFile");
|
||||
$machine->succeed("cat /etc/testFile | grep -q 'whoa'");
|
||||
|
||||
$machine->waitForUnit("httpd.service");
|
||||
$machine->succeed("curl http://localhost | grep Valgrind");
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue