From 2769cf9c8f97b133af5454568c23e440212fa9d8 Mon Sep 17 00:00:00 2001 From: IvanBerezovskiy Date: Tue, 27 Aug 2013 20:20:47 +0400 Subject: [PATCH] Add diskimage-creating script, elements for mirrors * Automatic building Fedora and Ubuntu cloud images with all elements from savanna-extra repository * Using mirrors for updating images Change-Id: I12632b5cee42b1dbfd79b7b7c3a7b26962ace625 --- README.rst | 8 +++ diskimage-create/README.rst | 18 ++++++ diskimage-create/diskimage-create.sh | 79 ++++++++++++++++++++++++ elements/apt-mirror/README.md | 2 + elements/apt-mirror/finalise.d/99-setup | 3 + elements/apt-mirror/pre-install.d/00-apt | 5 ++ elements/apt-mirror/root.d/0-check | 5 ++ elements/yum-mirror/README.md | 2 + elements/yum-mirror/finalise.d/99-setup | 3 + elements/yum-mirror/pre-install.d/00-yum | 12 ++++ elements/yum-mirror/root.d/0-check | 5 ++ 11 files changed, 142 insertions(+) create mode 100644 diskimage-create/README.rst create mode 100755 diskimage-create/diskimage-create.sh create mode 100644 elements/apt-mirror/README.md create mode 100755 elements/apt-mirror/finalise.d/99-setup create mode 100755 elements/apt-mirror/pre-install.d/00-apt create mode 100755 elements/apt-mirror/root.d/0-check create mode 100644 elements/yum-mirror/README.md create mode 100755 elements/yum-mirror/finalise.d/99-setup create mode 100755 elements/yum-mirror/pre-install.d/00-yum create mode 100644 elements/yum-mirror/root.d/0-check diff --git a/README.rst b/README.rst index 56ade051..7661ef7e 100644 --- a/README.rst +++ b/README.rst @@ -2,3 +2,11 @@ Savanna image elements project ============================== This repo is a place for Savanna-related for diskimage-builder elements. + +Script for creating Fedora and Ubuntu cloud images with our elements and default parameters. You should only need to run this command: + +.. sourcecode:: bash + + sudo bash diskimage-create.sh + +Note: More information about script `diskimage-create `_ diff --git a/diskimage-create/README.rst b/diskimage-create/README.rst new file mode 100644 index 00000000..4a56d137 --- /dev/null +++ b/diskimage-create/README.rst @@ -0,0 +1,18 @@ +Diskimage-builder script for creation cloud images +================================================= + +This scrtips builds Ubuntu and Fedora cloud images with default parameters. + +For users: + +1. Use your environment (export / setenv) to alter the scripts behavior. Environment variables the script accepts are DIB_HADOOP_VERSION, JAVA_DOWNLOAD_URL, OOZIE_DOWNLOAD_URL, HIVE_VERSION, ubuntu_image_name, fedora_image_name. + +2. If you want to use your local mirrors, you should specify http urls for Fedora and Ubuntu mirrors using parameters 'FEDORA_MIRROR' and 'UBUNTU_MIRROR' like this: + +.. sourcecode:: bash + + sudo USE_MIRRORS=true FEDORA_MIRROR="url_for_fedora_mirror" UBUNTU_MIRROR="url_for_ubuntu_mirror" bash diskimage-create.sh + +For developers: + +1. If you want to add your element to this repository, you should edit this script in your commit (you should export variables for your element and add name of element to variables 'element_sequence'). diff --git a/diskimage-create/diskimage-create.sh b/diskimage-create/diskimage-create.sh new file mode 100755 index 00000000..41bd66b6 --- /dev/null +++ b/diskimage-create/diskimage-create.sh @@ -0,0 +1,79 @@ +#!/bin/bash + +set -e + +# Export variables for elements + +export DIB_HADOOP_VERSION="1.1.2" +export JAVA_DOWNLOAD_URL="http://download.oracle.com/otn-pub/java/jdk/7u25-b15/jdk-7u25-linux-x64.tar.gz" +export ubuntu_image_name="ubuntu_savanna_latest" +export fedora_image_name="fedora_savanna_latest" +export OOZIE_DOWNLOAD_URL="http://a8e0dce84b3f00ed7910-a5806ff0396addabb148d230fde09b7b.r31.cf1.rackcdn.com/oozie-3.3.2.tar.gz" +export HIVE_VERSION="0.11.0" + +str=$(head -1 /etc/os-release) +if [ $str = 'NAME="Ubuntu"' ]; then + apt-get update -y + apt-get install qemu kpartx git -y +elif [ $str = 'NAME=Fedora' ]; then + yum update -y + yum install qemu kpartx git -y +fi + +if [ -d /home/$USER/.cache/image-create ]; then + rm -rf /home/$USER/.cache/image-create/* +fi + +cur_dir=$(pwd) +if [ ! -d "DIB_work" ]; then + mkdir DIB_work +fi +pushd DIB_work + +# Cloning repostiroies + +rm -rf diskimage-builder +git clone https://github.com/openstack/diskimage-builder +rm -rf savanna-extra +git clone https://github.com/stackforge/savanna-extra + +pushd diskimage-builder +export DIB_COMMIT_ID=`git show --format=%H | head -1` +popd + +export PATH=$PATH:$cur_dir/DIB_work/diskimage-builder/bin +export ELEMENTS_PATH=$cur_dir/DIB_work/diskimage-builder/elements + +pushd savanna-extra +export SAVANNA_ELEMENTS_COMMIT_ID=`git show --format=%H | head -1` +popd + +if [ -e $cur_dir/DIB_work/diskimage-builder/sudoers.d/img-build-sudoers ]; then + cp $cur_dir/DIB_work/diskimage-builder/sudoers.d/img-build-sudoers /etc/sudoers.d/ + chown root:root /etc/sudoers.d/img-build-sudoers + chmod 0440 /etc/sudoers.d/img-build-sudoers +fi +cp -r $cur_dir/DIB_work/savanna-extra/elements/* $cur_dir/DIB_work/diskimage-builder/elements/ + +ubuntu_elements_sequence="base vm ubuntu hadoop swift_hadoop oozie mysql hive" +fedora_elements_sequence="base vm fedora hadoop swift_hadoop oozie mysql hive selinux-permissive" + +if [ -n "$USE_MIRRORS" ]; then + mirror_element=" apt-mirror" + ubuntu_elements_sequence=$ubuntu_elements_sequence$mirror_element + mirror_element=" yum-mirror" + fedora_elements_sequence=$fedora_elements_sequence$mirror_element +fi + +# Creating Ubuntu cloud image +disk-image-create $ubuntu_elements_sequence -o $ubuntu_image_name + +# Creating Fedora cloud image +# Patameter 'DIB_IMAGE_SIZE' should be specified for Fedora only +export DIB_IMAGE_SIZE="10" +disk-image-create $fedora_elements_sequence -o $fedora_image_name + +mv $fedora_image_name.qcow2 ../ +mv $ubuntu_image_name.qcow2 ../ +popd +rm -rf DIB_work diff --git a/elements/apt-mirror/README.md b/elements/apt-mirror/README.md new file mode 100644 index 00000000..7e722ef6 --- /dev/null +++ b/elements/apt-mirror/README.md @@ -0,0 +1,2 @@ +This element setups mirror for updating Ubuntu cloud image. Using mirror increases speed of building image. +You should specify http url for Ubuntu mirror using parameter 'UBUNTU_MIRROR'. diff --git a/elements/apt-mirror/finalise.d/99-setup b/elements/apt-mirror/finalise.d/99-setup new file mode 100755 index 00000000..9e47021e --- /dev/null +++ b/elements/apt-mirror/finalise.d/99-setup @@ -0,0 +1,3 @@ +#!/bin/bash + +rm /etc/apt/apt.conf.d/01proxy diff --git a/elements/apt-mirror/pre-install.d/00-apt b/elements/apt-mirror/pre-install.d/00-apt new file mode 100755 index 00000000..492b59a5 --- /dev/null +++ b/elements/apt-mirror/pre-install.d/00-apt @@ -0,0 +1,5 @@ +#!/bin/bash + +mkdir -p /etc/apt/apt.conf.d/ +touch /etc/apt/apt.conf.d/01proxy +echo -e "Acquire::http { Proxy \"$UBUNTU_MIRROR\"; };" > /etc/apt/apt.conf.d/01proxy diff --git a/elements/apt-mirror/root.d/0-check b/elements/apt-mirror/root.d/0-check new file mode 100755 index 00000000..4b1b0944 --- /dev/null +++ b/elements/apt-mirror/root.d/0-check @@ -0,0 +1,5 @@ +#!/bin/bash +if [ -z "$UBUNTU_MIRROR" ]; then + echo "You should specify parameter 'UBUNTU_MIRROR'" + exit 2 +fi diff --git a/elements/yum-mirror/README.md b/elements/yum-mirror/README.md new file mode 100644 index 00000000..724cf0c7 --- /dev/null +++ b/elements/yum-mirror/README.md @@ -0,0 +1,2 @@ +This element setups mirror for updating Fedora cloud image. Using mirror increases speed of building image. +You should specify http url for Fedora mirror using parameter 'FEDORA_MIRROR'. diff --git a/elements/yum-mirror/finalise.d/99-setup b/elements/yum-mirror/finalise.d/99-setup new file mode 100755 index 00000000..9ec414ea --- /dev/null +++ b/elements/yum-mirror/finalise.d/99-setup @@ -0,0 +1,3 @@ +#!/bin/bash + +mv /etc/yum.repos.d/tempfile /etc/yum.repos.d/fedora.repo diff --git a/elements/yum-mirror/pre-install.d/00-yum b/elements/yum-mirror/pre-install.d/00-yum new file mode 100755 index 00000000..71b94b31 --- /dev/null +++ b/elements/yum-mirror/pre-install.d/00-yum @@ -0,0 +1,12 @@ +#!/bin/bash + +mv /etc/yum.repos.d/fedora.repo /etc/yum.repos.d/tempfile +cat >> /etc/yum.repos.d/fedora.repo <