[molecules] add Amazon EC2 ext3-based image generation specs
This commit is contained in:
parent
1756f52a5c
commit
3621eda846
13
molecules/sabayon-amd64-spinbase-amazon-ami-template.spec
Normal file
13
molecules/sabayon-amd64-spinbase-amazon-ami-template.spec
Normal file
@ -0,0 +1,13 @@
|
||||
# Use abs path, otherwise daily builds automagic won't work
|
||||
# For further documentation, see the file above:
|
||||
%import /sabayon/molecules/spinbase-amazon-ami-image-template.common
|
||||
|
||||
# pre chroot command, example, for 32bit chroots on 64bit system, you always
|
||||
# have to append "linux32" this is useful for inner_chroot_script
|
||||
# prechroot:
|
||||
|
||||
# Path to source ISO file (MANDATORY)
|
||||
source_iso: /sabayon/iso/Sabayon_Linux_SpinBase_DAILY_amd64.iso
|
||||
|
||||
release_version: 6
|
||||
image_name: Sabayon_Linux_SpinBase_6_amd64_ami.img
|
13
molecules/sabayon-x86-spinbase-amazon-ami-template.spec
Normal file
13
molecules/sabayon-x86-spinbase-amazon-ami-template.spec
Normal file
@ -0,0 +1,13 @@
|
||||
# Use abs path, otherwise daily builds automagic won't work
|
||||
# For further documentation, see the file above:
|
||||
%import /sabayon/molecules/spinbase-amazon-ami-image-template.common
|
||||
|
||||
# pre chroot command, example, for 32bit chroots on 64bit system, you always
|
||||
# have to append "linux32" this is useful for inner_chroot_script
|
||||
prechroot: linux32
|
||||
|
||||
# Path to source ISO file (MANDATORY)
|
||||
source_iso: /sabayon/iso/Sabayon_Linux_SpinBase_DAILY_x86.iso
|
||||
|
||||
release_version: 6
|
||||
image_name: Sabayon_Linux_SpinBase_6_x86_ami.img
|
126
molecules/spinbase-amazon-ami-image-template.common
Normal file
126
molecules/spinbase-amazon-ami-image-template.common
Normal file
@ -0,0 +1,126 @@
|
||||
# WARNING:
|
||||
# variables in your .spec files importing this .common header,
|
||||
# DO NOT override the ones set here, but rather their values will
|
||||
# be concatenated.
|
||||
# So, if this files has:
|
||||
# my_variable: hello_world
|
||||
# And you import this (through %import file.common) and set
|
||||
# my_variable: go_to_hell
|
||||
# You will get my_variable containing: "hello_world go_to_hell"
|
||||
# It doesn't work like in programming languages!
|
||||
|
||||
# Define an alternative execution strategy, in this case, the value must be
|
||||
execution_strategy: iso_to_image
|
||||
|
||||
# Error script command, executed when something went wrong and molecule has
|
||||
# to terminate the execution
|
||||
# Variables exported:
|
||||
# LOOP_DEVICE = loop device (/dev/loopN) currently in use
|
||||
error_script: /sabayon/scripts/image_error_script.sh
|
||||
|
||||
# Outer chroot script command, to be executed outside destination chroot before
|
||||
# before entering it (and before inner_chroot_script)
|
||||
outer_chroot_script: /sabayon/scripts/remaster_pre.sh
|
||||
|
||||
# Inner chroot script command, to be executed inside destination chroot before
|
||||
# packing it
|
||||
inner_chroot_script: /sabayon/scripts/remaster_generic_inner_chroot_script.sh
|
||||
|
||||
# Inner chroot script command, to be executed inside destination chroot after
|
||||
# packages installation and removal
|
||||
inner_chroot_script_after: /sabayon/scripts/image_generic_inner_chroot_script_after.sh
|
||||
|
||||
# Outer chroot script command, to be executed outside destination chroot before
|
||||
# before entering it (and AFTER inner_chroot_script)
|
||||
outer_chroot_script_after: /sabayon/scripts/remaster_post.sh
|
||||
|
||||
# Pre-image building script. Hook called before image file creation
|
||||
# Variables exported:
|
||||
# TMP_IMAGE_PATH = path pointing to the temporary destination image file
|
||||
# LOOP_DEVICE = loop device (/dev/loopN) currently in use
|
||||
# pre_image_script: /sabayon/scripts/pre_image_script.sh
|
||||
|
||||
# Post-image building script. Hook called after image file creation and move
|
||||
# into destination directory.
|
||||
# Variables exported:
|
||||
# IMAGE_PATH = path pointing to the destination image file
|
||||
# IMAGE_CHECKSUM_PATH = path pointing to the destination image file checksum (md5)
|
||||
# post_image_script: /sabayon/scripts/post_image_script.sh
|
||||
|
||||
# Destination directory for the image path (MANDATORY)
|
||||
destination_image_directory: /sabayon/images
|
||||
|
||||
# Specify an alternative image file name (image file name will be automatically
|
||||
# produced otherwise)
|
||||
# image_name:
|
||||
|
||||
# Specify the image file size in Megabytes. This is mandatory.
|
||||
# To avoid runtime failure, make sure the image is large enough to fit your
|
||||
# chroot data.
|
||||
# Example: 5000 (means: ~5GB)
|
||||
# Example: 15000 (means: ~15GB)
|
||||
image_mb: 5000
|
||||
|
||||
# Either set this to "yes" or "no" if you want your image to be filled with
|
||||
# random data instead of zeroes. urandom is used, fallback is: random.
|
||||
# Default is: no
|
||||
# image_randomize:
|
||||
|
||||
# Specify an image filesystem formatter that takes a single argument , which is
|
||||
# the image device (by design, a loop device is passed to this executable).
|
||||
# Default is: mkfs.ext3
|
||||
# image_formatter:
|
||||
|
||||
# Specify an image file mount command. Two arguments are passed: (1) a loop
|
||||
# device (/dev/loopN), (2) a temporary destination directory.
|
||||
# Default is: mount -o loop,rw
|
||||
# image_mounter:
|
||||
|
||||
# Specify am image file unmount command. One arguments is passed: mount point.
|
||||
# Default is: umount
|
||||
# image_umounter:
|
||||
|
||||
# Alternative ISO file mount command (default is: mount -o loop -t iso9660)
|
||||
# iso_mounter:
|
||||
|
||||
# Alternative ISO umounter command (default is: umount)
|
||||
# iso_umounter:
|
||||
|
||||
# Alternative squashfs file mount command (default is: mount -o loop -t squashfs)
|
||||
# squash_mounter:
|
||||
|
||||
# Alternative ISO squashfs umount command (default is: umount)
|
||||
# squash_umounter:
|
||||
|
||||
# List of packages that would be removed from chrooted system (comma separated)
|
||||
packages_to_remove:
|
||||
app-admin/anaconda,
|
||||
net-misc/networkmanager,
|
||||
net-firewall/ufw,
|
||||
sys-kernel/linux-sabayon
|
||||
|
||||
# Custom shell call to packages removal (default is: equo remove)
|
||||
# custom_packages_remove_cmd:
|
||||
|
||||
# List of packages that would be added from chrooted system (comma separated)
|
||||
packages_to_add:
|
||||
app-admin/ec2-ami-tools,
|
||||
net-misc/dhcpcd,
|
||||
sys-kernel/linux-xen-domU,
|
||||
sys-process/atop
|
||||
|
||||
# Custom shell call to packages add (default is: equo install)
|
||||
# custom_packages_add_cmd:
|
||||
|
||||
# Custom command for updating repositories (default is: equo update)
|
||||
# repositories_update_cmd:
|
||||
|
||||
# Determine whether repositories update should be run (if packages_to_add is set)
|
||||
# (default is: no), values are: yes, no.
|
||||
# execute_repositories_update: no
|
||||
|
||||
# Directories to remove completely (comma separated)
|
||||
# paths_to_remove:
|
||||
|
||||
# Directories to empty (comma separated)
|
||||
# paths_to_empty:
|
19
scripts/image_error_script.sh
Executable file
19
scripts/image_error_script.sh
Executable file
@ -0,0 +1,19 @@
|
||||
#!/bin/sh
|
||||
if [ -d "${CHROOT_DIR}/proc" ]; then
|
||||
echo "Unmounting ${CHROOT_DIR}/proc"
|
||||
umount "${CHROOT_DIR}/proc"
|
||||
fi
|
||||
|
||||
CHROOT_PKGS_DIR="${CHROOT_DIR}/var/lib/entropy/client/packages"
|
||||
if [ -d "${CHROOT_PKGS_DIR}" ]; then
|
||||
echo "Umounting bind to ${CHROOT_PKGS_DIR}"
|
||||
umount "${CHROOT_PKGS_DIR}" || exit 1
|
||||
fi
|
||||
|
||||
echo "trying to umount ${CHROOT_DIR}"
|
||||
umount "${CHROOT_DIR}"
|
||||
|
||||
#if [ -n "${LOOP_DEVICE}" ]; then
|
||||
# echo "trying to umount loop device ${LOOP_DEVICE}"
|
||||
# /sbin/losetup -d "${LOOP_DEVICE}"
|
||||
#fi
|
89
scripts/image_generic_inner_chroot_script_after.sh
Executable file
89
scripts/image_generic_inner_chroot_script_after.sh
Executable file
@ -0,0 +1,89 @@
|
||||
#!/bin/sh
|
||||
|
||||
echo
|
||||
echo "Configuring AMI chroot"
|
||||
echo
|
||||
|
||||
/usr/sbin/env-update && source /etc/profile
|
||||
|
||||
# setup networking, make sure networkmanager is gone
|
||||
rc-update del networkmanager default &> /dev/null
|
||||
# add eth0, should get dhcp by default already
|
||||
rc-update add net.eth0 default
|
||||
|
||||
# drop ufw
|
||||
rc-update del ufw default
|
||||
|
||||
# drop other useless services
|
||||
|
||||
rc-update del sabayonlive boot
|
||||
rc-update del x-setup boot
|
||||
|
||||
# Enable ssh
|
||||
rc-update add sshd default
|
||||
|
||||
# setup default root password
|
||||
echo "root:sabayonamichangeme" | chpasswd
|
||||
|
||||
# setup UTC clock
|
||||
sed -i 's:clock=".*":clock="UTC":' /etc/conf.d/hwclock || exit 1
|
||||
|
||||
# setup fstab
|
||||
# TODO: really needed?
|
||||
echo "# molecule generated fstab
|
||||
/dev/sda1 / ext3 defaults 1 1
|
||||
/dev/sdb /mnt ext3 defaults 0 0
|
||||
none /dev/shm tmpfs defaults 0 0" > /etc/fstab
|
||||
|
||||
echo -5 | equo conf update
|
||||
mount -t proc proc /proc
|
||||
|
||||
export ETP_NONINTERACTIVE=1
|
||||
|
||||
# need to install grub-1
|
||||
equo install sys-boot/grub:0 || exit 1
|
||||
# remove grub-2
|
||||
equo remove sys-boot/grub:2 --nodeps --force-system || exit 1
|
||||
|
||||
# configure grub-1 config
|
||||
kernel_bin=$(ls /boot/kernel-genkernel-* | sort | tail -n 1)
|
||||
# we need a bzImage
|
||||
#initrd_bin=$(ls /boot/initramfs-genkernel-* | sort | tail -n 1)
|
||||
rm -f /boot/grub/grub.cfg
|
||||
echo "default 0
|
||||
timeout 3
|
||||
title EC2
|
||||
root (hd0)
|
||||
kernel ${kernel_bin} root=/dev/sda1
|
||||
" > /boot/grub/grub.conf
|
||||
# initrd ${initrd_bin}
|
||||
|
||||
|
||||
# Generate list of installed packages
|
||||
equo query list installed -qv > /etc/sabayon-pkglist
|
||||
|
||||
/lib/rc/bin/rc-depend -u
|
||||
|
||||
echo "Vacuum cleaning client db"
|
||||
rm /var/lib/entropy/client/database/*/sabayonlinux.org -rf
|
||||
rm /var/lib/entropy/client/database/*/sabayon-weekly -rf
|
||||
equo rescue vacuum
|
||||
|
||||
# restore original repositories.conf (all mirrors were filtered for speed)
|
||||
cp /etc/entropy/repositories.conf.example /etc/entropy/repositories.conf || exit 1
|
||||
|
||||
# cleanup log dir
|
||||
rm /var/lib/entropy/logs -rf
|
||||
|
||||
# Generate openrc cache
|
||||
touch /lib/rc/init.d/softlevel
|
||||
/etc/init.d/savecache start
|
||||
/etc/init.d/savecache zap
|
||||
|
||||
ldconfig
|
||||
ldconfig
|
||||
umount /proc
|
||||
|
||||
|
||||
# remove hw hash
|
||||
rm -f /etc/entropy/.hw.hash
|
Loading…
Reference in New Issue
Block a user