-
Notifications
You must be signed in to change notification settings - Fork 3
/
Makefile.globals
102 lines (84 loc) · 4.11 KB
/
Makefile.globals
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
SHELL := bash
SSH_KEY ?= $(HOME)/.ssh/id_rsa.pub
# AI_OFFLINETOKEN=put here your assisted installer token. You can get it from https://console.redhat.com/openshift/token
ASSISTED_SERVICE ?= https://api.openshift.com
API_URL ?= $(ASSISTED_SERVICE)/api/assisted-install
git_root ?= $(dir $(abspath $(lastword $(MAKEFILE_LIST))))
KUBECONFIGS_DIR ?= $(HOME)/.kube/configs
KUBECONFIG ?= $(HOME)/.kube/config
VIRSH_DISK_POOL ?= ocp
DISK_SIZE ?= 120
IMG_DIR ?= /home/images
ISO_DIR ?= /home/isos
LIBVIRT_STORAGE_POOL_PATH ?= /home/libvirt-ocp
PXE_DIR ?= $(git_root)/iso2pxe
PXE_NET ?= pxe
PXE_ADDRESS ?= 192.168.125.1
NET_MAIN_INTERFACE ?= eno1
AICLI_EXTRA_PARAMS ?=
KCLI_MEMORY ?= 20000
KCLI_NUMCPUS ?= 8
# Kcli defaults
CLUSTER_ISO_PATH ?= $(ISO_DIR)/$(CLUSTER_NAME).iso
KCLI_TEMPLATE_DISK ?= {"size": $(DISK_SIZE), "pool": "$(VIRSH_DISK_POOL)"}
KCLI_TEMPLATE_CLUSTER ?= -P iso="$(CLUSTER_ISO_PATH)" -P memory=$(KCLI_MEMORY) -P numcpus=$(KCLI_NUMCPUS) -P disks=['$(KCLI_TEMPLATE_DISK)']
# Aicli defaults
CLUSTER_OCP_VERSION ?= 4.15
CLUSTER_OCP_RELEASE ?=
CLUSTER_API_VIP ?=
CLUSTER_INGRESS_VIP ?=
CLUSTER_HOST_NUM ?= 5
CLUSTER_PULL_SECRET ?= local/pull_secret.json
CLUSTER_NETWORK_TYPE ?= OVNKubernetes
CLUSTER_BASEDOMAIN ?= redhat.com
CLUSTER_SSH_PUBLIC_KEY ?= $(shell cat $(HOME)/.ssh/id_rsa.pub)
CLUSTER_DIR ?= clusters/$(NAME)
CLUSTER_ID ?= $(shell test -e $(CLUSTER_DIR)/cluster.json && jq -r .id $(CLUSTER_DIR)/cluster.json)
PULL_SECRET ?= $(git_root)/pull_secret.json
# Aliased commands
KCLI_IMAGE ?= quay.io/karmab/kcli
AICLI_IMAGE ?= quay.io/karmab/aicli
kcli ?= podman run --net host -i --rm --security-opt label=disable -v $(ISO_DIR):$(ISO_DIR) -v $(IMG_DIR):$(IMG_DIR) -v $(HOME)/.ssh:/root/.ssh -v $(HOME)/.kcli:/root/.kcli -v /var/lib/libvirt/images:/var/lib/libvirt/images -v /var/run/libvirt:/var/run/libvirt -v $(PWD):/workdir -v /var/tmp:/ignitiondir $(KCLI_IMAGE)
aicli ?= podman run -it --rm -e AI_OFFLINETOKEN=$(AI_OFFLINETOKEN) -v $(SSH_KEY):$(SSH_KEY) -v $(git_root):/local $(AICLI_IMAGE) -U $(ASSISTED_SERVICE)
apicurl ?= $(git_root)/bin/apicurl
default: help
help: ## Shows this message.
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(shell echo "$(MAKEFILE_LIST) " | tac -s' ') | perl -pe 's/^.*Makefile.*?://g' | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
clusterid: ## Show cluster id
@echo $(CLUSTER_ID)
cluster: cluster-create cluster-download-iso vms wait-hosts cluster-start wait-cluster kubeconfig ## Create cluster
cluster-create:
@$(aicli) create cluster $(CLUSTER_NAME) \
$(CLUSTER_OCP_VERSION:%=-P openshift_version=%) \
$(CLUSTER_OCP_RELEASE:%=-P ocp_release_image=%) \
$(CLUSTER_API_VIP:%=-P api_vip=%) \
$(CLUSTER_INGRESS_VIP:%=-P ingress_vip=%) \
-P pull_secret=$(CLUSTER_PULL_SECRET) \
-P base_dns_domain=$(CLUSTER_BASEDOMAIN) \
-P network_type=$(CLUSTER_NETWORK_TYPE) \
-P ssh_public_key="$(CLUSTER_SSH_PUBLIC_KEY)" \
$(AICLI_EXTRA_PARAMS)
cluster-download-iso:
@$(aicli) download iso --path /local $(CLUSTER_NAME)
@mv $(git_root)/$(CLUSTER_NAME).iso $(CLUSTER_ISO_PATH)
wait-hosts:
@echo "Waiting for $(CLUSTER_HOST_NUM) hosts to be discovered for cluster $(CLUSTER_NAME)"
@until $(aicli) list hosts | grep ' $(CLUSTER_NAME)_infra-env ' | grep ' known ' | wc -l | grep -qx $(CLUSTER_HOST_NUM); do echo -n .; sleep 5; done; echo ""
@echo "Hosts discovered"
@sleep 10
wait-cluster:
@$(aicli) wait cluster $(CLUSTER_NAME)
cluster-start:
@$(aicli) start cluster $(CLUSTER_NAME)
cluster-check:
@while true; do $(aicli) list hosts|grep $(CLUSTER_NAME); sleep 10; echo "";done
clean-cluster: ## Delete cluster
-@$(aicli) delete cluster -y $(CLUSTER_NAME)
ai-kubeconfig:
# $(aicli) download kubeconfig $(CLUSTER_NAME) --stdout | sed s/admin/$(CLUSTER_NAME)/g > $(KUBECONFIGS_DIR)/kubeconfig.$(CLUSTER_NAME)
@$(aicli) download kubeconfig --path /local $(CLUSTER_NAME)
sed -i s/admin/$(CLUSTER_NAME)/g $(git_root)/kubeconfig.$(CLUSTER_NAME)
mv $(git_root)/kubeconfig.$(CLUSTER_NAME) $(KUBECONFIGS_DIR)
kubeconfig: ai-kubeconfig ## Generate kubeconfig and merge it into main kubeconfig file
KUBECONFIG=$(shell ls $(KUBECONFIGS_DIR)/*| paste -s -d:) oc config view --flatten > $(KUBECONFIG)
.PHONY: help