blob: bc05a8094b6653215f43c55a97a5033ba66407ea [file] [log] [blame]
SUBDIRS := automation config-generator harvester ip-allocator provisioner switchq
TARGETS := build publish clean test
PUBLIC_IMAGES := consul@sha256:0dc990ff3c44d5b5395475bcc5ebdae4fc8b67f69e17942a8b9793b3df74d290
I2 := consul:latest
I3 := consul
ANSIBLE_ARGS?=
MAKE_CONFIG?=config.mk
# [EXPERIMENTAL] Deployment via make is currently experimental
DEPLOY_INVENTORY=deploy-inv
DEPLOY_CONFIG=deploy-vars
# expands to lists of of the form:
# <target>_TARGETS := <subdir1>_<target> <subdir2>_<target>
$(foreach TARGET, $(TARGETS), $(eval $(TARGET)_TARGETS := $(addsuffix _$(TARGET), $(SUBDIRS))))
ifeq ($(realpath $(MAKE_CONFIG)),)
$(info Makefile configuration not found, defaults will be used.)
else
$(info Using makefile configuration "$(MAKE_CONFIG)")
endif
define recursive_rule
$1_$2:
$$(MAKE) MAKE_CONFIG=$(realpath $(MAKE_CONFIG)) CONFIG=$(realpath $(CONFIG)) -C $1 $2
endef
$(foreach SUBDIR, $(SUBDIRS), $(foreach TARGET, $(TARGETS), $(eval $(call recursive_rule,$(SUBDIR),$(TARGET)))))
$(foreach TARGET, $(TARGETS), $(eval $(TARGET): $($(TARGET)_TARGETS)))
include help.mk
ifneq ($(realpath $(MAKE_CONFIG)),)
include $(MAKE_CONFIG)
endif
define public_image_rules
$2.image:
docker pull $1
@touch $$@
$2.publish: $2.image
docker tag $1 $(DOCKER_REGISTRY)/$2:$(DEPLOY_DOCKER_TAG)
docker push $(DOCKER_REGISTRY)/$2:$(DEPLOY_DOCKER_TAG)
@touch $$@
publish: $2.publish
endef
$(foreach PUBLIC_IMAGE, $(PUBLIC_IMAGES), $(eval $(call public_image_rules,$(PUBLIC_IMAGE),$(word 1,$(subst @, ,$(subst :, ,$(PUBLIC_IMAGE)))))))
prime:
ansible-playbook -i $(DEPLOY_INVENTORY) --extra-vars=@$(DEPLOY_CONFIG) $(ANSIBLE_ARGS) prime-node.yml
deploy: publish
ansible-playbook -i $(DEPLOY_INVENTORY) --extra-vars=@$(DEPLOY_CONFIG) $(ANSIBLE_ARGS) head-node.yml
config:
@echo "hello"
clean: