Add constructor functions for deploying container provider services with Disnix
This commit is contained in:
parent
daca434313
commit
4b4250e0b6
|
@ -0,0 +1,56 @@
|
|||
{ pkgs
|
||||
, stateDir
|
||||
, logDir
|
||||
, runtimeDir
|
||||
, cacheDir
|
||||
, tmpDir
|
||||
, forceDisableUserChange
|
||||
, processManager
|
||||
}:
|
||||
|
||||
let
|
||||
constructors = import ../services-agnostic/constructors.nix {
|
||||
inherit pkgs stateDir logDir runtimeDir cacheDir tmpDir forceDisableUserChange processManager;
|
||||
};
|
||||
in
|
||||
{
|
||||
simpleWebappApache = import ./simple-webapp-apache.nix {
|
||||
apacheConstructorFun = constructors.simpleWebappApache;
|
||||
dysnomia = pkgs.dysnomia.override (origArgs: {
|
||||
enableApacheWebApplication = true;
|
||||
});
|
||||
};
|
||||
|
||||
simpleAppservingTomcat = import ./simple-appserving-tomcat.nix {
|
||||
inherit stateDir;
|
||||
tomcatConstructorFun = constructors.simpleAppservingTomcat;
|
||||
dysnomia = pkgs.dysnomia.override (origArgs: {
|
||||
enableTomcatWebApplication = true;
|
||||
});
|
||||
};
|
||||
|
||||
mysql = import ./mysql.nix {
|
||||
inherit runtimeDir;
|
||||
mysqlConstructorFun = constructors.mysql;
|
||||
dysnomia = pkgs.dysnomia.override (origArgs: {
|
||||
enableMySQLDatabase = true;
|
||||
});
|
||||
};
|
||||
|
||||
simpleMongodb = import ./simplemongodb.nix {
|
||||
inherit (pkgs) stdenv;
|
||||
mongodbConstructorFun = constructors.simpleMongodb;
|
||||
dysnomia = pkgs.dysnomia.override (origArgs: {
|
||||
enableMongoDatabase = true;
|
||||
});
|
||||
};
|
||||
|
||||
extendableSupervisord = import ./extendable-supervisord.nix {
|
||||
inherit stateDir;
|
||||
inherit (pkgs) stdenv;
|
||||
supervisordConstructorFun = constructors.extendableSupervisord;
|
||||
dysnomia = pkgs.dysnomia.override (origArgs: {
|
||||
enableSupervisordProgram = true;
|
||||
});
|
||||
};
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
{supervisordConstructorFun, stdenv, dysnomia, stateDir}:
|
||||
{instanceSuffix ? "", inetHTTPServerPort ? 9001, postInstall ? "", type}:
|
||||
|
||||
let
|
||||
instanceName = "supervisord${instanceSuffix}";
|
||||
|
||||
supervisordTargetDir = "${stateDir}/lib/${instanceName}/conf.d";
|
||||
|
||||
pkg = supervisordConstructorFun {
|
||||
inherit instanceSuffix inetHTTPServerPort;
|
||||
postInstall = ''
|
||||
# Add Dysnomia container configuration file for Supervisord
|
||||
mkdir -p $out/etc/dysnomia/containers
|
||||
cat > $out/etc/dysnomia/containers/supervisord-program${instanceSuffix} <<EOF
|
||||
supervisordTargetDir="${supervisordTargetDir}"
|
||||
EOF
|
||||
|
||||
# Copy the Dysnomia module that manages a Supervisord program
|
||||
mkdir -p $out/libexec/dysnomia
|
||||
ln -s ${dysnomia}/libexec/dysnomia/supervisord-program $out/libexec/dysnomia
|
||||
'';
|
||||
};
|
||||
in
|
||||
{
|
||||
name = "supervisord${instanceSuffix}";
|
||||
inherit pkg type supervisordTargetDir;
|
||||
providesContainer = "supervisord-program";
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
{mysqlConstructorFun, dysnomia, runtimeDir}:
|
||||
{port ? 3306, instanceSuffix ? "", type}:
|
||||
|
||||
let
|
||||
mysqlSocket = "${runtimeDir}/mysqld${instanceSuffix}/mysqld${instanceSuffix}.sock";
|
||||
|
||||
pkg = mysqlConstructorFun {
|
||||
inherit port instanceSuffix;
|
||||
postInstall = ''
|
||||
# Add Dysnomia container configuration file for MySQL database
|
||||
mkdir -p $out/etc/dysnomia/containers
|
||||
cat > $out/etc/dysnomia/containers/mysql-database${instanceSuffix} <<EOF
|
||||
mysqlPort=${toString port}
|
||||
mysqlUsername=root
|
||||
mysqlPassword=
|
||||
mysqlSocket=${mysqlSocket}
|
||||
EOF
|
||||
|
||||
# Copy the Dysnomia module that manages MySQL database
|
||||
mkdir -p $out/libexec/dysnomia
|
||||
ln -s ${dysnomia}/libexec/dysnomia/mysql-database $out/libexec/dysnomia
|
||||
'';
|
||||
};
|
||||
in
|
||||
rec {
|
||||
name = "mysql${instanceSuffix}";
|
||||
mysqlPort = port;
|
||||
|
||||
inherit pkg type mysqlSocket;
|
||||
|
||||
providesContainer = "mysql-database${instanceSuffix}";
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
{tomcatConstructorFun, dysnomia, stateDir}:
|
||||
{instanceSuffix ? "", serverPort ? 8005, httpPort ? 8080, httpsPort ? 8443, ajpPort ? 8009, commonLibs ? [], type}:
|
||||
|
||||
let
|
||||
catalinaBaseDir = "${stateDir}/tomcat${instanceSuffix}";
|
||||
|
||||
pkg = tomcatConstructorFun {
|
||||
inherit instanceSuffix serverPort httpPort httpsPort ajpPort commonLibs;
|
||||
|
||||
postInstall = ''
|
||||
# Add Dysnomia container configuration file for a Tomcat web application
|
||||
mkdir -p $out/etc/dysnomia/containers
|
||||
cat > $out/etc/dysnomia/containers/tomcat-webapplication${instanceSuffix} <<EOF
|
||||
tomcatPort=${toString httpPort}
|
||||
catalinaBaseDir=${catalinaBaseDir}
|
||||
EOF
|
||||
|
||||
# Copy the Dysnomia module that manages MySQL database
|
||||
mkdir -p $out/libexec/dysnomia
|
||||
ln -s ${dysnomia}/libexec/dysnomia/tomcat-webapplication $out/libexec/dysnomia
|
||||
'';
|
||||
};
|
||||
in
|
||||
rec {
|
||||
name = "simpleAppservingTomcat${instanceSuffix}";
|
||||
|
||||
inherit pkg type catalinaBaseDir;
|
||||
tomcatPort = httpPort;
|
||||
|
||||
providesContainer = "tomcat-webapplication${instanceSuffix}";
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
{apacheConstructorFun, dysnomia}:
|
||||
{instanceSuffix ? "", port ? 80, modules ? [], serverName ? "localhost", serverAdmin, documentRoot ? ./webapp, extraConfig ? "", enablePHP ? false, filesetOwner ? null, type}:
|
||||
|
||||
let
|
||||
pkg = apacheConstructorFun {
|
||||
inherit instanceSuffix port modules serverName serverAdmin documentRoot extraConfig enablePHP;
|
||||
postInstall = ''
|
||||
# Add Dysnomia container configuration file for the Apache HTTP server
|
||||
mkdir -p $out/etc/dysnomia/containers
|
||||
cat > $out/etc/dysnomia/containers/apache-webapplication${instanceSuffix} <<EOF
|
||||
httpPort=${toString port}
|
||||
documentRoot=${documentRoot}
|
||||
EOF
|
||||
|
||||
# Copy the Dysnomia module that manages an Apache web application
|
||||
mkdir -p $out/libexec/dysnomia
|
||||
ln -s ${dysnomia}/libexec/dysnomia/apache-webapplication $out/libexec/dysnomia
|
||||
'';
|
||||
};
|
||||
in
|
||||
{
|
||||
name = "simpleWebappApache${instanceSuffix}";
|
||||
inherit pkg type port;
|
||||
providesContainer = "apache-webapplication";
|
||||
} // (if filesetOwner == null then {} else {
|
||||
inherit filesetOwner;
|
||||
})
|
|
@ -0,0 +1,30 @@
|
|||
{mongodbConstructorFun, stdenv, dysnomia}:
|
||||
{instanceSuffix ? "", bindIP ? "127.0.0.1", port ? 27017, mongoDumpArgs ? null, mongoRestoreArgs ? null, type}:
|
||||
|
||||
let
|
||||
pkg = mongodbConstructorFun {
|
||||
inherit instanceSuffix bindIP port;
|
||||
postInstall = ''
|
||||
# Add Dysnomia container configuration file for MongoDB
|
||||
mkdir -p $out/etc/dysnomia/containers
|
||||
cat > $out/etc/dysnomia/containers/mongo-database${instanceSuffix} <<EOF
|
||||
${stdenv.lib.optionalString (mongoDumpArgs != null) (toString mongoDumpArgs)}"}
|
||||
${stdenv.lib.optionalString (mongoRestoreArgs != null) (toString mongoRestoreArgs)}"}
|
||||
EOF
|
||||
|
||||
# Copy the Dysnomia module that manages a Mongo database
|
||||
mkdir -p $out/libexec/dysnomia
|
||||
ln -s ${dysnomia}/libexec/dysnomia/mongo-database $out/libexec/dysnomia
|
||||
'';
|
||||
};
|
||||
in
|
||||
{
|
||||
name = "mongodb${instanceSuffix}";
|
||||
inherit pkg type bindIP port;
|
||||
|
||||
providesContainer = "mongo-database";
|
||||
} // (if mongoDumpArgs == null then {} else {
|
||||
inherit mongoDumpArgs;
|
||||
}) // (if mongoRestoreArgs == null then {} else {
|
||||
inherit mongoRestoreArgs;
|
||||
})
|
Loading…
Reference in New Issue