-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathMakefile
More file actions
148 lines (121 loc) · 5.73 KB
/
Copy pathMakefile
File metadata and controls
148 lines (121 loc) · 5.73 KB
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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
.DEFAULT_GOAL := default
.PHONY: \
default render apply ping ssh ssh-print deploy verify destroy destroy-clean-generated clean-generated cleanup site \
kubevirt-resources molecule-test molecule-role-tests molecule-role-%
ARD_PROVIDER ?= libvirt
ARD_DEPLOYMENT ?= devstack-1
ARD_DEPLOYMENTS_DIR ?= $(CURDIR)/deployments
ARD_USER ?= $(shell whoami)
ARD_KUBEVIRT_NAMESPACE ?= $(shell oc project --short 2>/dev/null)
# Deployment name incorporates user prefix for shared-tenancy providers
ARD_DEPLOYMENT_NAME_kubevirt = $(ARD_USER)-$(ARD_DEPLOYMENT)
ARD_DEPLOYMENT_NAME_libvirt = $(ARD_DEPLOYMENT)
ARD_DEPLOYMENT_NAME_static = $(ARD_DEPLOYMENT)
ARD_DEPLOYMENT_NAME = $(or $(ARD_DEPLOYMENT_NAME_$(ARD_PROVIDER)),$(ARD_DEPLOYMENT))
ARD_DEPLOYMENT_DIR ?= $(ARD_DEPLOYMENTS_DIR)/$(ARD_DEPLOYMENT_NAME)
ARD_WORKLOAD ?= devstack
ARD_DEVSTACK_SERVICES = devstack,ovn,tempest
ARD_TOPOLOGY ?= $(if $(filter microshift,$(ARD_WORKLOAD)),microshift-single-node,one-controller-one-compute)
ARD_TARGET_BRANCH ?= master
ARD_SERVICES ?= $(if $(filter microshift,$(ARD_WORKLOAD)),,$(ARD_DEVSTACK_SERVICES))
ARD_PROVIDER_PROFILE ?= local-libvirt
ARD_IMAGE ?= $(if $(filter microshift,$(ARD_WORKLOAD)),centos-stream-10,)
ARD_NETWORK_CIDR ?= 192.168.96.0/24
ARD_RENDER_FILE ?=
ARD_EXTRA_VARS ?=
ARD_NODE ?= controller
ARD_SSH_PRINT ?= 0
ARD_SSH_ARGS ?=
ARD_RENDER_FILE_ARG = $(if $(ARD_RENDER_FILE),-e @$(ARD_RENDER_FILE),)
ARD_RENDER_PROVIDER_VAR = $(if $(filter command line environment override,$(origin ARD_PROVIDER)),ard_provider=$(ARD_PROVIDER),)
ARD_RENDER_PROVIDER_PROFILE_VAR = $(if $(filter command line environment override,$(origin ARD_PROVIDER_PROFILE)),ard_provider_profile=$(ARD_PROVIDER_PROFILE),)
ARD_RENDER_TARGET_BRANCH_VAR = $(if $(filter command line environment override,$(origin ARD_TARGET_BRANCH)),ard_target_branch=$(ARD_TARGET_BRANCH),)
ARD_RENDER_TOPOLOGY_VAR = $(if $(filter microshift,$(ARD_WORKLOAD)),ard_topology=$(ARD_TOPOLOGY),$(if $(filter command line environment override,$(origin ARD_TOPOLOGY)),ard_topology=$(ARD_TOPOLOGY),))
ARD_RENDER_SERVICES_VAR = $(if $(filter microshift,$(ARD_WORKLOAD)),ard_service_profiles=,$(if $(filter command line environment override,$(origin ARD_SERVICES)),ard_service_profiles=$(ARD_SERVICES),))
ARD_RENDER_IMAGE_VAR = $(if $(ARD_IMAGE),ard_render_image=$(ARD_IMAGE),)
ARD_RENDER_NETWORK_VAR = $(if $(filter command line environment override,$(origin ARD_NETWORK_CIDR)),ard_libvirt_network_cidr=$(ARD_NETWORK_CIDR),)
ARD_KUBEVIRT_EXTRA_VARS = \
$(if $(ARD_KUBEVIRT_NAMESPACE),ard_kubevirt_namespace=$(ARD_KUBEVIRT_NAMESPACE),)
ARD_RENDER_EXTRA_VARS = \
ard_deployment_dir=$(ARD_DEPLOYMENT_DIR) \
ard_user=$(ARD_USER) \
$(ARD_RENDER_PROVIDER_VAR) \
$(ARD_RENDER_PROVIDER_PROFILE_VAR) \
$(ARD_RENDER_TARGET_BRANCH_VAR) \
$(ARD_RENDER_TOPOLOGY_VAR) \
$(ARD_RENDER_SERVICES_VAR) \
$(ARD_RENDER_IMAGE_VAR) \
$(ARD_RENDER_NETWORK_VAR) \
$(if $(filter kubevirt,$(ARD_PROVIDER)),$(ARD_KUBEVIRT_EXTRA_VARS),) \
$(ARD_EXTRA_VARS)
ARD_DEPLOYMENT_EXTRA_VARS = \
ard_deployment_dir=$(ARD_DEPLOYMENT_DIR) \
$(ARD_EXTRA_VARS)
ARD_DEPLOY_PLAYBOOK_devstack = ansible/playbooks/provider/deploy-devstack.yaml
ARD_DEPLOY_PLAYBOOK_microshift = ansible/playbooks/workloads/microshift/deploy.yaml
ARD_DEPLOY_PLAYBOOK_oko = ansible/playbooks/workloads/oko/deploy.yaml
ARD_DEPLOY_PLAYBOOK = $(ARD_DEPLOY_PLAYBOOK_$(ARD_WORKLOAD))
default:
-$(MAKE) destroy-clean-generated
-$(MAKE) cleanup
$(MAKE) render
$(MAKE) apply
$(MAKE) ping
$(MAKE) deploy
$(MAKE) verify
render:
uv run ansible-playbook -i localhost, ansible/playbooks/provider/render.yaml \
$(ARD_RENDER_FILE_ARG) \
-e "$(ARD_RENDER_EXTRA_VARS)"
apply:
uv run ansible-playbook -i localhost, ansible/playbooks/provider/apply.yaml \
-e "$(ARD_DEPLOYMENT_EXTRA_VARS)"
ping:
uv run ansible -i $(ARD_DEPLOYMENT_DIR)/inventory.yaml all \
-m ansible.builtin.ping
ssh:
uv run scripts/ard-ssh \
--inventory $(ARD_DEPLOYMENT_DIR)/inventory.yaml \
--node $(ARD_NODE) \
$(if $(filter 1 true yes,$(ARD_SSH_PRINT)),--print,) \
$(if $(ARD_SSH_ARGS),-- $(ARD_SSH_ARGS),)
ssh-print:
$(MAKE) ssh ARD_SSH_PRINT=1
deploy:
$(if $(ARD_DEPLOY_PLAYBOOK),,$(error Unsupported ARD_WORKLOAD '$(ARD_WORKLOAD)'))
uv run ansible-playbook -i $(ARD_DEPLOYMENT_DIR)/inventory.yaml \
$(ARD_DEPLOY_PLAYBOOK) \
-e "$(ARD_DEPLOYMENT_EXTRA_VARS)"
verify:
uv run ansible-playbook -i localhost, ansible/playbooks/provider/verify.yaml \
-e "$(ARD_DEPLOYMENT_EXTRA_VARS)"
destroy:
uv run ansible-playbook -i localhost, ansible/playbooks/provider/destroy.yaml \
-e "$(ARD_DEPLOYMENT_EXTRA_VARS)"
destroy-clean-generated:
uv run ansible-playbook -i localhost, ansible/playbooks/provider/destroy.yaml \
-e "$(ARD_DEPLOYMENT_EXTRA_VARS) ard_destroy_cleanup_generated=true"
clean-generated:
rm -rf $(ARD_DEPLOYMENT_DIR)/inventory.yaml \
$(ARD_DEPLOYMENT_DIR)/provider-state.yaml \
$(ARD_DEPLOYMENT_DIR)/rendered
cleanup:
uv run ansible-playbook -i localhost, ansible/playbooks/provider/cleanup.yaml \
-e "$(ARD_DEPLOYMENT_EXTRA_VARS)"
site: render apply deploy verify
kubevirt-resources:
@test -n "$(ARD_KUBEVIRT_NAMESPACE)" || (echo "Set ARD_KUBEVIRT_NAMESPACE or log in with oc and select a project" >&2; exit 1)
oc apply -n "$(ARD_KUBEVIRT_NAMESPACE)" \
-f ansible/files/kubevirt/devstack-instancetype-preference.yaml
MOLECULE_ROLE_DIRS := $(sort $(dir $(wildcard ansible/roles/*/molecule/*/molecule.yml)))
molecule-test: molecule-role-tests
molecule-role-tests:
@set -e; \
for scenario_dir in $(MOLECULE_ROLE_DIRS); do \
role_dir=$${scenario_dir%/molecule/*/}; \
scenario=$${scenario_dir%/}; scenario=$${scenario##*/}; \
echo "==> $$role_dir :: $$scenario"; \
(cd $$role_dir && uv run --project ../../.. molecule test -s $$scenario); \
done
molecule-role-%:
cd ansible/roles/$* && uv run --project ../../.. molecule test