From 375ddd1e9e9189c9d1dc4ababd22a78554107d9b Mon Sep 17 00:00:00 2001 From: Victoria Martinez de la Cruz Date: Mon, 27 Mar 2017 22:17:01 +0000 Subject: [PATCH] Add support for CentOS This change aims to add the foundations for CentOS support on manila-image-elements. In this patch-set, the following has been modified - Added elements for manila-centos-minimal - Added elements for centos-nfs - Added elements for centos-cifs - Renamed all elements for the different protocols to distro-protocol to facilitate automation - Modified the main script to take the distro param Follow-up patches will add centos-based elements for all other protocols supported. Change-Id: Ie1469a8b3973b9a15c3fa27688df3b7e7e8da688 Partial-Bug: #1675538 --- bin/manila-image-create | 39 ++++++++++++------- elements/centos-cifs/install.d/50-manila-cifs | 5 +++ .../post-install.d/50-manila-smb-enable | 11 ++++++ .../51-manila-samba-patch-config} | 0 elements/centos-nfs/install.d/50-manila-nfs | 10 +++++ .../post-install.d/50-manila-nfs-enable | 11 ++++++ elements/manila-centos-minimal/README.rst | 5 +++ elements/manila-centos-minimal/element-deps | 1 + .../manila-centos-minimal/element-provides | 1 + .../package-installs.yaml | 8 ++++ .../post-install.d/50-manila-user | 11 ++++++ .../pre-install.d/00-centos-yum-update | 9 +++++ .../pre-install.d/01-set-centos-mirror | 15 +++++++ .../install.d/50-manila-cifs | 0 .../50-manila-samba-patch-config | 10 +++++ .../install.d/50-manila-nfs-ganesha | 0 .../package-installs.yaml | 0 .../install.d/50-manila-nfs | 0 .../post-install.d/50-manila-nfs-patch-config | 0 .../install.d/50-manila-unfs3 | 0 .../install.d/unfs3 | 0 .../post-install.d/50-manila-zfs | 0 22 files changed, 123 insertions(+), 13 deletions(-) create mode 100755 elements/centos-cifs/install.d/50-manila-cifs create mode 100755 elements/centos-cifs/post-install.d/50-manila-smb-enable rename elements/{manila-cifs/post-install.d/50-manila-samba-patch-config => centos-cifs/post-install.d/51-manila-samba-patch-config} (100%) create mode 100755 elements/centos-nfs/install.d/50-manila-nfs create mode 100755 elements/centos-nfs/post-install.d/50-manila-nfs-enable create mode 100755 elements/manila-centos-minimal/README.rst create mode 100755 elements/manila-centos-minimal/element-deps create mode 100755 elements/manila-centos-minimal/element-provides create mode 100755 elements/manila-centos-minimal/package-installs.yaml create mode 100755 elements/manila-centos-minimal/post-install.d/50-manila-user create mode 100755 elements/manila-centos-minimal/pre-install.d/00-centos-yum-update create mode 100755 elements/manila-centos-minimal/pre-install.d/01-set-centos-mirror rename elements/{manila-cifs => ubuntu-cifs}/install.d/50-manila-cifs (100%) create mode 100755 elements/ubuntu-cifs/post-install.d/50-manila-samba-patch-config rename elements/{manila-nfs-ganesha => ubuntu-nfs-ganesha}/install.d/50-manila-nfs-ganesha (100%) rename elements/{manila-nfs-ganesha => ubuntu-nfs-ganesha}/package-installs.yaml (100%) rename elements/{manila-nfs => ubuntu-nfs}/install.d/50-manila-nfs (100%) rename elements/{manila-nfs => ubuntu-nfs}/post-install.d/50-manila-nfs-patch-config (100%) rename elements/{manila-unfs3 => ubuntu-unfs3}/install.d/50-manila-unfs3 (100%) rename elements/{manila-unfs3 => ubuntu-unfs3}/install.d/unfs3 (100%) rename elements/{manila-zfs => ubuntu-zfs}/post-install.d/50-manila-zfs (100%) diff --git a/bin/manila-image-create b/bin/manila-image-create index 6899ed3..72412c2 100755 --- a/bin/manila-image-create +++ b/bin/manila-image-create @@ -25,6 +25,7 @@ MANILA_IMG_NAME=${MANILA_IMG_NAME:-"manila-service-image"} # Manila image creation default MANILA_SHARE_PROTO=${MANILA_SHARE_PROTO:-"default"} +MANILA_DISTRO=${MANILA_DISTRO:-"ubuntu"} # Path to elements SCRIPT_HOME="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" @@ -54,23 +55,32 @@ err() { } print_usage() { - echo "Usage: ${0##*/} [-s share-proto] [-h]" + echo "Usage: ${0##*/} [-s share-proto] [-d distro] [-h]" echo "Options:" echo " -s | --share-proto: name of the share protocol. \ Possible options are nfs, nfs-ganesha, cifs or zfs" + echo " -d | --distro: name of the Linux distro. \ + Possible options are ubuntu or centos" echo " -h | --help: print this usage message and exit" echo "" echo "Usage example: manila_image_elements -s nfs" } -valid_share_protocol(){ - if [ "${MANILA_SHARE_PROTO}" != "nfs" ] && [ "${MANILA_SHARE_PROTO}" != "nfs-ganesha" ] && +valid_share_protocol() { + if [ "${MANILA_SHARE_PROTO}" != "nfs" ] && [ "${MANILA_SHARE_PROTO}" != "nfs-ganesha" ] && [ "${MANILA_SHARE_PROTO}" != "cifs" ] && [ "${MANILA_SHARE_PROTO}" != "zfs" ]; then err "Protocol ${MANILA_SHARE_PROTO} not supported. Valid options are nfs, nfs-ganesha, cifs or zfs." exit 1 fi } +valid_distro() { + if ["${MANILA_DISTRO}" != "ubuntu" ] && [ "${MANILA_DISTRO}" != "centos" ]; then + err "Distro ${MANILA_DISTRO} not supported. Valid options are ubuntu or centos." + exit 1 + fi +} + parse_arguments() { while [[ $# > 0 ]]; do case "$1" in @@ -79,6 +89,12 @@ parse_arguments() { valid_share_protocol shift 2 ;; + -d|--distro) + export MANILA_DISTRO=$2 + export MANILA_IMG_OS=manila-$2-minimal + valid_distro + shift 2 + ;; -h|--help) print_usage exit 0 @@ -93,27 +109,24 @@ parse_arguments() { # Verify configuration # -------------------- -REQUIRED_ELEMENTS="manila-ssh vm $MANILA_IMG_OS dhcp-all-interfaces" -IMAGE_FORMAT="qcow2" -OPTIONAL_ELEMENTS= -OPTIONAL_DIB_ARGS= - configure() { + REQUIRED_ELEMENTS="manila-ssh vm $MANILA_IMG_OS dhcp-all-interfaces" + IMAGE_FORMAT="qcow2" OPTIONAL_ELEMENTS= OPTIONAL_DIB_ARGS= if [ "$MANILA_SHARE_PROTO" = "default" ]; then # NOTE(vkmc) Generic driver uses 2 protocols by default # NFS and CIFS. This is required by the gate. - OPTIONAL_ELEMENTS="$OPTIONAL_ELEMENTS manila-nfs manila-cifs" + OPTIONAL_ELEMENTS="$OPTIONAL_ELEMENTS ${MANILA_DISTRO}-nfs ${MANILA_DISTRO}-cifs" elif [ "$MANILA_SHARE_PROTO" = "nfs" ]; then - OPTIONAL_ELEMENTS="$OPTIONAL_ELEMENTS manila-nfs" + OPTIONAL_ELEMENTS="$OPTIONAL_ELEMENTS ${MANILA_DISTRO}-nfs" elif [ "$MANILA_SHARE_PROTO" = "nfs-ganesha" ]; then - OPTIONAL_ELEMENTS="$OPTIONAL_ELEMENTS manila-nfs-ganesha" + OPTIONAL_ELEMENTS="$OPTIONAL_ELEMENTS ${MANILA_DISTRO}-nfs-ganesha" elif [ "$MANILA_SHARE_PROTO" = "cifs" ]; then - OPTIONAL_ELEMENTS="$OPTIONAL_ELEMENTS manila-cifs" + OPTIONAL_ELEMENTS="$OPTIONAL_ELEMENTS ${MANILA_DISTRO}-cifs" elif [ "$MANILA_SHARE_PROTO" = "zfs" ]; then - OPTIONAL_ELEMENTS="$OPTIONAL_ELEMENTS manila-zfs" + OPTIONAL_ELEMENTS="$OPTIONAL_ELEMENTS ${MANILA_DISTRO}-zfs" fi if [ "$USE_OFFLINE_MODE" = "yes" ]; then diff --git a/elements/centos-cifs/install.d/50-manila-cifs b/elements/centos-cifs/install.d/50-manila-cifs new file mode 100755 index 0000000..2e51e01 --- /dev/null +++ b/elements/centos-cifs/install.d/50-manila-cifs @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +set -eu + +yum -y samba cifs-utils diff --git a/elements/centos-cifs/post-install.d/50-manila-smb-enable b/elements/centos-cifs/post-install.d/50-manila-smb-enable new file mode 100755 index 0000000..a0b0ce5 --- /dev/null +++ b/elements/centos-cifs/post-install.d/50-manila-smb-enable @@ -0,0 +1,11 @@ +#!/bin/bash + +if [ ${DIB_DEBUG_TRACE:-0} -gt 0 ]; then + set -x +fi +set -eu +set -o pipefail + +# Enable and start Samba server +systemctl enable smb.service +systemctl start smb.service diff --git a/elements/manila-cifs/post-install.d/50-manila-samba-patch-config b/elements/centos-cifs/post-install.d/51-manila-samba-patch-config similarity index 100% rename from elements/manila-cifs/post-install.d/50-manila-samba-patch-config rename to elements/centos-cifs/post-install.d/51-manila-samba-patch-config diff --git a/elements/centos-nfs/install.d/50-manila-nfs b/elements/centos-nfs/install.d/50-manila-nfs new file mode 100755 index 0000000..ce75d8b --- /dev/null +++ b/elements/centos-nfs/install.d/50-manila-nfs @@ -0,0 +1,10 @@ +#!/bin/bash + +if [ ${DIB_DEBUG_TRACE:-0} -gt 0 ]; then + set -x +fi +set -eu +set -o pipefail + +# Install required packages +yum -y install nfs-utils diff --git a/elements/centos-nfs/post-install.d/50-manila-nfs-enable b/elements/centos-nfs/post-install.d/50-manila-nfs-enable new file mode 100755 index 0000000..773f201 --- /dev/null +++ b/elements/centos-nfs/post-install.d/50-manila-nfs-enable @@ -0,0 +1,11 @@ +#!/bin/bash + +if [ ${DIB_DEBUG_TRACE:-0} -gt 0 ]; then + set -x +fi +set -eu +set -o pipefail + +# Enable and start NFS server +systemctl enable nfs-server.service +systemctl start nfs-server.service diff --git a/elements/manila-centos-minimal/README.rst b/elements/manila-centos-minimal/README.rst new file mode 100755 index 0000000..cb7f7e0 --- /dev/null +++ b/elements/manila-centos-minimal/README.rst @@ -0,0 +1,5 @@ +===================== +manila-centos-minimal +===================== + +Create a minimal image based on CentOS. diff --git a/elements/manila-centos-minimal/element-deps b/elements/manila-centos-minimal/element-deps new file mode 100755 index 0000000..2d730bd --- /dev/null +++ b/elements/manila-centos-minimal/element-deps @@ -0,0 +1 @@ +centos-minimal diff --git a/elements/manila-centos-minimal/element-provides b/elements/manila-centos-minimal/element-provides new file mode 100755 index 0000000..a72e049 --- /dev/null +++ b/elements/manila-centos-minimal/element-provides @@ -0,0 +1 @@ +operating-system diff --git a/elements/manila-centos-minimal/package-installs.yaml b/elements/manila-centos-minimal/package-installs.yaml new file mode 100755 index 0000000..928348c --- /dev/null +++ b/elements/manila-centos-minimal/package-installs.yaml @@ -0,0 +1,8 @@ +openssh-server: +sudo: +rpcbind: +vim: +iptables: +iputils: +net-tools: +python: diff --git a/elements/manila-centos-minimal/post-install.d/50-manila-user b/elements/manila-centos-minimal/post-install.d/50-manila-user new file mode 100755 index 0000000..ca627ce --- /dev/null +++ b/elements/manila-centos-minimal/post-install.d/50-manila-user @@ -0,0 +1,11 @@ +#!/bin/bash + +if [ ${DIB_DEBUG_TRACE:-0} -gt 0 ]; then + set -x +fi +set -eu +set -o pipefail + +# Set 'bash' as default shell for 'manila' user. +useradd -m manila -s /bin/bash +passwd manila diff --git a/elements/manila-centos-minimal/pre-install.d/00-centos-yum-update b/elements/manila-centos-minimal/pre-install.d/00-centos-yum-update new file mode 100755 index 0000000..61e2d9c --- /dev/null +++ b/elements/manila-centos-minimal/pre-install.d/00-centos-yum-update @@ -0,0 +1,9 @@ +#!/bin/bash + +if [ ${DIB_DEBUG_TRACE:-0} -gt 0 ]; then + set -x +fi +set -eu +set -o pipefail + +yum -y update diff --git a/elements/manila-centos-minimal/pre-install.d/01-set-centos-mirror b/elements/manila-centos-minimal/pre-install.d/01-set-centos-mirror new file mode 100755 index 0000000..8e2007a --- /dev/null +++ b/elements/manila-centos-minimal/pre-install.d/01-set-centos-mirror @@ -0,0 +1,15 @@ +#!/bin/bash + +if [ ${DIB_DEBUG_TRACE:-0} -gt 0 ]; then + set -x +fi +set -eu +set -o pipefail + +DIB_DISTRIBUTION_MIRROR=${DIB_DISTRIBUTION_MIRROR:-} + +[ -n "$DIB_DISTRIBUTION_MIRROR" ] || exit 0 + +# Only set the mirror for the Base, Extras and Updates repositories +# The others arn't enabled and do not exist on all mirrors +sed -e "s|^#baseurl=http://mirror.centos.org/centos|baseurl=$DIB_DISTRIBUTION_MIRROR|;/^mirrorlist=/d" -i /etc/yum.repos.d/CentOS-Base.repo diff --git a/elements/manila-cifs/install.d/50-manila-cifs b/elements/ubuntu-cifs/install.d/50-manila-cifs similarity index 100% rename from elements/manila-cifs/install.d/50-manila-cifs rename to elements/ubuntu-cifs/install.d/50-manila-cifs diff --git a/elements/ubuntu-cifs/post-install.d/50-manila-samba-patch-config b/elements/ubuntu-cifs/post-install.d/50-manila-samba-patch-config new file mode 100755 index 0000000..0b5c55a --- /dev/null +++ b/elements/ubuntu-cifs/post-install.d/50-manila-samba-patch-config @@ -0,0 +1,10 @@ +#!/bin/bash + +if [ ${DIB_DEBUG_TRACE:-0} -gt 0 ]; then + set -x +fi +set -eu +set -o pipefail + +# Enable registry in samba config +sed -i "s/\[global\]/\[global\]\\n\\n include = registry\\n/g" /etc/samba/smb.conf diff --git a/elements/manila-nfs-ganesha/install.d/50-manila-nfs-ganesha b/elements/ubuntu-nfs-ganesha/install.d/50-manila-nfs-ganesha similarity index 100% rename from elements/manila-nfs-ganesha/install.d/50-manila-nfs-ganesha rename to elements/ubuntu-nfs-ganesha/install.d/50-manila-nfs-ganesha diff --git a/elements/manila-nfs-ganesha/package-installs.yaml b/elements/ubuntu-nfs-ganesha/package-installs.yaml similarity index 100% rename from elements/manila-nfs-ganesha/package-installs.yaml rename to elements/ubuntu-nfs-ganesha/package-installs.yaml diff --git a/elements/manila-nfs/install.d/50-manila-nfs b/elements/ubuntu-nfs/install.d/50-manila-nfs similarity index 100% rename from elements/manila-nfs/install.d/50-manila-nfs rename to elements/ubuntu-nfs/install.d/50-manila-nfs diff --git a/elements/manila-nfs/post-install.d/50-manila-nfs-patch-config b/elements/ubuntu-nfs/post-install.d/50-manila-nfs-patch-config similarity index 100% rename from elements/manila-nfs/post-install.d/50-manila-nfs-patch-config rename to elements/ubuntu-nfs/post-install.d/50-manila-nfs-patch-config diff --git a/elements/manila-unfs3/install.d/50-manila-unfs3 b/elements/ubuntu-unfs3/install.d/50-manila-unfs3 similarity index 100% rename from elements/manila-unfs3/install.d/50-manila-unfs3 rename to elements/ubuntu-unfs3/install.d/50-manila-unfs3 diff --git a/elements/manila-unfs3/install.d/unfs3 b/elements/ubuntu-unfs3/install.d/unfs3 similarity index 100% rename from elements/manila-unfs3/install.d/unfs3 rename to elements/ubuntu-unfs3/install.d/unfs3 diff --git a/elements/manila-zfs/post-install.d/50-manila-zfs b/elements/ubuntu-zfs/post-install.d/50-manila-zfs similarity index 100% rename from elements/manila-zfs/post-install.d/50-manila-zfs rename to elements/ubuntu-zfs/post-install.d/50-manila-zfs