config/network: Prepare for multiple networks
This commit futures proofs the code to allow for usage of more than one docker network.
This commit is contained in:
parent
db1989a299
commit
e969351f8e
13 changed files with 40 additions and 28 deletions
|
|
@ -135,10 +135,11 @@ func (si systemupdate) Run(context wisski_distillery.Context) (err error) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// create the docker network
|
// create the docker networks
|
||||||
{
|
{
|
||||||
logging.LogMessage(context.Stderr, context.Context, "Configuring docker networks")
|
logging.LogMessage(context.Stderr, context.Context, "Configuring docker networks")
|
||||||
name := dis.Config.Docker.Network
|
|
||||||
|
for _, name := range dis.Config.Docker.Networks() {
|
||||||
id, existed, err := dis.Docker().CreateNetwork(context.Context, name)
|
id, existed, err := dis.Docker().CreateNetwork(context.Context, name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errNetworkCreateFailed.Wrap(err)
|
return errNetworkCreateFailed.Wrap(err)
|
||||||
|
|
@ -149,6 +150,7 @@ func (si systemupdate) Run(context wisski_distillery.Context) (err error) {
|
||||||
context.Printf("Network %s (id %s) created\n", name, id)
|
context.Printf("Network %s (id %s) created\n", name, id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// install and update the various stacks!
|
// install and update the various stacks!
|
||||||
ctx := component.InstallationContext{
|
ctx := component.InstallationContext{
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,8 @@ theme:
|
||||||
home: null
|
home: null
|
||||||
|
|
||||||
docker:
|
docker:
|
||||||
# The name of the (global) docker network to run the distillery services in.
|
# The distillery uses several global docker networks.
|
||||||
|
# This determines the prefix to use for those networks.
|
||||||
network: null
|
network: null
|
||||||
|
|
||||||
# Configuration of the sql backend
|
# Configuration of the sql backend
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,15 @@
|
||||||
package config
|
package config
|
||||||
|
|
||||||
type DockerConfig struct {
|
type DockerConfig struct {
|
||||||
// name of docker network to use
|
NetworkPrefix string `yaml:"network" default:"distillery" validate:"nonempty"`
|
||||||
Network string `yaml:"network" default:"distillery" validate:"nonempty"`
|
}
|
||||||
|
|
||||||
|
// Networks returns a list of all docker networks to be created for purposes of the distillery.
|
||||||
|
func (dc DockerConfig) Networks() []string {
|
||||||
|
return []string{dc.Network()}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Network returns the name of the default network to attach all docker containers to.
|
||||||
|
func (dc DockerConfig) Network() string {
|
||||||
|
return dc.NetworkPrefix
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ type Template struct {
|
||||||
SQLAdminUsername string
|
SQLAdminUsername string
|
||||||
SQLAdminPassword string
|
SQLAdminPassword string
|
||||||
|
|
||||||
DockerNetworkName string
|
DockerNetworkPrefix string
|
||||||
SessionSecret string
|
SessionSecret string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -58,12 +58,12 @@ func (tpl *Template) SetDefaults() (err error) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if tpl.DockerNetworkName == "" {
|
if tpl.DockerNetworkPrefix == "" {
|
||||||
tpl.DockerNetworkName, err = password.Generate(rand.Reader, 10, passwordx.Identifier)
|
tpl.DockerNetworkPrefix, err = password.Generate(rand.Reader, 10, passwordx.Identifier)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
tpl.DockerNetworkName = `distillery-` + tpl.DockerNetworkName
|
tpl.DockerNetworkPrefix = `distillery-` + tpl.DockerNetworkPrefix
|
||||||
}
|
}
|
||||||
|
|
||||||
if tpl.SessionSecret == "" {
|
if tpl.SessionSecret == "" {
|
||||||
|
|
@ -93,7 +93,7 @@ func (tpl Template) Generate() Config {
|
||||||
ExtraDomains: []string{},
|
ExtraDomains: []string{},
|
||||||
},
|
},
|
||||||
Docker: DockerConfig{
|
Docker: DockerConfig{
|
||||||
tpl.DockerNetworkName,
|
NetworkPrefix: tpl.DockerNetworkPrefix,
|
||||||
},
|
},
|
||||||
SQL: SQLConfig{
|
SQL: SQLConfig{
|
||||||
DatabaseConfig: DatabaseConfig{
|
DatabaseConfig: DatabaseConfig{
|
||||||
|
|
|
||||||
|
|
@ -82,7 +82,7 @@ func (binder *Binder) Stack() component.StackWithResources {
|
||||||
},
|
},
|
||||||
|
|
||||||
EnvContext: map[string]string{
|
EnvContext: map[string]string{
|
||||||
"DOCKER_NETWORK_NAME": binder.Config.Docker.Network,
|
"DOCKER_NETWORK_NAME": binder.Config.Docker.Network(),
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ func (server *Server) Stack() component.StackWithResources {
|
||||||
EnvPath: "server.env",
|
EnvPath: "server.env",
|
||||||
|
|
||||||
EnvContext: map[string]string{
|
EnvContext: map[string]string{
|
||||||
"DOCKER_NETWORK_NAME": server.Config.Docker.Network,
|
"DOCKER_NETWORK_NAME": server.Config.Docker.Network(),
|
||||||
"HOST_RULE": server.Config.HTTP.DefaultHostRule(),
|
"HOST_RULE": server.Config.HTTP.DefaultHostRule(),
|
||||||
"HTTPS_ENABLED": server.Config.HTTP.HTTPSEnabledEnv(),
|
"HTTPS_ENABLED": server.Config.HTTP.HTTPSEnabledEnv(),
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ func (solr *Solr) Stack() component.StackWithResources {
|
||||||
|
|
||||||
EnvPath: "solr.env",
|
EnvPath: "solr.env",
|
||||||
EnvContext: map[string]string{
|
EnvContext: map[string]string{
|
||||||
"DOCKER_NETWORK_NAME": solr.Config.Docker.Network,
|
"DOCKER_NETWORK_NAME": solr.Config.Docker.Network(),
|
||||||
},
|
},
|
||||||
|
|
||||||
MakeDirs: []string{
|
MakeDirs: []string{
|
||||||
|
|
|
||||||
|
|
@ -46,7 +46,7 @@ func (sql *SQL) Stack() component.StackWithResources {
|
||||||
|
|
||||||
EnvPath: "sql.env",
|
EnvPath: "sql.env",
|
||||||
EnvContext: map[string]string{
|
EnvContext: map[string]string{
|
||||||
"DOCKER_NETWORK_NAME": sql.Config.Docker.Network,
|
"DOCKER_NETWORK_NAME": sql.Config.Docker.Network(),
|
||||||
"HTTPS_ENABLED": sql.Config.HTTP.HTTPSEnabledEnv(),
|
"HTTPS_ENABLED": sql.Config.HTTP.HTTPSEnabledEnv(),
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ func (ssh *SSH2) Stack() component.StackWithResources {
|
||||||
EnvPath: "ssh2.env",
|
EnvPath: "ssh2.env",
|
||||||
|
|
||||||
EnvContext: map[string]string{
|
EnvContext: map[string]string{
|
||||||
"DOCKER_NETWORK_NAME": ssh.Config.Docker.Network,
|
"DOCKER_NETWORK_NAME": ssh.Config.Docker.Network(),
|
||||||
"HOST_RULE": ssh.Config.HTTP.DefaultHostRule(),
|
"HOST_RULE": ssh.Config.HTTP.DefaultHostRule(),
|
||||||
|
|
||||||
"CONFIG_PATH": ssh.Config.ConfigPath,
|
"CONFIG_PATH": ssh.Config.ConfigPath,
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,7 @@ func (ts *Triplestore) Stack() component.StackWithResources {
|
||||||
|
|
||||||
EnvPath: "triplestore.env",
|
EnvPath: "triplestore.env",
|
||||||
EnvContext: map[string]string{
|
EnvContext: map[string]string{
|
||||||
"DOCKER_NETWORK_NAME": ts.Config.Docker.Network,
|
"DOCKER_NETWORK_NAME": ts.Config.Docker.Network(),
|
||||||
},
|
},
|
||||||
|
|
||||||
MakeDirs: []string{
|
MakeDirs: []string{
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,7 @@ func (web *Web) Stack() component.StackWithResources {
|
||||||
stack.EnvPath = "web.env"
|
stack.EnvPath = "web.env"
|
||||||
|
|
||||||
stack.EnvContext = map[string]string{
|
stack.EnvContext = map[string]string{
|
||||||
"DOCKER_NETWORK_NAME": web.Config.Docker.Network,
|
"DOCKER_NETWORK_NAME": web.Config.Docker.Network(),
|
||||||
"CERT_EMAIL": web.Config.HTTP.CertbotEmail,
|
"CERT_EMAIL": web.Config.HTTP.CertbotEmail,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ func (barrel *Barrel) Stack() component.StackWithResources {
|
||||||
EnvPath: filepath.Join("barrel.env"),
|
EnvPath: filepath.Join("barrel.env"),
|
||||||
|
|
||||||
EnvContext: map[string]string{
|
EnvContext: map[string]string{
|
||||||
"DOCKER_NETWORK_NAME": barrel.Malt.Config.Docker.Network,
|
"DOCKER_NETWORK_NAME": barrel.Malt.Config.Docker.Network(),
|
||||||
|
|
||||||
"SLUG": barrel.Slug,
|
"SLUG": barrel.Slug,
|
||||||
"VIRTUAL_HOST": barrel.Domain(),
|
"VIRTUAL_HOST": barrel.Domain(),
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ func (reserve *Reserve) Stack() component.StackWithResources {
|
||||||
EnvPath: filepath.Join("reserve.env"),
|
EnvPath: filepath.Join("reserve.env"),
|
||||||
|
|
||||||
EnvContext: map[string]string{
|
EnvContext: map[string]string{
|
||||||
"DOCKER_NETWORK_NAME": reserve.Malt.Config.Docker.Network,
|
"DOCKER_NETWORK_NAME": reserve.Malt.Config.Docker.Network(),
|
||||||
|
|
||||||
"SLUG": reserve.Slug,
|
"SLUG": reserve.Slug,
|
||||||
"VIRTUAL_HOST": reserve.Domain(),
|
"VIRTUAL_HOST": reserve.Domain(),
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue