diff options
author | Thiago Abdo | 2019-10-25 10:57:15 +0200 |
---|---|---|
committer | Thiago Abdo | 2019-10-25 10:57:15 +0200 |
commit | 5fec97a9892044d72265dbd4f2173e2b327776ec (patch) | |
tree | 6f45b2a739c0a63f16b965d70d9e75650b643656 | |
parent | fix so ansible-provisioner does not apear as possible template (diff) | |
download | packer-templates-5fec97a9892044d72265dbd4f2173e2b327776ec.tar.gz packer-templates-5fec97a9892044d72265dbd4f2173e2b327776ec.tar.xz packer-templates-5fec97a9892044d72265dbd4f2173e2b327776ec.zip |
Make possible to reapply ansible scritps generating a new build from a provisioned build
Signed-off-by: Thiago Abdo <tjabdo@inf.ufpr.br>
-rw-r--r-- | Makefile | 21 |
1 files changed, 14 insertions, 7 deletions
@@ -52,6 +52,7 @@ FLAVORS := $(patsubst $(ANSIBLE_DIR_PROV)/setup-%.yml,%, $(wildcard $(ANSIBLE_DI BASETARGETS := $(foreach template, $(TEMPLATES), $(template)/base) PROVTARGETS := $(foreach template, $(TEMPLATES), $(foreach flavor, $(FLAVORS), $(template)/$(flavor))) +REPROVTARGETS := $(foreach template, $(TEMPLATES), $(foreach flavor, $(FLAVORS), $(filter-out $(template)/$(flavor).latest,$(wildcard $(template)/$(flavor).*)))) BOOTTARGETS := $(foreach template, $(TEMPLATES), $(template)/base/boot) BOOTTARGETS += $(foreach prov, $(PROVTARGETS), $(prov)/boot) @@ -121,7 +122,7 @@ ifdef VERBOSE endif -.PHONY: help clean_except_last clean_bases clean_all clean_failed +.PHONY: help clean_except_last clean_bases clean_all clean_failed $(REPROVTARGETS) help: @@ -144,22 +145,27 @@ $(BASETARGETS): # Provisioning images -$(PROVTARGETS): -$(foreach flav, $(FLAVORS), %/$(flav)): %/base +$(PROVTARGETS): $(foreach flav, $(FLAVORS), %/$(flav)): %/base + +$(PROVTARGETS) $(REPROVTARGETS): + $(eval FLAVOR := $(basename $(@F))) + $(eval VERSION := $(if $(suffix $(@)), $(subst .,,$(suffix $(@))), 0)) $(eval BASE_IMAGE := $(if $(wildcard $(@D)/build/rootfs-image),\ $(@)/build/rootfs-image,\ $(@D)/base/rootfs-image)) - $(eval BUILD_DIR := $(@D)/$(@F).$(TIMESTAMP)) - $(info ** Provisioning '$(@D)' with '$(@F)' **) + $(eval BUILD_DIR := $(@D)/$(FLAVOR).$(TIMESTAMP)) + $(info ** Provisioning '$(@D)' with '$(FLAVOR)' **) @mkdir -p $(BUILD_DIR) @cp -r `readlink -f $(ANSIBLE_DIR_PROV)` $(BUILD_DIR)/$(ANSIBLE_DIR_PROV) - @ln -sfn $(@F).$(TIMESTAMP) $(@D)/$(@F).latest + @ln -sfn $(FLAVOR).$(TIMESTAMP) $(@D)/$(FLAVOR).latest + @-cp -r $@/$(ANSIBLE_DIR_PROV) $(BUILD_DIR)/$(ANSIBLE_DIR_PROV).$(VERSION) + @-cp -r $@/$(ANSIBLE_DIR_PROV).* $(BUILD_DIR) $(PACKER) build -only=$(PROVISIONER) \ $(PACKER_OPTS) \ -var='vm_name=rootfs-image' \ -var='output_directory=$(BUILD_DIR)/build' \ -var='base_image=$(BASE_IMAGE)' \ - -var='playbook=$(BUILD_DIR)/$(ANSIBLE_DIR_PROV)/setup-$(@F).yml' \ + -var='playbook=$(BUILD_DIR)/$(ANSIBLE_DIR_PROV)/setup-$(FLAVOR).yml' \ -var='extra_ansible_args=$(ANSIBLE_PROV_EXTRA_ARGS)' \ ansible-provisioner.json @@ -241,6 +247,7 @@ help: @echo @echo "Provisioning images targets: " @for P in $(PROVTARGETS); do printf "\t%s\n" "$$P"; done + @for P in $(REPROVTARGETS); do printf "\t%s\n" "$$P"; done @echo @echo "Generate boot files targets:" @printf "\t<{base,provisioning}_target>/boot\n" |