-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathMakefile
93 lines (74 loc) · 2.7 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
SHELL := $(shell which bash)
.SILENT: ; # no need for @
include .env
export
define docker-env
$(foreach val, $(shell docker-machine env $1 | sed -e '/^#/d' -e 's/"//g'), $(eval $(val)))
endef
define get-node-ip
$(shell docker-machine ip $1)
endef
node-env:
$(call docker-env, $(SWARM_MASTER))
node-up:
./scripts/swarm-up.sh
node-down:
docker-machine ls --format '{{.Name}}' | xargs -I {} docker-machine rm -f -y {} 2>/dev/null
node-cleanup: node-env
for node in $$(docker node ls --format '{{.Hostname}}'); do \
echo "Cleaning up $$node volume"; \
if [[ ! -z $$node ]]; then \
eval $$(docker-machine env $$node); \
docker-machine ssh $$node sh -c "docker volume prune > /dev/null 2>&1"; \
fi \
done
node-viz:
open http://$(call get-node-ip, node-1)/viz
node-status: node-env
docker node ls
stack-start: node-env
mkdir -p ./log
docker stack deploy -c docker-compose.yml $(STACK_NAME)
stack-service: node-env
watch docker stack services $(STACK_NAME)
ifeq (stack-service-restart,$(firstword $(MAKECMDGOALS)))
SERVICE:=$(wordlist 2,$(words $(MAKECMDGOALS)),$(MAKECMDGOALS))
$(eval $(SERVICE):;@:)
endif
stack-service-restart: node-env
eval $(env | grep DOCKER); cnt=`docker service ls | grep $(SERVICE) | wc -l`; \
if [[ -z $$cnt ]]; then \
echo "No such service: $(STACK_NAME)_$(SERVICE)"; \
else \
echo "Restart service: $(STACK_NAME)_$(SERVICE)"; \
docker service rm $(STACK_NAME)_$(SERVICE); \
[[ $(SERVICE) == flog ]] && rm -rf ./log/apache.log; \
docker stack deploy -c docker-compose.yml $(STACK_NAME); \
fi
stack-ps: node-env
watch docker stack ps --no-trunc $(STACK_NAME)
ifeq (stack-logs,$(firstword $(MAKECMDGOALS)))
SERVICE:=$(wordlist 2,$(words $(MAKECMDGOALS)),$(MAKECMDGOALS))
$(eval $(SERVICE):;@:)
endif
stack-logs: node-env
docker service logs -f $(STACK_NAME)_$(SERVICE)
stack-stop: node-env
docker stack rm $(STACK_NAME)
stack-reload:
make stack-stop && make node-cleanup && make stack-start
kibana:
open http://$(call get-node-ip, node-1)
kibana-import-dashboard:
$(eval host=$(call get-node-ip, node-1))
echo "Import metricbeat dashboard...";
docker run --net="host" docker.elastic.co/beats/metricbeat:$(TAG) setup -e \
-E output.logstash.enabled=false \
-E output.elasticsearch.hosts=['$(host):9200'] \
-E setup.kibana.host=$(host):80; \
echo "Import filebeat dashboard...";
docker run --net="host" docker.elastic.co/beats/filebeat:$(TAG) setup -e \
-E output.logstash.enabled=false \
-E output.elasticsearch.hosts=['$(host):9200'] \
-E setup.kibana.host=$(host):80;
.PHONY: node-env node-up node-down node-cleanup node-viz node-status stack-start stack-service stack-service-restart stack-ps stack-logs stack-stop kibana kibana-import-dashboard