- Add missing name parameter to the test function

- Fix PHP deployment
- xinetd only accepts HUP when it runs as a daemon, for foreground process use a restart
This commit is contained in:
Sander van der Burg 2023-09-20 18:36:47 +02:00
parent 80e510ab58
commit 479afcda26
27 changed files with 58 additions and 10 deletions

View File

@ -15,6 +15,11 @@
}: }:
let let
phpPackage = php.override {
apxs2Support = true;
inherit apacheHttpd;
};
user = instanceName; user = instanceName;
group = instanceName; group = instanceName;
@ -51,8 +56,8 @@ let
preferLocalBuild = true; preferLocalBuild = true;
} }
'' ''
cat ${php}/etc/php.ini > $out cat ${phpPackage}/etc/php.ini > $out
cat ${php.phpIni} > $out cat ${phpPackage.phpIni} > $out
''; '';
in in
import ./default.nix { import ./default.nix {
@ -106,7 +111,7 @@ import ./default.nix {
'' else throw "Unknown type for module!" '' else throw "Unknown type for module!"
) modules} ) modules}
${lib.optionalString enablePHP '' ${lib.optionalString enablePHP ''
LoadModule php_module ${php}/modules/libphp.so LoadModule php_module ${phpPackage}/modules/libphp.so
''} ''}
ServerAdmin ${serverAdmin} ServerAdmin ${serverAdmin}

View File

@ -39,7 +39,7 @@ let
inherit processManager; inherit processManager;
}; };
processManagerContainer = lib.recursiveUpdate (stdenv.lib.optionalAttrs (processManager == "supervisord") { processManagerContainer = lib.recursiveUpdate (lib.optionalAttrs (processManager == "supervisord") {
supervisord-program = { supervisord-program = {
supervisordTargetDir = "/etc/supervisor/conf.d"; supervisordTargetDir = "/etc/supervisor/conf.d";
}; };

View File

@ -1,6 +1,7 @@
{ pkgs, testService, processManagers, profiles, nix-processmgmt }: { pkgs, testService, processManagers, profiles, nix-processmgmt }:
testService { testService {
name = "apache-tomcat-ajp-reverse-proxy";
exprFile = ./processes.nix; exprFile = ./processes.nix;
extraParams = { extraParams = {
inherit nix-processmgmt; inherit nix-processmgmt;

View File

@ -1,6 +1,7 @@
{ pkgs, testService, processManagers, profiles, nix-processmgmt }: { pkgs, testService, processManagers, profiles, nix-processmgmt }:
testService { testService {
name = "apache-tomcat";
exprFile = ./processes.nix; exprFile = ./processes.nix;
extraParams = { extraParams = {
inherit nix-processmgmt; inherit nix-processmgmt;

View File

@ -1,6 +1,7 @@
{ pkgs, testService, processManagers, profiles, nix-processmgmt }: { pkgs, testService, processManagers, profiles, nix-processmgmt }:
testService { testService {
name = "apache";
exprFile = ./processes.nix; exprFile = ./processes.nix;
extraParams = { extraParams = {
inherit nix-processmgmt; inherit nix-processmgmt;
@ -13,7 +14,7 @@ testService {
tests = {instanceName, instance, ...}: tests = {instanceName, instance, ...}:
'' ''
machine.succeed("curl --fail http://localhost:${toString instance.port} | grep 'Hello world!'") machine.succeed("curl --fail http://localhost:${toString instance.port} | grep 'Hello world'")
''; '';
inherit processManagers profiles; inherit processManagers profiles;

View File

@ -50,7 +50,7 @@ let
</head> </head>
<body> <body>
<h1><?php print("Hello world!"); ?></h1> <h1><?php print("Hello world from PHP!"); ?></h1>
</body> </body>
</html> </html>
EOF EOF

View File

@ -4,6 +4,7 @@ let
env = "NIX_PATH='nixpkgs=${<nixpkgs>}' SSH_OPTS='-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no' DISNIX_REMOTE_CLIENT=disnix-client"; env = "NIX_PATH='nixpkgs=${<nixpkgs>}' SSH_OPTS='-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no' DISNIX_REMOTE_CLIENT=disnix-client";
in in
testService { testService {
name = "disnix-with-apache-mysql";
exprFile = ../../../example-deployments/disnix/processes-with-apache-mysql.nix; exprFile = ../../../example-deployments/disnix/processes-with-apache-mysql.nix;
extraParams = { extraParams = {
inherit nix-processmgmt; inherit nix-processmgmt;

View File

@ -4,6 +4,7 @@ let
env = "NIX_PATH='nixpkgs=${<nixpkgs>}' SSH_OPTS='-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no' DISNIX_REMOTE_CLIENT=disnix-client"; env = "NIX_PATH='nixpkgs=${<nixpkgs>}' SSH_OPTS='-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no' DISNIX_REMOTE_CLIENT=disnix-client";
in in
testService { testService {
name = "disnix";
exprFile = ../../../example-deployments/disnix/processes-bare.nix; exprFile = ../../../example-deployments/disnix/processes-bare.nix;
extraParams = { extraParams = {
inherit nix-processmgmt; inherit nix-processmgmt;

View File

@ -4,6 +4,7 @@ let
env = "NIX_PATH='nixpkgs=${<nixpkgs>}' SSH_OPTS='-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no' DISNIX_REMOTE_CLIENT=disnix-client"; env = "NIX_PATH='nixpkgs=${<nixpkgs>}' SSH_OPTS='-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no' DISNIX_REMOTE_CLIENT=disnix-client";
in in
testService { testService {
name = "disnix-with-tomcat-mysql-multi-instance";
exprFile = ../../../example-deployments/disnix/processes-with-tomcat-mysql-multi-instance.nix; exprFile = ../../../example-deployments/disnix/processes-with-tomcat-mysql-multi-instance.nix;
extraParams = { extraParams = {
inherit nix-processmgmt; inherit nix-processmgmt;

View File

@ -4,6 +4,7 @@ let
env = "NIX_PATH='nixpkgs=${<nixpkgs>}' DISNIX_CLIENT_INTERFACE=disnix-soap-client DISNIX_TARGET_PROPERTY=targetEPR DISNIX_SOAP_CLIENT_USERNAME=admin DISNIX_SOAP_CLIENT_PASSWORD=secret"; env = "NIX_PATH='nixpkgs=${<nixpkgs>}' DISNIX_CLIENT_INTERFACE=disnix-soap-client DISNIX_TARGET_PROPERTY=targetEPR DISNIX_SOAP_CLIENT_USERNAME=admin DISNIX_SOAP_CLIENT_PASSWORD=secret";
in in
testService { testService {
name = "disnix-with-tomcat-mysql";
exprFile = ../../../example-deployments/disnix/processes-with-tomcat-mysql.nix; exprFile = ../../../example-deployments/disnix/processes-with-tomcat-mysql.nix;
extraParams = { extraParams = {
inherit nix-processmgmt; inherit nix-processmgmt;

View File

@ -1,6 +1,7 @@
{ pkgs, testService, processManagers, profiles, nix-processmgmt }: { pkgs, testService, processManagers, profiles, nix-processmgmt }:
testService { testService {
name = "docker";
exprFile = ./processes.nix; exprFile = ./processes.nix;
extraParams = { extraParams = {
inherit nix-processmgmt; inherit nix-processmgmt;

View File

@ -1,6 +1,7 @@
{ pkgs, testService, processManagers, profiles, nix-processmgmt }: { pkgs, testService, processManagers, profiles, nix-processmgmt }:
testService { testService {
name = "fcron";
exprFile = ./processes.nix; exprFile = ./processes.nix;
extraParams = { extraParams = {
inherit nix-processmgmt; inherit nix-processmgmt;

View File

@ -62,6 +62,7 @@ let
}; };
in in
testService { testService {
name = "hydra";
exprFile = ../../example-deployments/hydra/processes.nix; exprFile = ../../example-deployments/hydra/processes.nix;
extraParams = { extraParams = {
inherit nix-processmgmt; inherit nix-processmgmt;

View File

@ -1,6 +1,7 @@
{ pkgs, testService, processManagers, profiles, nix-processmgmt }: { pkgs, testService, processManagers, profiles, nix-processmgmt }:
testService { testService {
name = "influxdb";
exprFile = ./processes.nix; exprFile = ./processes.nix;
systemPackages = [ pkgs.influxdb ]; systemPackages = [ pkgs.influxdb ];
extraParams = { extraParams = {

View File

@ -1,6 +1,7 @@
{ pkgs, testService, processManagers, profiles, nix-processmgmt }: { pkgs, testService, processManagers, profiles, nix-processmgmt }:
testService { testService {
name = "mongodb";
exprFile = ./processes.nix; exprFile = ./processes.nix;
systemPackages = [ pkgs.mongodb ]; systemPackages = [ pkgs.mongodb ];
nixosConfig = { nixosConfig = {

View File

@ -1,6 +1,7 @@
{ pkgs, testService, processManagers, profiles, nix-processmgmt }: { pkgs, testService, processManagers, profiles, nix-processmgmt }:
testService { testService {
name = "mysql";
exprFile = ./processes.nix; exprFile = ./processes.nix;
extraParams = { extraParams = {
inherit nix-processmgmt; inherit nix-processmgmt;

View File

@ -1,6 +1,7 @@
{ pkgs, testService, processManagers, profiles, nix-processmgmt }: { pkgs, testService, processManagers, profiles, nix-processmgmt }:
testService { testService {
name = "nginx-reverse-proxy-hostbased";
exprFile = ./processes.nix; exprFile = ./processes.nix;
extraParams = { extraParams = {
inherit nix-processmgmt; inherit nix-processmgmt;

View File

@ -1,6 +1,7 @@
{ pkgs, testService, processManagers, profiles, nix-processmgmt }: { pkgs, testService, processManagers, profiles, nix-processmgmt }:
testService { testService {
name = "nginx-reverse-proxy-pathbased";
exprFile = ./processes.nix; exprFile = ./processes.nix;
extraParams = { extraParams = {
inherit nix-processmgmt; inherit nix-processmgmt;

View File

@ -1,6 +1,7 @@
{ pkgs, testService, processManagers, profiles, nix-processmgmt }: { pkgs, testService, processManagers, profiles, nix-processmgmt }:
testService { testService {
name = "nginx";
exprFile = ./processes.nix; exprFile = ./processes.nix;
extraParams = { extraParams = {
inherit nix-processmgmt; inherit nix-processmgmt;

View File

@ -1,6 +1,7 @@
{ pkgs, testService, processManagers, profiles, nix-processmgmt }: { pkgs, testService, processManagers, profiles, nix-processmgmt }:
testService { testService {
name = "postgresql";
exprFile = ./processes.nix; exprFile = ./processes.nix;
extraParams = { extraParams = {
inherit nix-processmgmt; inherit nix-processmgmt;

View File

@ -41,6 +41,7 @@ let
}; };
in in
testService { testService {
name = "s6-svscan";
exprFile = ./processes.nix; exprFile = ./processes.nix;
extraParams = { extraParams = {
inherit nix-processmgmt; inherit nix-processmgmt;

View File

@ -1,6 +1,7 @@
{ pkgs, testService, processManagers, profiles, nix-processmgmt }: { pkgs, testService, processManagers, profiles, nix-processmgmt }:
testService { testService {
name = "sshd";
exprFile = ./processes.nix; exprFile = ./processes.nix;
extraParams = { extraParams = {
inherit nix-processmgmt; inherit nix-processmgmt;
@ -32,11 +33,11 @@ testService {
# Make a special exception for the first instance running in privileged mode. It should be connectible with the default settings # Make a special exception for the first instance running in privileged mode. It should be connectible with the default settings
if instanceName == "sshd" && !forceDisableUserChange then '' if instanceName == "sshd" && !forceDisableUserChange then ''
machine.succeed( machine.succeed(
"ssh -i key -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no localhost $(type -p ls) /" "ssh -i key -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no localhost $(type -p ls) / >&2"
) )
'' else '' '' else ''
machine.succeed( machine.succeed(
"${pkgs.lib.optionalString forceDisableUserChange "su unprivileged -c '"}ssh -p ${toString instance.port} -i key -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no localhost $(type -p ls) /${pkgs.lib.optionalString forceDisableUserChange "'"}" "${pkgs.lib.optionalString forceDisableUserChange "su unprivileged -c '"}ssh -p ${toString instance.port} -i key -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no localhost $(type -p ls) /${pkgs.lib.optionalString forceDisableUserChange "'"} >&2"
) )
''; '';

View File

@ -26,6 +26,7 @@ let
}; };
in in
testService { testService {
name = "supervisord";
exprFile = ./processes.nix; exprFile = ./processes.nix;
extraParams = { extraParams = {
inherit nix-processmgmt; inherit nix-processmgmt;

View File

@ -1,6 +1,7 @@
{ pkgs, testService, processManagers, profiles, nix-processmgmt }: { pkgs, testService, processManagers, profiles, nix-processmgmt }:
testService { testService {
name = "svnserve";
exprFile = ./processes.nix; exprFile = ./processes.nix;
extraParams = { extraParams = {
inherit nix-processmgmt; inherit nix-processmgmt;

View File

@ -1,6 +1,7 @@
{ pkgs, testService, processManagers, profiles, nix-processmgmt }: { pkgs, testService, processManagers, profiles, nix-processmgmt }:
testService { testService {
name = "vsftpd";
exprFile = ./processes.nix; exprFile = ./processes.nix;
extraParams = { extraParams = {
inherit nix-processmgmt; inherit nix-processmgmt;

View File

@ -1,6 +1,7 @@
{ pkgs, testService, processManagers, profiles, nix-processmgmt }: { pkgs, testService, processManagers, profiles, nix-processmgmt }:
testService { testService {
name = "xinetd";
exprFile = ./processes.nix; exprFile = ./processes.nix;
extraParams = { extraParams = {
inherit nix-processmgmt; inherit nix-processmgmt;

View File

@ -1,13 +1,14 @@
{ pkgs, testService, processManagers, profiles, nix-processmgmt }: { pkgs, testService, processManagers, profiles, nix-processmgmt }:
testService { testService {
name = "xinetd-extendable";
exprFile = ./processes.nix; exprFile = ./processes.nix;
extraParams = { extraParams = {
inherit nix-processmgmt; inherit nix-processmgmt;
}; };
systemPackages = [ pkgs.inetutils ]; systemPackages = [ pkgs.inetutils ];
tests = {instanceName, instance, stateDir, runtimeDir, forceDisableUserChange, ...}: tests = {instanceName, instance, processManager, stateDir, runtimeDir, forceDisableUserChange, ...}:
if instanceName == "xinetd-primary" then if instanceName == "xinetd-primary" then
let let
tftpService = pkgs.writeTextFile { tftpService = pkgs.writeTextFile {
@ -33,8 +34,27 @@ testService {
machine.succeed( machine.succeed(
"cp ${tftpService} ${stateDir}/lib/${instanceName}/xinetd.d" "cp ${tftpService} ${stateDir}/lib/${instanceName}/xinetd.d"
) )
machine.succeed("kill -HUP $(cat ${runtimeDir}/${instanceName}.pid)")
''
+ (if processManager == "sysvinit" then
''
machine.succeed("kill -HUP $(cat ${runtimeDir}/${instanceName}.pid)")
''
else if processManager == "systemd" then
''
machine.succeed("systemctl restart nix-process-${instanceName}")
''
else if processManager == "supervisord" then
''
machine.succeed("supervisorctl restart ${instanceName}")
''
else if processManager == "s6-rc" then
''
machine.succeed("s6-rc -d change ${instanceName}")
machine.succeed("s6-rc -u change ${instanceName}")
''
else throw "Process manager not supported: ${processManager}")
+ ''
machine.succeed("echo hello > ${stateDir}/hello.txt") machine.succeed("echo hello > ${stateDir}/hello.txt")
# fmt: off # fmt: off
machine.succeed( machine.succeed(