-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMakefile
114 lines (88 loc) · 2.62 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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
ifndef VERBOSE
.SILENT:
endif
.DEFAULT_GOAL := help
log_error = (>&2 echo "\x1B[31m>> Error:$1\x1B[39m\n"; $(MAKE) help; exit 1)
.PHONY: help
help:
@echo "Usage: make (provisioner) [os] [version] [command]"
@echo "\n"
@echo "Examples:"
@echo " make ubuntu 2004 up"
@echo " make ubuntu 2004 ssh"
@echo " make ubuntu 2004 suspend"
@echo " make windows server-2019 destroy"
@echo " make windows server-2019 rdp"
@echo " make pooler windows server-2022 up"
@echo " "
@echo " provisioner (optional) pooler | vagrant"
@echo " defaults to vagrant"
@echo "\n"
# Operating System Config
# ============= Windows ============= #
.PHONY: windows
windows:
$(eval PLAT=windows)
ifneq (,$(findstring up,$(MAKECMDGOALS)))
/opt/puppetlabs/bin/bolt module install --project ./windows/bootstrap
endif
server-2012R2:
$(eval VERSION=server-2012R2)
server-2016:
$(eval VERSION=server-2016)
server-2019:
$(eval VERSION=server-2019)
server-2022:
$(eval VERSION=server-2022)
# ============= Ubuntu ============= #
.PHONY: ubuntu
ubuntu:
$(eval PLAT=ubuntu)
2004:
$(eval VERSION=2004)
# ============= Vagrant ============= #
.PHONY: up
up:
@[ "${PROVISIONER}" ]
@[ "${PLAT}" ] || $(call log_error, "Operating System is not defined")
@[ "${VERSION}" ] || $(call log_error, "Version is not defined")
if [ "${PROVISIONER}" = "pooler" ]; then \
${PLAT}/${PROVISIONER}/provision.sh ${VERSION}; \
else \
@VAGRANT_CWD=${PLAT}/${VERSION} vagrant up; \
fi
.PHONY: destroy
destroy:
@[ "${PLAT}" ] || $(call log_error, "Operating System is not defined")
@[ "${VERSION}" ] || $(call log_error, "Version is not defined")
@VAGRANT_CWD=${PLAT}/${VERSION} vagrant destroy -f
.PHONY: ssh
ssh:
@[ "${PROVISIONER}" ]
@[ "${PLAT}" ] || $(call log_error, "Operating System is not defined")
@[ "${VERSION}" ] || $(call log_error, "Version is not defined")
if [ "${PROVISIONER}" = "pooler" ]; then \
${PLAT}/${PROVISIONER}/ssh.sh ${VERSION}; \
else \
@VAGRANT_CWD=${PLAT}/${VERSION} vagrant ssh \
fi
.PHONY: rdp
rdp:
@[ "${PROVISIONER}" ]
@[ "${PLAT}" ] || $(call log_error, "Operating System is not defined")
@[ "${VERSION}" ] || $(call log_error, "Version is not defined")
if [ "${PROVISIONER}" = "pooler" ]; then \
${PLAT}/${PROVISIONER}/rdp.sh ${VERSION}; \
else \
@VAGRANT_CWD=${PLAT}/${VERSION} vagrant rdp \
fi
.PHONY: suspend
suspend:
@[ "${PROVISIONER}" ]
@[ "${PLAT}" ] || $(call log_error, "Operating System is not defined")
@[ "${VERSION}" ] || $(call log_error, "Version is not defined")
@VAGRANT_CWD=${PLAT}/${VERSION} vagrant suspend
# ============= VMPooler ============= #
.PHONY: pooler
pooler:
$(eval PROVISIONER=pooler)