# Simple Makefile to build packer templates # TODO: # - allow overriding packer variables # - check for hypervisors (and invalidate targets) # - provisioning logic BUILDERS = qemu vmware-iso virtualbox-iso TEMPLATES := $(basename $(filter-out base.json,$(wildcard *.json))) TARGETS := $(foreach builder, $(BUILDERS), $(foreach template, $(TEMPLATES), $(builder)/$(template))) PACKER_OPTS := -var-file=base.json .PHONY: all list clean all: list $(TARGETS): ifndef ROOTPW $(error ROOTPW is not set) endif $(info Building '$(@F)' with '$(@D)') packer build -only=$(@D) \ $(PACKER_OPTS) \ -var='vm_name=$(@F)' \ $(@F).json list: $(info Possible targets:) @(for F in $(TARGETS); do echo -e "\t$$F" ; done) clean: $(foreach builder,$(BUILDERS),rm -rf $(builder)/;) # convenience do-nothing targets for auto-complete qemu/ubuntu-16.04-amd64: qemu/centos-7.3-x86_64: virtualbox-iso/ubuntu-16.04-amd64: virtualbox-iso/centos-7.3-x86_64: vmware-iso/ubuntu-16.04-amd64: vmware-iso/centos-7.3-x86_64: