mirror of
https://github.com/crowdsecurity/crowdsec.git
synced 2025-05-11 12:25:53 +02:00
feat(cscli): add env variable flag for dashboard setup (#3110)
Signed-off-by: Nathanael DEMACON <quantumsheep@users.noreply.github.com> Co-authored-by: Nathanael DEMACON <quantumsheep@users.noreply.github.com> Co-authored-by: Laurence Jones <laurence.jones@live.co.uk>
This commit is contained in:
parent
303ce8e42c
commit
e9c1ed05d9
3 changed files with 52 additions and 47 deletions
|
@ -39,6 +39,7 @@ var (
|
|||
metabaseListenAddress = "127.0.0.1"
|
||||
metabaseListenPort = "3000"
|
||||
metabaseContainerID = "crowdsec-metabase"
|
||||
metabaseContainerEnvironmentVariables []string
|
||||
crowdsecGroup = "crowdsec"
|
||||
|
||||
forceYes bool
|
||||
|
@ -166,7 +167,7 @@ cscli dashboard setup -l 0.0.0.0 -p 443 --password <password>
|
|||
if err = cli.chownDatabase(dockerGroup.Gid); err != nil {
|
||||
return err
|
||||
}
|
||||
mb, err := metabase.SetupMetabase(cli.cfg().API.Server.DbConfig, metabaseListenAddress, metabaseListenPort, metabaseUser, metabasePassword, metabaseDBPath, dockerGroup.Gid, metabaseContainerID, metabaseImage)
|
||||
mb, err := metabase.SetupMetabase(cli.cfg().API.Server.DbConfig, metabaseListenAddress, metabaseListenPort, metabaseUser, metabasePassword, metabaseDBPath, dockerGroup.Gid, metabaseContainerID, metabaseImage, metabaseContainerEnvironmentVariables)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -193,6 +194,7 @@ cscli dashboard setup -l 0.0.0.0 -p 443 --password <password>
|
|||
flags.BoolVarP(&forceYes, "yes", "y", false, "force yes")
|
||||
// flags.StringVarP(&metabaseUser, "user", "u", "crowdsec@crowdsec.net", "metabase user")
|
||||
flags.StringVar(&metabasePassword, "password", "", "metabase password")
|
||||
flags.StringSliceVarP(&metabaseContainerEnvironmentVariables, "env", "e", nil, "Additional environment variables to pass to the metabase container")
|
||||
|
||||
return cmd
|
||||
}
|
||||
|
|
|
@ -25,9 +25,10 @@ type Container struct {
|
|||
CLI *client.Client
|
||||
MBDBUri string
|
||||
DockerGroupID string
|
||||
EnvironmentVariables []string
|
||||
}
|
||||
|
||||
func NewContainer(listenAddr string, listenPort string, sharedFolder string, containerName string, image string, mbDBURI string, dockerGroupID string) (*Container, error) {
|
||||
func NewContainer(listenAddr string, listenPort string, sharedFolder string, containerName string, image string, mbDBURI string, dockerGroupID string, environmentVariables []string) (*Container, error) {
|
||||
cli, err := client.NewClientWithOpts(client.FromEnv, client.WithAPIVersionNegotiation())
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to create docker client : %s", err)
|
||||
|
@ -41,6 +42,7 @@ func NewContainer(listenAddr string, listenPort string, sharedFolder string, con
|
|||
CLI: cli,
|
||||
MBDBUri: mbDBURI,
|
||||
DockerGroupID: dockerGroupID,
|
||||
EnvironmentVariables: environmentVariables,
|
||||
}, nil
|
||||
}
|
||||
|
||||
|
@ -79,9 +81,9 @@ func (c *Container) Create() error {
|
|||
},
|
||||
}
|
||||
|
||||
env := []string{
|
||||
fmt.Sprintf("MB_DB_FILE=%s/metabase.db", containerSharedFolder),
|
||||
}
|
||||
env := c.EnvironmentVariables
|
||||
|
||||
env = append(env, fmt.Sprintf("MB_DB_FILE=%s/metabase.db", containerSharedFolder))
|
||||
if c.MBDBUri != "" {
|
||||
env = append(env, c.MBDBUri)
|
||||
}
|
||||
|
|
|
@ -39,6 +39,7 @@ type Config struct {
|
|||
DBPath string `yaml:"metabase_db_path"`
|
||||
DockerGroupID string `yaml:"-"`
|
||||
Image string `yaml:"image"`
|
||||
EnvironmentVariables []string `yaml:"environment_variables"`
|
||||
}
|
||||
|
||||
var (
|
||||
|
@ -88,7 +89,7 @@ func (m *Metabase) Init(containerName string, image string) error {
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
m.Container, err = NewContainer(m.Config.ListenAddr, m.Config.ListenPort, m.Config.DBPath, containerName, image, DBConnectionURI, m.Config.DockerGroupID)
|
||||
m.Container, err = NewContainer(m.Config.ListenAddr, m.Config.ListenPort, m.Config.DBPath, containerName, image, DBConnectionURI, m.Config.DockerGroupID, m.Config.EnvironmentVariables)
|
||||
if err != nil {
|
||||
return fmt.Errorf("container init: %w", err)
|
||||
}
|
||||
|
@ -137,10 +138,9 @@ func (m *Metabase) LoadConfig(configPath string) error {
|
|||
m.Config = config
|
||||
|
||||
return nil
|
||||
|
||||
}
|
||||
|
||||
func SetupMetabase(dbConfig *csconfig.DatabaseCfg, listenAddr string, listenPort string, username string, password string, mbDBPath string, dockerGroupID string, containerName string, image string) (*Metabase, error) {
|
||||
func SetupMetabase(dbConfig *csconfig.DatabaseCfg, listenAddr string, listenPort string, username string, password string, mbDBPath string, dockerGroupID string, containerName string, image string, environmentVariables []string) (*Metabase, error) {
|
||||
metabase := &Metabase{
|
||||
Config: &Config{
|
||||
Database: dbConfig,
|
||||
|
@ -152,6 +152,7 @@ func SetupMetabase(dbConfig *csconfig.DatabaseCfg, listenAddr string, listenPort
|
|||
DBPath: mbDBPath,
|
||||
DockerGroupID: dockerGroupID,
|
||||
Image: image,
|
||||
EnvironmentVariables: environmentVariables,
|
||||
},
|
||||
}
|
||||
if err := metabase.Init(containerName, image); err != nil {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue