Refactored procedure of local mirror creation.

This commit is contained in:
Alwex 2012-10-22 07:41:48 +00:00 committed by Vladimir Kozhukalov
parent 9ab15380db
commit 3cd6c38470
12 changed files with 145 additions and 189 deletions

3
.gitignore vendored
View File

@ -14,8 +14,7 @@
/.vagrant
/build
/mirror/eggs
/mirror/gems
/local_mirror
nosetests.xml
nailgun.log
lock

View File

@ -3,7 +3,7 @@ BUILD_DIR:=build
MODULES=gnupg bootstrap nailgun test mirror iso packages/rpm naily astute
.PHONY: all clean test test-unit help mirror FORCE
.PHONY: all clean test test-unit help mirror FORCE deep_clean
help:
@echo 'Available targets:'
@ -17,6 +17,8 @@ help:
@echo ' test-cookbooks - run cookbooks tests'
@echo ' clean-integration-test - clean integration test environment'
@echo ' clean-cookbooks-test - clean cookbooks test environment'
@echo ' clean - remove build directory and resetting .done flags'
@echo ' deep_clean - clean + removing $(LOCAL_MIRROR) directory'
all:
@ -29,11 +31,15 @@ FORCE:
clean:
rm -rf $(BUILD_DIR)
find $(LOCAL_MIRROR) -name *.done -exec rm {} \;
deep_clean: clean
rm -rf $(LOCAL_MIRROR)
assert-variable=$(if $($1),,$(error Variable $1 need to be defined))
find-files=$(shell test -d $1 && cd $1 && find * -type f 2> /dev/null)
include config.mk
include repo.mk
define include-module-template
MODULE_SOURCE_DIR:=$1

View File

@ -17,7 +17,7 @@ NAILGUN_DIR:=$(INITRAM_DIR)/opt/nailgun
RPM:=sudo rpm --root=`readlink -f $(INITRAM_DIR)`
YUM:=sudo yum --installroot=`readlink -f $(INITRAM_DIR)` -y --nogpgcheck
RPM_DIR=$(CENTOS_REPO_DIR)Packages
RPM_DIR=$(CENTOS_REPO_DIR)
CHROOT_CMD:=sudo chroot $(INITRAM_DIR)
clean: clean-bootstrap
@ -25,10 +25,8 @@ clean: clean-bootstrap
clean-bootstrap:
sudo rm -rf $(INITRAM_DIR)
bootstrap: $(LINUX) $(INITRAM_FS)
chroot-bootstrap: $(NAILGUN_DIR)/system_type $(INITRAM_DIR)/init
sudo mkdir -p $(INITRAM_DIR)/proc $(INITRAM_DIR)/dev
mount | grep $(INITRAM_DIR)/proc || sudo mount --bind /proc $(INITRAM_DIR)/proc
@ -45,7 +43,7 @@ $(INITRAM_FS): $(NAILGUN_DIR)/system_type
--format='newc' | gzip -9 > `readlink -f $(INITRAM_FS)`"
$(LINUX): $(BUILD_DIR)/packages/centos/cache.done
$(LINUX): $(LOCAL_MIRROR)/cache.done
mkdir -p $(BS_DIR)
find $(RPM_DIR) -name 'kernel-2.*' | xargs rpm2cpio | (cd $(BS_DIR)/; cpio -imd './boot/vmlinuz*')
mv $(BS_DIR)/boot/vmlinuz* $(LINUX)
@ -65,7 +63,7 @@ $(NAILGUN_DIR)/system_type: $(INITRAM_DIR)/init
sudo sh -c "echo bootstrap > $(NAILGUN_DIR)/system_type"
$(INITRAM_DIR)/init: $(BUILD_DIR)/packages/centos/repo.done $(INITRAM_DIR)/etc/yum.repos.d/mirror.repo
$(INITRAM_DIR)/init: $(LOCAL_MIRROR)/repo.done $(INITRAM_DIR)/etc/yum.repos.d/mirror.repo
sudo mkdir -p $(INITRAM_DIR)/var/lib/rpm
$(RPM) --rebuilddb
$(YUM) install $(YUM_PACKAGES) $(YUM_BUILD_PACKAGES)
@ -100,7 +98,7 @@ $(INITRAM_DIR)/init: $(BUILD_DIR)/packages/centos/repo.done $(INITRAM_DIR)/etc/y
define yum_local_repo
[mirror]
name=Mirantis mirror
baseurl=file://$(shell readlink -f $(BUILD_DIR))/packages/centos/Packages
baseurl=file://$(shell readlink -f $(RPM_DIR))/Packages
gpgcheck=0
enabled=1
endef

View File

@ -1,5 +1,5 @@
ifndef BOOTSTRAP_REBUILD
BOOTSTRAP_REBUILD:=0
BOOTSTRAP_REBUILD:=1
endif
MIRROR_URL:=http://srv08-srt.srt.mirantis.net/mirror
@ -8,17 +8,10 @@ IGNORE_MIRROR:=0
endif
ifndef LOCAL_MIRROR
LOCAL_MIRROR:=mirror
endif
ifndef GOLDEN_MIRROR
GOLDEN_MIRROR:=srv08-srt.srt.mirantis.net:/var/lib/jenkins/mirror
LOCAL_MIRROR:=local_mirror
endif
iso.path:=$(BUILD_DIR)/iso/nailgun-centos-6.3-amd64.iso
image.centos.url=http://mc0n1-srt.srt.mirantis.net/centos63.qcow2
centos.packages=$(BUILD_DIR)/packages/centos
bootstrap.linux:=$(BUILD_DIR)/bootstrap/linux
bootstrap.initrd:=$(BUILD_DIR)/bootstrap/initrd.gz

View File

@ -6,6 +6,7 @@ lang en_US.UTF-8
keyboard us
rootpw r00tme
timezone --utc America/New_York
zerombr
bootloader --location=mbr
clearpart --all --initlabel
autopart

View File

@ -1,21 +1,9 @@
/:=$(BUILD_DIR)/iso/
CENTOS_63_RELEASE:=6.3
CENTOS_63_ARCH:=x86_64
CENTOS_63_MIRROR:=http://mirror.yandex.ru/centos/$(CENTOS_63_RELEASE)/os/$(CENTOS_63_ARCH)
CENTOS_63_NETINSTALL:=http://mirror.yandex.ru/centos/$(CENTOS_63_RELEASE)/isos/$(CENTOS_63_ARCH)
CENTOS_63_GPG:=http://mirror.yandex.ru/centos
.PHONY: iso
all: iso
ISOROOT:=$/isoroot
ISOLINUX_FILES:=boot.msg grub.conf initrd.img isolinux.bin memtest splash.jpg vesamenu.c32 vmlinuz
IMAGES_FILES:=efiboot.img efidisk.img install.img
EFI_FILES:=BOOTX64.conf BOOTX64.efi splash.xpm.gz
BOOTSTRAP_FILES:=initramfs.img linux
GPGFILES:=RPM-GPG-KEY-CentOS-6 RPM-GPG-KEY-CentOS-Debug-6 RPM-GPG-KEY-CentOS-Security-6 RPM-GPG-KEY-CentOS-Testing-6
NETINSTALL_ISO:=CentOS-6.3-x86_64-netinstall-EFI.iso
RABBITMQ_VERSION:=2.6.1
RABBITMQ_PLUGINS:=amqp_client-$(RABBITMQ_VERSION).ez rabbitmq_stomp-$(RABBITMQ_VERSION).ez
@ -28,28 +16,28 @@ ASTUTE_VERSION:=0.1
iso: $/nailgun-centos-6.3-amd64.iso
$/isoroot-centos.done: \
$(BUILD_DIR)/packages/rpm/rpm.done \
$(centos.packages)/cache.done \
$(BUILD_DIR)/rpm/rpm.done \
$(LOCAL_MIRROR)/cache.done \
$(ISOROOT)/repodata/comps.xml \
$(ISOROOT)/.discinfo \
$(ISOROOT)/.treeinfo
mkdir -p $(ISOROOT)/Packages
find $(centos.packages)/Packages -name '*.rpm' -exec cp -n {} $(ISOROOT)/Packages \;
find $(BUILD_DIR)/packages/rpm/RPMS -name '*.rpm' -exec cp -n {} $(ISOROOT)/Packages \;
find $(CENTOS_REPO_DIR)Packages -name '*.rpm' -exec cp -n {} $(ISOROOT)/Packages \;
find $(BUILD_DIR)/rpm/RPMS -name '*.rpm' -exec cp -n {} $(ISOROOT)/Packages \;
createrepo -g `readlink -f "$(ISOROOT)/repodata/comps.xml"` -u media://`head -1 $(ISOROOT)/.discinfo` $(ISOROOT)
$(ACTION.TOUCH)
$(ISOROOT)/repodata/comps.xml: $(CENTOS_REPO_DIR)comps.xml ; $(ACTION.COPY)
$(ISOROOT)/repodata/comps.xml: $(CENTOS_REPO_DIR)/repodata/comps.xml ; $(ACTION.COPY)
$(addprefix $(ISOROOT)/isolinux/,$(ISOLINUX_FILES)):
@mkdir -p $(@D)
wget -O $@ $(CENTOS_63_MIRROR)/isolinux/$(@F)
cp $(CENTOS_REPO_DIR)/isolinux/$(@F) $(@D)
$(ISOROOT)/isolinux/isolinux.cfg: iso/isolinux/isolinux.cfg ; $(ACTION.COPY)
$(ISOROOT)/netinstall/centos.iso:
$(ISOROOT)/netinstall/$(NETINSTALL_ISO): $(CENTOS_ISO_DIR)/$(NETINSTALL_ISO)
@mkdir -p $(@D)
wget -O $@ $(CENTOS_63_NETINSTALL)/$(NETINSTALL_ISO)
cp $(CENTOS_ISO_DIR)/$(@F) $(@D)
$/isoroot-isolinux.done: \
$(addprefix $(ISOROOT)/isolinux/,$(ISOLINUX_FILES)) \
@ -58,18 +46,18 @@ $/isoroot-isolinux.done: \
$(addprefix $(ISOROOT)/images/,$(IMAGES_FILES)):
@mkdir -p $(@D)
wget -O $@ $(CENTOS_63_MIRROR)/images/$(@F)
cp $(CENTOS_REPO_DIR)images/$(@F) $(@D)
$(addprefix $(ISOROOT)/EFI/BOOT/,$(EFI_FILES)):
@mkdir -p $(@D)
wget -O $@ $(CENTOS_63_MIRROR)/EFI/BOOT/$(@F)
cp $(CENTOS_REPO_DIR)EFI/BOOT/$(@F) $(@D)
$(addprefix $(ISOROOT)/rabbitmq-plugins/,$(RABBITMQ_PLUGINS)):
@mkdir -p $(@D)
wget -O $@ $(RABBITMQ_PLUGINS_URL)/$(@F)
$/isoroot-prepare.done:\
$(ISOROOT)/netinstall/centos.iso \
$(ISOROOT)/netinstall/$(NETINSTALL_ISO) \
$(addprefix $(ISOROOT)/images/,$(IMAGES_FILES)) \
$(addprefix $(ISOROOT)/EFI/BOOT/,$(EFI_FILES)) \
$(addprefix $(ISOROOT)/,$(GPGFILES)) \
@ -77,7 +65,7 @@ $/isoroot-prepare.done:\
$(ACTION.TOUCH)
$(addprefix $(ISOROOT)/,$(GPGFILES)):
wget -O $@ $(CENTOS_63_GPG)/$(@F)
wget -O $@ $(CENTOS_GPG)/$(@F)
$/isoroot-bootstrap.done: \
$(ISOROOT)/bootstrap/bootstrap.rsa \
@ -105,13 +93,13 @@ $(ISOROOT)/eggs/%: $(LOCAL_MIRROR)/eggs/% ; $(ACTION.COPY)
$(ISOROOT)/gems/gems/%: $(LOCAL_MIRROR)/gems/% ; $(ACTION.COPY)
$/isoroot-eggs.done: \
$(CENTOS_REPO_DIR)eggs-gems.done \
$(LOCAL_MIRROR)/eggs-gems.done \
$(addprefix $(ISOROOT)/eggs/,$(call find-files,$(LOCAL_MIRROR)/eggs)) \
$(ISOROOT)/eggs/Nailgun-$(NAILGUN_VERSION).tar.gz
$(ACTION.TOUCH)
$/isoroot-gems.done: \
$(CENTOS_REPO_DIR)eggs-gems.done \
$(LOCAL_MIRROR)/eggs-gems.done \
$(BUILD_DIR)/gems/naily-$(NAILY_VERSION).gem \
$(ISOROOT)/gems/gems/naily-$(NAILY_VERSION).gem \
$(ISOROOT)/gems/gems/astute-$(ASTUTE_VERSION).gem \

View File

@ -1,17 +1,8 @@
/:=$(BUILD_DIR)/packages/centos/
/:=$(LOCAL_MIRROR)/
$/%: /:=$/
REPOMIRROR:=$(MIRROR_URL)/centos
CENTOSMIRROR:=http://mirror.yandex.ru/centos
EPELMIRROR:=http://mirror.yandex.ru/epel
RPMFORGEMIRROR:=http://apt.sw.be/redhat
ifdef MIRROR_DIR
CENTOS_REPO_DIR:=$(MIRROR_DIR)/centos/
else
CENTOS_REPO_DIR:=$/
endif
METADATA_FILES:=repomd.xml comps.xml filelists.xml.gz primary.xml.gz other.xml.gz
CENTOSEXTRA_PACKAGES:=$(shell grep -v ^\\s*\# requirements-rpm.txt)
CENTOSRPMFORGE_PACKAGES:=qemu
@ -44,7 +35,7 @@ $(CENTOS_REPO_DIR)etc/yum-$(REPO_SUFFIX).conf:
define yum_mirror_repo
[mirror]
name=CentOS $(CENTOS_63_RELEASE) - Base
name=CentOS $(CENTOS_RELEASE) - Base
baseurl=$(REPOMIRROR)/Packages
gpgcheck=0
enabled=1
@ -52,44 +43,44 @@ endef
define yum_real_repo
[base]
name=CentOS-$(CENTOS_63_RELEASE) - Base
#mirrorlist=http://mirrorlist.centos.org/?release=$(CENTOS_63_RELEASE)&arch=$(CENTOS_63_ARCH)&repo=os
baseurl=$(CENTOSMIRROR)/$(CENTOS_63_RELEASE)/os/$(CENTOS_63_ARCH)
name=CentOS-$(CENTOS_RELEASE) - Base
#mirrorlist=http://mirrorlist.centos.org/?release=$(CENTOS_RELEASE)&arch=$(CENTOS_ARCH)&repo=os
baseurl=$(CENTOSMIRROR)/$(CENTOS_RELEASE)/os/$(CENTOS_ARCH)
gpgcheck=0
enabled=1
[updates]
name=CentOS-$(CENTOS_63_RELEASE) - Updates
#mirrorlist=http://mirrorlist.centos.org/?release=$(CENTOS_63_RELEASE)&arch=$(CENTOS_63_ARCH)&repo=updates
baseurl=$(CENTOSMIRROR)/$(CENTOS_63_RELEASE)/updates/$(CENTOS_63_ARCH)
name=CentOS-$(CENTOS_RELEASE) - Updates
#mirrorlist=http://mirrorlist.centos.org/?release=$(CENTOS_RELEASE)&arch=$(CENTOS_ARCH)&repo=updates
baseurl=$(CENTOSMIRROR)/$(CENTOS_RELEASE)/updates/$(CENTOS_ARCH)
gpgcheck=0
enabled=1
[extras]
name=CentOS-$(CENTOS_63_RELEASE) - Extras
#mirrorlist=http://mirrorlist.centos.org/?release=$(CENTOS_63_RELEASE)&arch=$(CENTOS_63_ARCH)&repo=extras
baseurl=$(CENTOSMIRROR)/$(CENTOS_63_RELEASE)/extras/$(CENTOS_63_ARCH)
name=CentOS-$(CENTOS_RELEASE) - Extras
#mirrorlist=http://mirrorlist.centos.org/?release=$(CENTOS_RELEASE)&arch=$(CENTOS_ARCH)&repo=extras
baseurl=$(CENTOSMIRROR)/$(CENTOS_RELEASE)/extras/$(CENTOS_ARCH)
gpgcheck=0
enabled=1
[centosplus]
name=CentOS-$(CENTOS_63_RELEASE) - Plus
#mirrorlist=http://mirrorlist.centos.org/?release=$(CENTOS_63_RELEASE)&arch=$(CENTOS_63_ARCH)&repo=centosplus
baseurl=$(CENTOSMIRROR)/$(CENTOS_63_RELEASE)/centosplus/$(CENTOS_63_ARCH)
name=CentOS-$(CENTOS_RELEASE) - Plus
#mirrorlist=http://mirrorlist.centos.org/?release=$(CENTOS_RELEASE)&arch=$(CENTOS_ARCH)&repo=centosplus
baseurl=$(CENTOSMIRROR)/$(CENTOS_RELEASE)/centosplus/$(CENTOS_ARCH)
gpgcheck=0
enabled=1
[contrib]
name=CentOS-$(CENTOS_63_RELEASE) - Contrib
#mirrorlist=http://mirrorlist.centos.org/?release=$(CENTOS_63_RELEASE)&arch=$(CENTOS_63_ARCH)&repo=contrib
baseurl=$(CENTOSMIRROR)/$(CENTOS_63_RELEASE)/contrib/$(CENTOS_63_ARCH)
name=CentOS-$(CENTOS_RELEASE) - Contrib
#mirrorlist=http://mirrorlist.centos.org/?release=$(CENTOS_RELEASE)&arch=$(CENTOS_ARCH)&repo=contrib
baseurl=$(CENTOSMIRROR)/$(CENTOS_RELEASE)/contrib/$(CENTOS_ARCH)
gpgcheck=0
enabled=1
[epel]
name=Extra Packages for Enterprise Linux $(CENTOS_63_MAJOR) - $(CENTOS_63_ARCH)
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-$(CENTOS_63_MAJOR)&arch=$(CENTOS_63_ARCH)
baseurl=$(EPELMIRROR)/$(CENTOS_63_MAJOR)/$(CENTOS_63_ARCH)
name=Extra Packages for Enterprise Linux $(CENTOS_MAJOR) - $(CENTOS_ARCH)
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-$(CENTOS_MAJOR)&arch=$(CENTOS_ARCH)
baseurl=$(EPELMIRROR)/$(CENTOS_MAJOR)/$(CENTOS_ARCH)
gpgcheck=0
enabled=1
@ -100,22 +91,22 @@ gpgcheck=0
enabled=0
[rpmforge]
name=RHEL $(CENTOS_63_RELEASE) - RPMforge.net - dag
#mirrorlist = http://apt.sw.be/redhat/el6/en/mirrors-rpmforge
baseurl=$(RPMFORGEMIRROR)/el$(CENTOS_63_MAJOR)/en/$(CENTOS_63_ARCH)/rpmforge
name=RHEL $(CENTOS_RELEASE) - RPMforge.net - dag
#mirrorlist = http://apt.sw.be/redhat/el$(CENTOS_MAJOR)/en/mirrors-rpmforge
baseurl=$(RPMFORGEMIRROR)/el$(CENTOS_MAJOR)/en/$(CENTOS_ARCH)/rpmforge
gpgcheck=0
enabled=0
[rpmforge-extras]
name = RHEL $(CENTOS_63_RELEASE) - RPMforge.net - extras
#mirrorlist = http://apt.sw.be/redhat/el6/en/mirrors-rpmforge-extras
baseurl = $(RPMFORGEMIRROR)/el$(CENTOS_63_MAJOR)/en/$(CENTOS_63_ARCH)/extras
name = RHEL $(CENTOS_RELEASE) - RPMforge.net - extras
#mirrorlist = http://apt.sw.be/redhat/el$(CENTOS_MAJOR)/en/mirrors-rpmforge-extras
baseurl = $(RPMFORGEMIRROR)/el$(CENTOS_MAJOR)/en/$(CENTOS_ARCH)/extras
gpgcheck = 0
enabled = 0
[puppetlabs]
name=Puppet Labs Packages
baseurl=http://yum.puppetlabs.com/el/$(CENTOS_63_MAJOR)/products/$(CENTOS_63_ARCH)/
baseurl=http://yum.puppetlabs.com/el/$(CENTOS_MAJOR)/products/$(CENTOS_ARCH)/
enabled=1
gpgcheck=1
gpgkey=http://yum.puppetlabs.com/RPM-GPG-KEY-puppetlabs
@ -127,49 +118,82 @@ $(CENTOS_REPO_DIR)etc/yum-$(REPO_SUFFIX).repos.d/base.repo:
@mkdir -p $(@D)
echo "$${contents}" > $@
$(CENTOS_REPO_DIR)comps.xml.gz:
@mkdir -p $(CENTOS_REPO_DIR)
wget -O $@ $(CENTOS_63_MIRROR)/`wget -qO- $(CENTOS_63_MIRROR)/repodata/repomd.xml | grep 'comps\.xml\.gz' | awk -F'"' '{ print $$2 }'`
$(CENTOS_REPO_DIR)repodata/comps.xml.gz:
@mkdir -p $(@D)
wget -O $@ $(CENTOS_MIRROR)/`wget -qO- $(CENTOS_MIRROR)/repodata/repomd.xml | \
xml2 | grep 'comps\.xml\.gz' | awk -F'=' '{ print $$2 }'`
$(CENTOS_REPO_DIR)comps.xml: $(CENTOS_REPO_DIR)comps.xml.gz
gunzip -c $(CENTOS_REPO_DIR)comps.xml.gz > $@
$(CENTOS_REPO_DIR)repodata/comps.xml: $(CENTOS_REPO_DIR)repodata/comps.xml.gz
gunzip -c $(CENTOS_REPO_DIR)repodata/comps.xml.gz > $@
$(CENTOS_REPO_DIR)cache-infra.done: \
$/cache-boot.done: \
$(addprefix $(CENTOS_REPO_DIR)/images/,$(IMAGES_FILES)) \
$(addprefix $(CENTOS_REPO_DIR)/EFI/BOOT/,$(EFI_FILES)) \
$(addprefix $(CENTOS_REPO_DIR)/isolinux/,$(ISOLINUX_FILES))
$(ACTION.TOUCH)
$/cache-infra.done: \
$(CENTOS_REPO_DIR)etc/yum-$(REPO_SUFFIX).conf \
$(CENTOS_REPO_DIR)etc/yum-$(REPO_SUFFIX).repos.d/base.repo
$(ACTION.TOUCH)
$(CENTOS_REPO_DIR)cache-extra.done: \
$(CENTOS_REPO_DIR)comps.xml \
$(CENTOS_REPO_DIR)cache-infra.done
$/cache-extra.done: \
$(CENTOS_REPO_DIR)repodata/comps.xml \
$/cache-infra.done
CENTOSMIN_PACKAGES=$(shell grep "<packagereq type='mandatory'>" $(CENTOS_REPO_DIR)comps.xml | sed -e "s/^\s*<packagereq type='mandatory'>\(.*\)<\/packagereq>\s*$$/\\1/")
yum -c $(CENTOS_REPO_DIR)etc/yum-$(REPO_SUFFIX).conf clean all
rm -rf /var/tmp/yum-$$USER-*/
ifeq ($(IGNORE_MIRROR),1)
repotrack -c $(CENTOS_REPO_DIR)etc/yum-$(REPO_SUFFIX).conf -p $(CENTOS_REPO_DIR)Packages -a $(CENTOS_63_ARCH) $(CENTOSMIN_PACKAGES) $(CENTOSEXTRA_PACKAGES)
repotrack -r base -r updates -r extras -r contrib -r centosplus -r epel -r rpmforge-extras -c $(CENTOS_REPO_DIR)etc/yum-$(REPO_SUFFIX).conf -p $(CENTOS_REPO_DIR)Packages -a $(CENTOS_63_ARCH) $(CENTOSRPMFORGE_PACKAGES)
### NOTE: qemu-img-0.15 conflicts with packages in epel repos
-rm $(CENTOS_REPO_DIR)Packages/qemu-img-0.15*
repotrack -c $(CENTOS_REPO_DIR)etc/yum-$(REPO_SUFFIX).conf -p $(CENTOS_REPO_DIR)Packages -a $(CENTOS_ARCH) $(CENTOSMIN_PACKAGES) $(CENTOSEXTRA_PACKAGES)
repotrack -r base -r updates -r extras -r contrib -r centosplus -r epel -r rpmforge-extras -c $(CENTOS_REPO_DIR)etc/yum-$(REPO_SUFFIX).conf -p $(CENTOS_REPO_DIR)Packages -a $(CENTOS_ARCH) $(CENTOSRPMFORGE_PACKAGES)
else
repotrack -c $(CENTOS_REPO_DIR)etc/yum-$(REPO_SUFFIX).conf -p $(CENTOS_REPO_DIR)Packages -a $(CENTOS_63_ARCH) $(CENTOSMIN_PACKAGES) $(CENTOSEXTRA_PACKAGES) $(CENTOSRPMFORGE_PACKAGES)
repotrack -c $(CENTOS_REPO_DIR)etc/yum-$(REPO_SUFFIX).conf -p $(CENTOS_REPO_DIR)Packages -a $(CENTOS_ARCH) $(CENTOSMIN_PACKAGES) $(CENTOSEXTRA_PACKAGES) $(CENTOSRPMFORGE_PACKAGES)
endif
$(ACTION.TOUCH)
$(CENTOS_REPO_DIR)cache.done: $(CENTOS_REPO_DIR)cache-extra.done $(CENTOS_REPO_DIR)comps.xml $/eggs-gems.done
$/cache.done: $/cache-extra.done $/eggs-gems.done $/cache-boot.done
$(ACTION.TOUCH)
METADATA_FILES=repomd.xml comps.xml filelists.xml.gz primary.xml.gz other.xml.gz
$(addprefix $(CENTOS_REPO_DIR)Packages/repodata/,$(METADATA_FILES)): $(CENTOS_REPO_DIR)cache.done $(CENTOS_REPO_DIR)comps.xml
createrepo -g `readlink -f "$(CENTOS_REPO_DIR)comps.xml"` -o $(CENTOS_REPO_DIR)Packages $(CENTOS_REPO_DIR)Packages
$(addprefix $(CENTOS_REPO_DIR)Packages/repodata/,$(METADATA_FILES)): $/cache.done $(CENTOS_REPO_DIR)repodata/comps.xml
createrepo -g `readlink -f "$(CENTOS_REPO_DIR)repodata/comps.xml"` -o $(CENTOS_REPO_DIR)Packages $(CENTOS_REPO_DIR)Packages
$(CENTOS_REPO_DIR)repo.done: $(addprefix $(CENTOS_REPO_DIR)Packages/repodata/,$(METADATA_FILES))
$/repo.done: $(addprefix $(CENTOS_REPO_DIR)Packages/repodata/,$(METADATA_FILES))
touch $@
# centos isolinux files
$(addprefix $(CENTOS_REPO_DIR)/isolinux/,$(ISOLINUX_FILES)):
@mkdir -p $(@D)
wget -O $@ $(CENTOS_MIRROR)/isolinux/$(@F)
# centos EFI boot images
$(addprefix $(CENTOS_REPO_DIR)/EFI/BOOT/,$(EFI_FILES)):
@mkdir -p $(@D)
wget -O $@ $(CENTOS_MIRROR)/EFI/BOOT/$(@F)
# centos boot images
$(addprefix $(CENTOS_REPO_DIR)/images/,$(IMAGES_FILES)):
@mkdir -p $(@D)
wget -O $@ $(CENTOS_MIRROR)/images/$(@F)
# centos netinstall iso
$(CENTOS_ISO_DIR)/$(NETINSTALL_ISO):
mkdir -p $(@D)
wget -O $@ $(CENTOS_NETINSTALL)/$(NETINSTALL_ISO)
# EGGS AND GEMS
$(CENTOS_REPO_DIR)eggs-gems.done:
scripts/mirror.sh $(GOLDEN_MIRROR) $(LOCAL_MIRROR)
$/eggs-gems.done: requirements-gems.txt requirements-eggs.txt
@mkdir -p $/eggs
@mkdir -p $/gems
@awk -v mirror=$/eggs '{system ("[ `find " mirror " -name " $$1 "-"$$2 "* ` ] || pip install -d " mirror " " $$1 "=="$$2 )}' ./requirements-eggs.txt
@awk -v mirror=$/gems '{system ("[ `find " mirror " -name " $$1 "-"$$2 "*` ] || ( cd "mirror" && gem fetch "$$1" -v "$$2")")}' ./requirements-gems.txt
$(ACTION.TOUCH)
mirror: $(addprefix $(CENTOS_REPO_DIR)Packages/repodata/,$(METADATA_FILES))
mirror: $(addprefix $(CENTOS_REPO_DIR)Packages/repodata/,$(METADATA_FILES)) \
$(CENTOS_ISO_DIR)/$(NETINSTALL_ISO) \
$/cache-boot.done \
$/eggs-gems.done

View File

@ -1,4 +1,4 @@
/:=$(BUILD_DIR)/packages/rpm/
/:=$(BUILD_DIR)/rpm/
$/%: /:=$/
@ -22,7 +22,7 @@ endif
$/RPMS/x86_64/cirros-uec-0.3.0-1.x86_64.rpm: $/SOURCES/cirros-0.3.0-x86_64-uec.tar.gz packages/rpm/specs/cirros-0.3.0.spec
rpmbuild -vv --define "_topdir `readlink -f $/`" -ba packages/rpm/specs/cirros-0.3.0.spec
$(BUILD_DIR)/packages/rpm/rpm.done: $/RPMS/x86_64/cirros-uec-0.3.0-1.x86_64.rpm
$(BUILD_DIR)/rpm/rpm.done: $/RPMS/x86_64/cirros-uec-0.3.0-1.x86_64.rpm
$(ACTION.TOUCH)
$(addprefix $(SRC_DIR),$(SRC_FILES)):

23
repo.mk Normal file
View File

@ -0,0 +1,23 @@
# CENTOS REPOSITORIES SETTINGS
CENTOS_MAJOR:=6
CENTOS_MINOR:=3
CENTOS_RELEASE:=$(CENTOS_MAJOR).$(CENTOS_MINOR)
CENTOS_ARCH:=x86_64
CENTOS_MIRROR:=http://mirror.yandex.ru/centos/$(CENTOS_RELEASE)/os/$(CENTOS_ARCH)
CENTOS_NETINSTALL:=http://mirror.yandex.ru/centos/$(CENTOS_RELEASE)/isos/$(CENTOS_ARCH)
CENTOS_GPG:=http://mirror.yandex.ru/centos
REPOMIRROR:=$(MIRROR_URL)/centos
CENTOSMIRROR:=http://mirror.yandex.ru/centos
EPELMIRROR:=http://mirror.yandex.ru/epel
RPMFORGEMIRROR:=http://apt.sw.be/redhat
CENTOS_REPO_DIR:=$(LOCAL_MIRROR)/centos/$(CENTOS_RELEASE)/os/$(CENTOS_ARCH)/
CENTOS_ISO_DIR:=$(LOCAL_MIRROR)/centos/$(CENTOS_RELEASE)/isos/$(CENTOS_ARCH)/
ISOLINUX_FILES:=boot.msg grub.conf initrd.img isolinux.bin memtest splash.jpg vesamenu.c32 vmlinuz
IMAGES_FILES:=efiboot.img efidisk.img install.img
EFI_FILES:=BOOTX64.conf BOOTX64.efi splash.xpm.gz
BOOTSTRAP_FILES:=initramfs.img linux
NETINSTALL_ISO:=CentOS-$(CENTOS_RELEASE)-$(CENTOS_ARCH)-netinstall-EFI.iso

View File

@ -1,38 +0,0 @@
apache2
apt-utils
chef
cloud-init
cobbler
cobbler-web
createrepo
debconf-utils
dnsmasq
libapache2-mod-wsgi
libapache2-svn
libhttpclient-ruby
libjson-ruby
libstomp-ruby
libxml2-dev
mcollective
mcollective-client
ntp
ohai
puppetmaster
puppet
python-dev
python-django
python-ipaddr
python-paramiko
python-pip
python-pypcap
python-scapy
python-virtualenv
redis-server
rsync
rubygems
ruby-json
runit
tftpd-hpa
vlan
yum
yum-utils

View File

@ -1,12 +1,16 @@
autoconf
automake
byacc
cronie
crontabs
curl
dhclient
dmidecode
flex
gcc
gcc-c++
make
mcollective
mysql
mysql-server
ntp
@ -18,6 +22,7 @@ openstack-keystone
openstack-nova
openstack-nova-novncproxy
puppet-2.7.19
python-devel
novnc
rabbitmq-server
ruby
@ -27,11 +32,7 @@ ruby-mysql
ruby-rdoc
ruby-ri
ruby-shadow
wget
dhclient
mcollective
tcpdump
scapy
flex
byacc
python-devel
tcpdump
wget
yum

View File

@ -1,39 +0,0 @@
#!/bin/bash
# Script should be run from directory that contains requirements files
[ -z $1 -a -z $2 ] && echo "Use: mirror.sh remote_mirror_path local_mirror_directory" && exit 1
MIRROR_SERVER=$1
HOSTNAME=`hostname`
LOCAL_MIRROR=$2
# checking is server trying to sync from itself or not
if [[ $MIRROR_SERVER =~ $HOSTNAME.*:(.*) ]]
then
LOCAL_PATH=${BASH_REMATCH[1]}
MIRROR_DIR_EGGS=$LOCAL_PATH/eggs
MIRROR_DIR_GEMS=$LOCAL_PATH/gems
[ -f ./requirements-eggs.txt -a -f ./requirements-gems.txt ] || ( echo "Couldn't find requirements-eggs.txt/requirement-gems.txt file(s)\nTry to run this script from project root directory" && exit 1 )
# creating/updating repo for eggs
[ -d $MIRROR_DIR_EGGS ] || mkdir -p $MIRROR_DIR_EGGS
awk -v mirror=$MIRROR_DIR_EGGS '{system ("[ `find " mirror " -name " $1 "-" $2 "* ` ] || pip install -d " mirror " " $1 "=="$2 )}' ./requirements-eggs.txt
# creating/updating repo for gems
[ -d $MIRROR_DIR_GEMS ] || mkdir -p $MIRROR_DIR_GEMS
awk -v mirror=$MIRROR_DIR_GEMS '{system ("[ `find " mirror " -name " $1 "-" $2 "*` ] || ( cd "mirror" && gem fetch "$1" -v "$2")")}' ./requirements-gems.txt
[ -h $LOCAL_MIRROR ] || ln -s ${BASH_REMATCH[1]} $LOCAL_MIRROR
echo "Local golden mirror is updated from the internet."
echo "Symlink to ${BASH_REMATCH[1]} created at the build dir"
else
# rsyncing from the golden mirror and
# assuming that current user have access to the root user of golden mirror using public keys
rsync -e 'ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no' --size-only -r root@$MIRROR_SERVER/* $LOCAL_MIRROR || (echo "Couldn't Rsync with Golden Mirror" && exit 1)
echo "Local mirror updated from the golden mirror"
fi