summaryrefslogtreecommitdiffstats
path: root/builder/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'builder/Makefile')
-rw-r--r--builder/Makefile148
1 files changed, 0 insertions, 148 deletions
diff --git a/builder/Makefile b/builder/Makefile
deleted file mode 100644
index 8c4ab0f..0000000
--- a/builder/Makefile
+++ /dev/null
@@ -1,148 +0,0 @@
-# Makefile for building Vagrant (libvirt) base image "boxes" for Puppet-Gluster
-# Copyright (C) 2010-2013+ James Shubin
-# Written by James Shubin <james@shubin.ca>
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-# NOTE: if you change any of the values in this file (such as SIZE or --install
-# arguments) make won't notice the change, you'll have to manually clean first.
-
-.PHONY: all builder convert box local upload clean
-.SILENT:
-
-# TODO: build base image for virt-builder from iso instead of using templates
-
-# virt-builder os-version
-VERSION = centos-6
-BOX = $(VERSION).box
-SIZE = 40
-#OUTPUT = /tmp/gluster
-#OUTPUT := $(shell pwd)
-OUTPUT := $(shell echo ~/tmp/builder/$(VERSION))
-SERVER = 'user@host.example.org'
-REMOTE_PATH = 'public_html/vagrant'
-
-all: box
-
-#
-# aliases
-#
-builder: $(OUTPUT)/builder.img
-convert: $(OUTPUT)/box.img
-box: $(OUTPUT)/$(BOX)
-local: $(OUTPUT)/SHA256SUMS.asc
-
-#
-# clean
-#
-# delete created files
-clean:
- @echo Running clean...
- # TODO: technically, the 'true' should check if all the files are rm-ed
- rm $(OUTPUT)/{{builder,box}.img,metadata.json,$(BOX),SHA256SUMS{,.asc}} || true
-
-#
-# virt-builder
-#
-# build image with virt-builder
-# NOTE: some of this system prep is based on the vagrant-libvirt scripts
-# TODO: install: ruby ruby-devel make gcc rubygems ?
-$(OUTPUT)/builder.img: files/*
- @echo Running virt-builder...
- [ -d $(OUTPUT) ] || mkdir -p $(OUTPUT)/ # ensure path is present first!
- virt-builder $(VERSION) \
- --output $(OUTPUT)/builder.img \
- --format qcow2 \
- --size $(SIZE)G \
- --install rsync,nfs-utils,sudo,openssh-server,openssh-clients \
- --install screen,vim-enhanced,git,wget,file,man,tree,nmap,tcpdump,htop,lsof,telnet,mlocate,bind-utils,koan,iftop,yum-utils,nc \
- --root-password file:files/password \
- --upload files/epel-release-6-8.noarch.rpm:/root/epel-release-6-8.noarch.rpm \
- --upload files/puppetlabs-release-el-6.noarch.rpm:/root/puppetlabs-release-el-6.noarch.rpm \
- --run-command 'yum install -y /root/epel-release-6-8.noarch.rpm && rm -f /root/epel-release-6-8.noarch.rpm' \
- --run-command 'yum install -y bash-completion moreutils' \
- --run-command 'yum install -y /root/puppetlabs-release-el-6.noarch.rpm && rm -f /root/puppetlabs-release-el-6.noarch.rpm' \
- --run-command 'yum install -y puppet' \
- --run-command 'yum update -y' \
- --run files/user.sh \
- --run files/ssh.sh \
- --run files/network.sh \
- --run files/cleanup.sh
-
- # boot machine once to run the selinux relabelling, see:
- # https://www.redhat.com/archives/libguestfs/2014-January/msg00183.html
- # https://github.com/libguestfs/libguestfs/commit/20a4bfde9628cfeb8bea441cab7dcc94843b34e3
- qemu-system-x86_64 -machine accel=kvm:tcg -cpu host -m 512 -drive file=$(OUTPUT)/builder.img,format=qcow2,if=virtio -no-reboot -serial stdio -nographic || (rm $(OUTPUT)/builder.img; false)
- reset # TODO: qemu-system-x86_64 borks the terminal :(
-
-#
-# convert
-#
-# workaround sparse qcow2 images bug
-# thread: https://www.redhat.com/archives/libguestfs/2014-January/msg00008.html
-$(OUTPUT)/box.img: $(OUTPUT)/builder.img
- @echo Running convert...
- qemu-img convert -O qcow2 $(OUTPUT)/builder.img $(OUTPUT)/box.img
-
-#
-# metadata.json
-#
-$(OUTPUT)/metadata.json:
- @echo Running templater...
- [ -d $(OUTPUT) ] || mkdir -p $(OUTPUT)/ # ensure path is present first!
- echo '{"provider": "libvirt", "format": "qcow2", "virtual_size": $(SIZE)}' > $(OUTPUT)/metadata.json
- echo '' >> $(OUTPUT)/metadata.json # newline
-
-#
-# tar
-#
-# create custom box
-# format at: https://github.com/pradels/vagrant-libvirt/tree/master/example_box
-$(OUTPUT)/$(BOX): Vagrantfile $(OUTPUT)/metadata.json $(OUTPUT)/box.img
- @echo Running tar...
- tar -cvzf $(OUTPUT)/$(BOX) ./Vagrantfile --directory=$(OUTPUT)/ ./metadata.json ./box.img
-
-#
-# sha256sum
-#
-$(OUTPUT)/SHA256SUMS: $(OUTPUT)/$(BOX)
- @echo Running sha256sum...
- cd $(OUTPUT) && sha256sum $(BOX) > SHA256SUMS; cd -
-
-#
-# gpg
-#
-$(OUTPUT)/SHA256SUMS.asc: $(OUTPUT)/SHA256SUMS
- @echo Running gpg...
- # the --yes forces an overwrite of the SHA256SUMS.asc if necessary
- gpg2 --yes --clearsign $(OUTPUT)/SHA256SUMS
-
-#
-# upload
-#
-# upload to public server
-# NOTE: user downloads while file uploads are in progress don't cause problems!
-upload: $(OUTPUT)/$(BOX) $(OUTPUT)/SHA256SUMS $(OUTPUT)/SHA256SUMS.asc
- if [ "`cat $(OUTPUT)/SHA256SUMS`" != "`ssh $(SERVER) 'cd $(REMOTE_PATH)/$(VERSION)/ && sha256sum $(BOX)'`" ]; then \
- echo Running upload...; \
- scp -p $(OUTPUT)/{$(BOX),SHA256SUMS{,.asc}} $(SERVER):$(REMOTE_PATH)/$(VERSION)/; \
- fi
-# this method works too, but always hits the server on every make call
-#upload:
-#ifeq ($(shell cat $(OUTPUT)/SHA256SUMS), $(shell ssh $(SERVER) 'cd $(REMOTE_PATH)/ && sha256sum $(BOX)'))
-# @echo true
-#else
-# @echo false
-#endif
-