feat: block/monitoring mode — ask during deploy, configurable in .env
This commit is contained in:
parent
e5e1697402
commit
3d076221e2
2 changed files with 23 additions and 6 deletions
|
|
@ -98,6 +98,7 @@ type nodeConfig struct {
|
|||
UpstreamIP string
|
||||
UpstreamPort string
|
||||
Labels string
|
||||
BlockMode bool
|
||||
}
|
||||
|
||||
func loadNodes() []nodeConfig {
|
||||
|
|
@ -122,6 +123,7 @@ func loadNodes() []nodeConfig {
|
|||
UpstreamIP: env["WALLARM_UPSTREAM_IP_"+n],
|
||||
UpstreamPort: env["WALLARM_UPSTREAM_PORT_"+n],
|
||||
Labels: env["WALLARM_LABELS_"+n],
|
||||
BlockMode: env["WALLARM_BLOCK_"+n] == "true",
|
||||
})
|
||||
}
|
||||
if len(nodes) == 0 {
|
||||
|
|
@ -135,6 +137,7 @@ func loadNodes() []nodeConfig {
|
|||
UpstreamIP: env["WALLARM_UPSTREAM_IP"],
|
||||
UpstreamPort: env["WALLARM_UPSTREAM_PORT"],
|
||||
Labels: env["WALLARM_LABELS"],
|
||||
BlockMode: env["WALLARM_BLOCK"] == "true",
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
@ -215,6 +218,20 @@ func deployOne(nc nodeConfig) {
|
|||
if nc.Cloud == "" { nc.Cloud = "EU" }
|
||||
if nc.Labels == "" { nc.Labels = "group=" + nc.Name }
|
||||
|
||||
// Ask for block mode
|
||||
reader := bufio.NewReader(os.Stdin)
|
||||
mode := "monitoring"
|
||||
if nc.BlockMode {
|
||||
fmt.Print("Block mode? [Y/n]: ")
|
||||
} else {
|
||||
fmt.Print("Block mode? [y/N]: ")
|
||||
}
|
||||
ans, _ := reader.ReadString('\n')
|
||||
ans = strings.TrimSpace(strings.ToLower(ans))
|
||||
if ans == "y" || ans == "yes" || (nc.BlockMode && ans == "") {
|
||||
mode = "block"
|
||||
}
|
||||
|
||||
apiHost := "api.wallarm.com"
|
||||
if nc.Cloud == "US" { apiHost = "us1.api.wallarm.com" }
|
||||
|
||||
|
|
@ -236,7 +253,7 @@ func deployOne(nc nodeConfig) {
|
|||
state.Save(s)
|
||||
|
||||
fmt.Println("Starting deployment...")
|
||||
if err := native.InstallNode(node, nc.Token, apiHost, nc.Labels); err != nil {
|
||||
if err := native.InstallNode(node, nc.Token, apiHost, nc.Labels, mode); err != nil {
|
||||
fmt.Fprintf(os.Stderr, "Deployment failed: %v\n", err)
|
||||
return
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ func installerURL() string {
|
|||
return "https://storage.googleapis.com/meganode_storage/6.12/wallarm-6.12.5.x86_64-glibc.sh"
|
||||
}
|
||||
|
||||
func InstallNode(node state.Node, apiToken, apiHost, labels string) error {
|
||||
func InstallNode(node state.Node, apiToken, apiHost, labels, mode string) error {
|
||||
if apiToken == "" {
|
||||
return fmt.Errorf("API token required")
|
||||
}
|
||||
|
|
@ -62,7 +62,7 @@ func InstallNode(node state.Node, apiToken, apiHost, labels string) error {
|
|||
}
|
||||
|
||||
// 5. Start NGINX (modules now available after extraction)
|
||||
startNginx(DeployTo, node, port)
|
||||
startNginx(DeployTo, node, port, mode)
|
||||
|
||||
// 6. Load Wallarm NGINX module + register node
|
||||
fmt.Printf("[%s] Configuring NGINX module...\n", node.Name)
|
||||
|
|
@ -192,7 +192,7 @@ func Status(name string) (string, error) {
|
|||
return string(out), nil
|
||||
}
|
||||
|
||||
func startNginx(dir string, node state.Node, port string) {
|
||||
func startNginx(dir string, node state.Node, port, mode string) {
|
||||
nginxDir := filepath.Join(dir, "nginx")
|
||||
confDir := filepath.Join(nginxDir, "conf")
|
||||
os.MkdirAll(confDir, 0755)
|
||||
|
|
@ -210,7 +210,7 @@ error_log %s/error.log;
|
|||
events { worker_connections 10240; }
|
||||
http {
|
||||
access_log %s/access.log;
|
||||
wallarm_mode monitoring;
|
||||
wallarm_mode %s;
|
||||
|
||||
server {
|
||||
listen %s;
|
||||
|
|
@ -229,7 +229,7 @@ http {
|
|||
}
|
||||
}
|
||||
}
|
||||
`, dir, nginxDir, nginxDir, nginxDir, port, upstream)), 0644)
|
||||
`, dir, nginxDir, nginxDir, nginxDir, mode, port, upstream)), 0644)
|
||||
|
||||
bin := filepath.Join(nginxDir, "sbin", "nginx")
|
||||
cmd := exec.Command(bin, "-c", confPath, "-p", nginxDir)
|
||||
|
|
|
|||
Loading…
Reference in a new issue