summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonathan Bauer2019-10-07 18:06:05 +0200
committerJonathan Bauer2019-10-07 18:06:05 +0200
commit8e0ecc9ce8ebfd4366b4e4d7517f9e1718afed2c (patch)
tree523dfd762b13aba86e60f752657f24ae021848b1
parentfix readme.md (ty thiago) (diff)
downloadpacker-templates-8e0ecc9ce8ebfd4366b4e4d7517f9e1718afed2c.tar.gz
packer-templates-8e0ecc9ce8ebfd4366b4e4d7517f9e1718afed2c.tar.xz
packer-templates-8e0ecc9ce8ebfd4366b4e4d7517f9e1718afed2c.zip
Makefile: fix copying symlinked ansible-roles-prov
-rw-r--r--Makefile39
1 files changed, 26 insertions, 13 deletions
diff --git a/Makefile b/Makefile
index ba3e0d6..89f473e 100644
--- a/Makefile
+++ b/Makefile
@@ -55,7 +55,9 @@ PROVTARGETS := $(foreach template, $(TEMPLATES), $(foreach flavor, $(FLAVORS), $
BOOTTARGETS := $(foreach template, $(TEMPLATES), $(template)/base/boot)
BOOTTARGETS += $(foreach prov, $(PROVTARGETS), $(prov)/boot)
-ANSIBLE_PROV_EXTRA_ARGS :=
+ifndef ANSIBLE_PROV_EXTRA_ARGS
+ ANSIBLE_PROV_EXTRA_ARGS :=
+endif
override PACKER_OPTS += -var-file=base.json
ifdef DEBUG
@@ -123,11 +125,12 @@ endif
help:
-# Creating base images. Initially clone the openslx dracut module repository
-# if 'boot' was part of the main target
+# Creating base images. When DRACUT_INIT is specified, the dracut module
+# repository will be initially cloned and its required components (dnbd3,
+# xmount, libxmount-qemu) will be pre-build to accelerate subsequent builds.
$(BASETARGETS):
$(info ** Building template '$(@D)' using '$(BUILDER)' **)
- $(eval INIT_TAG := $(if $(filter boot,$(notdir $(MAKECMDGOALS))),\
+ $(eval INIT_TAG := $(if $(DRACUT_INIT),\
install,\
untagged))
$(PACKER) build -only=$(BUILDER) \
@@ -143,16 +146,19 @@ $(BASETARGETS):
# Provisioning images
$(PROVTARGETS):
$(foreach flav, $(FLAVORS), %/$(flav)): %/base
+ $(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)' **)
@mkdir -p $(BUILD_DIR)
- @cp -r $(ANSIBLE_DIR_PROV) $(BUILD_DIR)/$(ANSIBLE_DIR_PROV)
+ @cp -r `readlink -f $(ANSIBLE_DIR_PROV)` $(BUILD_DIR)/$(ANSIBLE_DIR_PROV)
@ln -sfn $(@F).$(TIMESTAMP) $(@D)/$(@F).latest
$(PACKER) build -only=$(PROVISIONER) \
$(PACKER_OPTS) \
-var='vm_name=rootfs-image' \
-var='output_directory=$(BUILD_DIR)/build' \
- -var='base_image=$(@D)/base/rootfs-image' \
+ -var='base_image=$(BASE_IMAGE)' \
-var='playbook=$(BUILD_DIR)/$(ANSIBLE_DIR_PROV)/setup-$(@F).yml' \
-var='extra_ansible_args=$(ANSIBLE_PROV_EXTRA_ARGS)' \
ansible-provisioner.json
@@ -161,12 +167,17 @@ $(foreach flav, $(FLAVORS), %/$(flav)): %/base
# Generating boot files
$(BOOTTARGETS):
%/boot: %
- $(eval BUILD_DIR := $(if $(filter base,$(notdir $(@D))),\
- $(@D),\
- $(@D).$(TIMESTAMP)/build))
- $(eval ANSIBLE_DIR_CUR := $(if $(filter base,$(notdir $(@D))),\
- $(ANSIBLE_DIR_PROV),\
- $(@D).$(TIMESTAMP)/$(ANSIBLE_DIR_PROV)))
+ $(eval BASE_DIR := $(if $(filter base,$(notdir $(@D))),\
+ ,\
+ $(if $(wildcard $(@D)/build/.),\
+ $(@D),\
+ $(@D).$(TIMESTAMP))))
+ $(eval BUILD_DIR := $(if $(BASE_DIR),\
+ $(BASE_DIR)/build,\
+ $(@D)))
+ $(eval ANSIBLE_DIR_CUR := $(if $(BASE_DIR),\
+ $(BASE_DIR)/$(ANSIBLE_DIR_PROV),\
+ $(ANSIBLE_DIR_PROV)))
$(info ** Generating boot files for '$(BUILD_DIR)')
$(PACKER) build -only=$(PROVISIONER) \
$(PACKER_OPTS) \
@@ -175,8 +186,10 @@ $(BOOTTARGETS):
-var='base_image=$(BUILD_DIR)/rootfs-image' \
-var='playbook=$(ANSIBLE_DIR_CORE)/slx-builder.yml' \
-var="extra_ansible_args=-t,install,-t,build" \
+ -var='extra_ansible_args=$(ANSIBLE_PROV_EXTRA_ARGS)' \
ansible-provisioner.json
- @mv $(ANSIBLE_DIR_CORE)/boot_files $(BUILD_DIR)/boot
+ @mkdir -p $(BUILD_DIR)/boot
+ @mv -f $(ANSIBLE_DIR_CORE)/boot_files/* $(BUILD_DIR)/boot
$(if $(DEBUG),,@rm -rf $(BUILD_DIR)/tmp)