Skip to content

Commit

Permalink
Merge branch 'development' into master
Browse files Browse the repository at this point in the history
  • Loading branch information
Bence Babós committed Sep 28, 2020
2 parents f48871b + 633672a commit be037ab
Show file tree
Hide file tree
Showing 5 changed files with 68 additions and 52 deletions.
85 changes: 44 additions & 41 deletions cmd/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (
// Inputs is ...
var Inputs = []input{
{Question: "Docker stack name"},
{Question: "SwarMon Docker tag"},
{Question: "Domain name"},
{Question: "Prometheus subdomain"},
{Question: "Grafana subdomain"},
Expand All @@ -33,13 +34,13 @@ var Inputs = []input{

// Params is ...
var Params = params{
Tag: "development",
Node: struct{ ID string }{"{{.Node.ID}}"},
Docker: struct {
Tag string
StackName string
MetricPort string
GwBridgeIP string
}{"", "9323", "172.18.0.1"},
}{"master", "", "9323", "172.18.0.1"},
Cgroup: struct {
Path string
Enabled string
Expand Down Expand Up @@ -89,56 +90,58 @@ func GetAnswers(stackExists bool) {
}
SetParams()
CreateOrSave(Paths.StackConfig)
Params.Traefik.BAPassword = utils.HashPass(Inputs[8].Answer)
if Inputs[16].Answer == "y" {
Params.Traefik.BAPassword = utils.HashPass(Inputs[9].Answer)
if Inputs[17].Answer == "y" {
Params.Cgroup.Enabled = "-"
} else {
} else if Inputs[17].Answer == "n" {
Params.Cgroup.Enabled = "#-"
}
}

// SetAnswers is ...
func SetAnswers() {
Inputs[0].Answer = Params.Docker.StackName
Inputs[1].Answer = Params.Domain
Inputs[2].Answer = Params.Traefik.PrometheusSubDomain
Inputs[3].Answer = Params.Traefik.GrafanaSubDomain
Inputs[4].Answer = Params.Traefik.AlertmanagerSubDomain
Inputs[5].Answer = Params.AdminUser.Name
Inputs[6].Answer = Params.AdminUser.Password
Inputs[7].Answer = Params.Traefik.BAUser
Inputs[8].Answer = Params.Traefik.BAPassword
Inputs[9].Answer = Params.Slack.Webhook
Inputs[10].Answer = Params.Slack.AlertUser
Inputs[11].Answer = Params.Slack.Channel
Inputs[12].Answer = Params.Traefik.Port
Inputs[13].Answer = Params.Schema
Inputs[14].Answer = Params.Docker.MetricPort
Inputs[15].Answer = Params.Docker.GwBridgeIP
Inputs[16].Answer = Params.Cgroup.Enabled
Inputs[17].Answer = Params.Cgroup.Path
Inputs[18].Answer = Params.HostNamePath
Inputs[1].Answer = Params.Docker.Tag
Inputs[2].Answer = Params.Domain
Inputs[3].Answer = Params.Traefik.PrometheusSubDomain
Inputs[4].Answer = Params.Traefik.GrafanaSubDomain
Inputs[5].Answer = Params.Traefik.AlertmanagerSubDomain
Inputs[6].Answer = Params.AdminUser.Name
Inputs[7].Answer = Params.AdminUser.Password
Inputs[8].Answer = Params.Traefik.BAUser
Inputs[9].Answer = Params.Traefik.BAPassword
Inputs[10].Answer = Params.Slack.Webhook
Inputs[11].Answer = Params.Slack.AlertUser
Inputs[12].Answer = Params.Slack.Channel
Inputs[13].Answer = Params.Traefik.Port
Inputs[14].Answer = Params.Schema
Inputs[15].Answer = Params.Docker.MetricPort
Inputs[16].Answer = Params.Docker.GwBridgeIP
Inputs[17].Answer = Params.Cgroup.Enabled
Inputs[18].Answer = Params.Cgroup.Path
Inputs[19].Answer = Params.HostNamePath
}

// SetParams is ...
func SetParams() {
Params.Docker.StackName = Inputs[0].Answer
Params.Domain = Inputs[1].Answer
Params.Traefik.PrometheusSubDomain = Inputs[2].Answer
Params.Traefik.GrafanaSubDomain = Inputs[3].Answer
Params.Traefik.AlertmanagerSubDomain = Inputs[4].Answer
Params.AdminUser.Name = Inputs[5].Answer
Params.AdminUser.Password = Inputs[6].Answer
Params.Traefik.BAUser = Inputs[7].Answer
Params.Traefik.BAPassword = Inputs[8].Answer
Params.Slack.Webhook = Inputs[9].Answer
Params.Slack.AlertUser = Inputs[10].Answer
Params.Slack.Channel = Inputs[11].Answer
Params.Traefik.Port = Inputs[12].Answer
Params.Schema = Inputs[13].Answer
Params.Docker.MetricPort = Inputs[14].Answer
Params.Docker.GwBridgeIP = Inputs[15].Answer
Params.Cgroup.Enabled = Inputs[16].Answer
Params.Cgroup.Path = Inputs[17].Answer
Params.HostNamePath = Inputs[18].Answer
Params.Docker.Tag = Inputs[1].Answer
Params.Domain = Inputs[2].Answer
Params.Traefik.PrometheusSubDomain = Inputs[3].Answer
Params.Traefik.GrafanaSubDomain = Inputs[4].Answer
Params.Traefik.AlertmanagerSubDomain = Inputs[5].Answer
Params.AdminUser.Name = Inputs[6].Answer
Params.AdminUser.Password = Inputs[7].Answer
Params.Traefik.BAUser = Inputs[8].Answer
Params.Traefik.BAPassword = Inputs[9].Answer
Params.Slack.Webhook = Inputs[10].Answer
Params.Slack.AlertUser = Inputs[11].Answer
Params.Slack.Channel = Inputs[12].Answer
Params.Traefik.Port = Inputs[13].Answer
Params.Schema = Inputs[14].Answer
Params.Docker.MetricPort = Inputs[15].Answer
Params.Docker.GwBridgeIP = Inputs[16].Answer
Params.Cgroup.Enabled = Inputs[17].Answer
Params.Cgroup.Path = Inputs[18].Answer
Params.HostNamePath = Inputs[19].Answer
}
2 changes: 1 addition & 1 deletion cmd/config/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ type input struct {
}

type params struct {
Tag string
Domain string
Schema string
Cgroup struct {
Expand Down Expand Up @@ -34,6 +33,7 @@ type params struct {
AlertmanagerSubDomain string
}
Docker struct {
Tag string
StackName string
MetricPort string
GwBridgeIP string
Expand Down
10 changes: 5 additions & 5 deletions configs/docker/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ configs:

services:
dockerd-exporter:
image: babobene/dockerd-exporter:{{.Tag}}
image: babobene/dockerd-exporter:{{.Docker.Tag}}
networks:
- monitor_net
environment:
Expand All @@ -37,7 +37,7 @@ services:
memory: 64M

node-exporter:
image: babobene/node-exporter:{{.Tag}}
image: babobene/node-exporter:{{.Docker.Tag}}
networks:
- monitor_net
environment:
Expand Down Expand Up @@ -89,7 +89,7 @@ services:
memory: 64M

prometheus:
image: babobene/prometheus:{{.Tag}}
image: babobene/prometheus:{{.Docker.Tag}}
networks:
- monitor_net
command:
Expand Down Expand Up @@ -126,7 +126,7 @@ services:
constraint: {{.Docker.StackName}}

grafana:
image: babobene/grafana:{{.Tag}}
image: babobene/grafana:{{.Docker.Tag}}
networks:
- monitor_net
environment:
Expand Down Expand Up @@ -157,7 +157,7 @@ services:
constraint: {{.Docker.StackName}}

alertmanager:
image: babobene/alertmanager:{{.Tag}}
image: babobene/alertmanager:{{.Docker.Tag}}
networks:
- monitor_net
environment:
Expand Down
4 changes: 2 additions & 2 deletions scripts/deploy.sh
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,13 @@ metric_port="9323"
gwbridge="172.18.0.1" # docker run --rm --net host alpine ip -o addr show docker_gwbridge
cgroup_path="/cgroup"
cgroup_enabled="#"
hostname_path="/Users/babosbence/hostname"
hostname_path="~/hostname"
prom_domain="prometheus"
grafana_domain="grafana"
alert_domain="alertmanager"

cd configs/docker/
< docker-compose.yml sed "s/{{.Tag}}/$branch/g" |
< docker-compose.yml sed "s/{{.Docker.Tag}}/$branch/g" |
sed "s/{{.Domain}}/$domain/g" |
sed "s/{{.AdminUser.Name}}/$adminuser/g" |
sed "s/{{.AdminUser.Password}}/$adminpw/g" |
Expand Down
19 changes: 16 additions & 3 deletions scripts/test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ slack_webhook=$(< stackconfig.json jq -r '.Slack.Webhook')
slack_user=$(< stackconfig.json jq -r '.Slack.AlertUser')
slack_channel=$(< stackconfig.json jq -r '.Slack.Channel')
stack_name=$(< stackconfig.json jq -r '.Docker.StackName')
metric_port=$(< stackconfig.json jq -r '.Docker.MetricPort')
grafana_domain=$schema://$grafana_sub.$domain:$traefik_port
alertm_domain=$schema://$alertm_sub.$domain:$traefik_port
prom_domain=$schema://$prom_sub.$domain:$traefik_port
Expand Down Expand Up @@ -74,13 +75,25 @@ function testStackCreation {
fi
}

# Test Docker daemon
function testDockerMetricPort {
nc -z localhost $metric_port > /dev/null 2>&1
if [[ "$?" != 0 ]]; then
echo "TEST FAILED > testDockerMetricPort"
else
echo "TEST SUCCEED > testDockerMetricPort"
fi
}

# Test if Docker daemon is running
testDockerDaemon

# Test stack creation
# Check exposed Docker metrics port on localhost
testDockerMetricPort

# Test if Docker stack creation was succesfull
testStackCreation

# Test site access
# Test site access with or without BasicAuth
testSiteAccess $prom_sub BA
testSiteAccess $alertm_sub BA
testSiteAccess $grafana_sub
Expand Down

0 comments on commit be037ab

Please sign in to comment.