Image generation for MapR
Adds image generation and validation for MapR Change-Id: Ib2d3bf2fa43db96437682d7479df1e897b997674
This commit is contained in:
parent
b001ef2a55
commit
14f38d4007
|
@ -0,0 +1,4 @@
|
|||
---
|
||||
features:
|
||||
- Adding ability to create and validate MapR 5.2.0 images using the new image
|
||||
gen tool.
|
|
@ -202,6 +202,7 @@ class SaharaImageValidatorBase(ImageValidator):
|
|||
default_validator_map = {
|
||||
'package': SaharaPackageValidator,
|
||||
'script': SaharaScriptValidator,
|
||||
'copy_script': SaharaCopyScriptValidator,
|
||||
'any': SaharaAnyValidator,
|
||||
'all': SaharaAllValidator,
|
||||
'os_case': SaharaOSCaseValidator,
|
||||
|
@ -689,6 +690,117 @@ class SaharaScriptValidator(SaharaImageValidatorBase):
|
|||
image_arguments[self.output_var] = stdout
|
||||
|
||||
|
||||
class SaharaCopyScriptValidator(SaharaImageValidatorBase):
|
||||
"""A validator that copy a script to the instance."""
|
||||
|
||||
SPEC_SCHEMA = {
|
||||
"title": "SaharaCopyScriptValidator",
|
||||
"oneOf": [
|
||||
{
|
||||
"type": "object",
|
||||
"minProperties": 1,
|
||||
"maxProperties": 1,
|
||||
"additionalProperties": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"output": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"inline": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
}
|
||||
},
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "string"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@classmethod
|
||||
def from_spec(cls, spec, validator_map, resource_roots):
|
||||
"""Builds a copy script validator from a specification.
|
||||
|
||||
:param spec: May be a string or a single-length dictionary of name to
|
||||
configuration values. Configuration values include:
|
||||
env_vars: A list of environment variable names to send to the
|
||||
script.
|
||||
output: A key into which to put the stdout of the script in the
|
||||
image_arguments of the validation run.
|
||||
:param validator_map: A map of validator name to class.
|
||||
:param resource_roots: The roots from which relative paths to
|
||||
resources (scripts and such) will be referenced. Any resource will
|
||||
be pulled from the first path in the list at which a file exists.
|
||||
:return: A validator that will copy a script to the image.
|
||||
"""
|
||||
jsonschema.validate(spec, cls.SPEC_SCHEMA)
|
||||
|
||||
script_contents = None
|
||||
if isinstance(spec, six.string_types):
|
||||
script_path = spec
|
||||
output_var = None
|
||||
else:
|
||||
script_path, properties = list(six.iteritems(spec))[0]
|
||||
output_var = properties.get('output', None)
|
||||
script_contents = properties.get('inline')
|
||||
|
||||
if not script_contents:
|
||||
for root in resource_roots:
|
||||
file_path = path.join(root, script_path)
|
||||
script_contents = files.try_get_file_text(file_path)
|
||||
if script_contents:
|
||||
break
|
||||
script_name = script_path.split('/')[2]
|
||||
|
||||
if not script_contents:
|
||||
raise p_ex.ImageValidationSpecificationError(
|
||||
_("Script %s not found in any resource roots.") % script_path)
|
||||
|
||||
return SaharaCopyScriptValidator(script_contents, script_name,
|
||||
output_var)
|
||||
|
||||
def __init__(self, script_contents, script_name, output_var=None):
|
||||
"""Constructor method.
|
||||
|
||||
:param script_contents: A string representation of the script.
|
||||
:param output_var: A key into which to put the stdout of the script in
|
||||
the image_arguments of the validation run.
|
||||
:return: A SaharaScriptValidator.
|
||||
"""
|
||||
self.script_contents = script_contents
|
||||
self.script_name = script_name
|
||||
self.output_var = output_var
|
||||
|
||||
@transform_exception(ex.RemoteCommandException, p_ex.ImageValidationError)
|
||||
def validate(self, remote, test_only=False,
|
||||
image_arguments=None, **kwargs):
|
||||
"""Attempts to validate by running a script on the image.
|
||||
|
||||
:param remote: A remote socket to the instance.
|
||||
:param test_only: If true, all validators will only verify that a
|
||||
desired state is present, and fail if it is not. If false, all
|
||||
validators will attempt to enforce the desired state if possible,
|
||||
and succeed if this enforcement succeeds.
|
||||
:param image_arguments: A dictionary of image argument values keyed by
|
||||
argument name.
|
||||
Note that the key SIV_TEST_ONLY will be set to 1 if the script
|
||||
should test_only and 0 otherwise; all scripts should act on this
|
||||
input if possible. The key SIV_DISTRO will also contain the
|
||||
distro representation, per `lsb_release -is`.
|
||||
:raises ImageValidationError: If validation fails.
|
||||
"""
|
||||
|
||||
arguments = copy.deepcopy(image_arguments)
|
||||
arguments[self.TEST_ONLY_KEY] = 1 if test_only else 0
|
||||
script = "\n".join(["%(script)s"])
|
||||
script = script % {"script": self.script_contents}
|
||||
path = '/tmp/%s' % self.script_name
|
||||
remote.write_file_to(path, script, run_as_root=True)
|
||||
|
||||
|
||||
@six.add_metaclass(abc.ABCMeta)
|
||||
class SaharaAggregateValidator(SaharaImageValidatorBase):
|
||||
"""An abstract class representing an ordered list of other validators."""
|
||||
|
|
|
@ -22,6 +22,7 @@ import sahara.plugins.mapr.base.base_cluster_validator as bv
|
|||
import sahara.plugins.mapr.base.base_edp_engine as edp
|
||||
import sahara.plugins.mapr.base.base_health_checker as health
|
||||
import sahara.plugins.mapr.base.base_node_manager as bs
|
||||
from sahara.plugins.mapr import images
|
||||
import sahara.plugins.mapr.util.general as util
|
||||
import sahara.plugins.provisioning as p
|
||||
import sahara.plugins.utils as u
|
||||
|
@ -38,6 +39,7 @@ class BaseVersionHandler(vh.AbstractVersionHandler):
|
|||
self._services = []
|
||||
self._node_processes = {}
|
||||
self._configs = []
|
||||
self.images = images
|
||||
|
||||
def get_edp_engine(self, cluster, job_type):
|
||||
if job_type in edp.MapROozieJobEngine.get_supported_job_types():
|
||||
|
@ -177,3 +179,20 @@ class BaseVersionHandler(vh.AbstractVersionHandler):
|
|||
def get_cluster_checks(self, cluster):
|
||||
cluster_context = self.get_context(cluster)
|
||||
return self._health_checker.get_checks(cluster_context)
|
||||
|
||||
def get_image_arguments(self):
|
||||
if hasattr(self, 'images'):
|
||||
return self.images.get_image_arguments()
|
||||
else:
|
||||
return NotImplemented
|
||||
|
||||
def pack_image(self, hadoop_version, remote, test_only=False,
|
||||
image_arguments=None):
|
||||
if hasattr(self, 'images'):
|
||||
self.images.pack_image(
|
||||
remote, test_only=test_only, image_arguments=image_arguments)
|
||||
|
||||
def validate_images(self, cluster, test_only=False, image_arguments=None):
|
||||
if hasattr(self, 'images'):
|
||||
self.images.validate_images(
|
||||
cluster, test_only=test_only, image_arguments=image_arguments)
|
||||
|
|
|
@ -0,0 +1,43 @@
|
|||
# Copyright (c) 2016 Red Hat, Inc.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
# implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
from sahara.plugins import images
|
||||
from sahara.plugins import utils as plugin_utils
|
||||
|
||||
|
||||
_validator = images.SaharaImageValidator.from_yaml(
|
||||
'plugins/mapr/resources/images/image.yaml',
|
||||
resource_roots=['plugins/mapr/resources/images'])
|
||||
|
||||
|
||||
def get_image_arguments():
|
||||
return _validator.get_argument_list()
|
||||
|
||||
|
||||
def pack_image(remote, test_only=False, image_arguments=None):
|
||||
_validator.validate(remote, test_only=test_only,
|
||||
image_arguments=image_arguments)
|
||||
|
||||
|
||||
def validate_images(cluster, test_only=False, image_arguments=None):
|
||||
image_arguments = get_image_arguments()
|
||||
if not test_only:
|
||||
instances = plugin_utils.get_instances(cluster)
|
||||
else:
|
||||
instances = plugin_utils.get_instances(cluster)[0]
|
||||
for instance in instances:
|
||||
with instance.remote() as r:
|
||||
_validator.validate(r, test_only=test_only,
|
||||
image_arguments=image_arguments)
|
|
@ -97,3 +97,16 @@ class MapRPlugin(p.ProvisioningPluginBase):
|
|||
def get_health_checks(self, cluster):
|
||||
v_handler = self._get_handler(cluster.hadoop_version)
|
||||
return v_handler.get_cluster_checks(cluster)
|
||||
|
||||
def get_image_arguments(self, hadoop_version):
|
||||
return self._get_handler(hadoop_version).get_image_arguments()
|
||||
|
||||
def pack_image(self, hadoop_version, remote,
|
||||
test_only=False, image_arguments=None):
|
||||
version = self._get_handler(hadoop_version)
|
||||
version.pack_image(hadoop_version, remote, test_only=test_only,
|
||||
image_arguments=image_arguments)
|
||||
|
||||
def validate_images(self, cluster, test_only=False, image_arguments=None):
|
||||
self._get_handler(cluster.hadoop_version).validate_images(
|
||||
cluster, test_only=test_only, image_arguments=image_arguments)
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
#!/bin/bash
|
||||
|
||||
check=$(systemctl --no-pager list-unit-files iptables.service | grep 'enabled' | wc -l)
|
||||
|
||||
if [ $check -eq 1 ]; then
|
||||
if [ $test_only -eq 0 ]; then
|
||||
if type -p systemctl && [[ "$(systemctl --no-pager list-unit-files firewalld)" =~ 'enabled' ]]; then
|
||||
systemctl disable firewalld
|
||||
fi
|
||||
|
||||
if type -p service; then
|
||||
service ip6tables save
|
||||
service iptables save
|
||||
chkconfig ip6tables off
|
||||
chkconfig iptables off
|
||||
fi
|
||||
else
|
||||
exit 0
|
||||
fi
|
||||
fi
|
|
@ -0,0 +1,27 @@
|
|||
#!/bin/bash
|
||||
|
||||
DISTRO_NAME=$distro
|
||||
source "/tmp/package_utils.sh"
|
||||
|
||||
echo "START: installing MapR core repository"
|
||||
|
||||
MAPR_REPO_URL="http://package.mapr.com/releases/v${plugin_version}/redhat/mapr-v${plugin_version}GA.rpm.tgz"
|
||||
MAPR_REPO_DIR="/opt/mapr-repository/core"
|
||||
|
||||
if [ ! -d "$MAPR_REPO_DIR" ] || [ -z "$(ls -A $MAPR_REPO_DIR)" ]; then
|
||||
if [ $test_only -eq 0 ]; then
|
||||
|
||||
MAPR_REPO_NAME="mapr_core"
|
||||
|
||||
echo "Downloading MapR repository archive"
|
||||
mkdir -p "$MAPR_REPO_DIR" && curl "$MAPR_REPO_URL" | tar -xz -C "$MAPR_REPO_DIR"
|
||||
|
||||
echo "Creating local repository"
|
||||
create_repo "$MAPR_REPO_DIR"
|
||||
|
||||
echo "Adding MapR repository"
|
||||
add_local_repo "$MAPR_REPO_NAME" "$MAPR_REPO_DIR"
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "END: installing MapR core repository"
|
|
@ -0,0 +1,27 @@
|
|||
#!/bin/bash
|
||||
|
||||
|
||||
VERSIONS_PY="/tmp/versions.py"
|
||||
DISTRO_NAME=$distro
|
||||
|
||||
source "/tmp/package_utils.sh"
|
||||
|
||||
echo "START: installing MapR ecosystem repository"
|
||||
|
||||
MAPR_REPO_URL="http://package.mapr.com/releases/MEP/MEP-2.0.0/redhat/"
|
||||
MAPR_REPO_DIR="/opt/mapr-repository/ecosystem"
|
||||
|
||||
if [ ! -d "$MAPR_REPO_DIR" ] || [ -z "$(ls -A $MAPR_REPO_DIR)" ]; then
|
||||
if [ $test_only -eq 0 ]; then
|
||||
|
||||
MAPR_REPO_NAME="mapr_ecosystem"
|
||||
MAPR_PKG_GROUPS="/tmp/packages.json"
|
||||
|
||||
MAPR_SPEC="/tmp/spec_$plugin_version.json"
|
||||
|
||||
echo "Creating local MapR ecosystem repository"
|
||||
localize_repo "$MAPR_REPO_NAME" "$MAPR_REPO_URL" "$MAPR_PKG_GROUPS" "$MAPR_SPEC" "$MAPR_REPO_DIR"
|
||||
echo $MAPR_SPEC
|
||||
fi
|
||||
fi
|
||||
echo "END: installing MapR ecosystem repository"
|
|
@ -0,0 +1,14 @@
|
|||
#!/bin/bash
|
||||
|
||||
echo "Installing OpenJDK"
|
||||
|
||||
if [ $test_only -eq 0 ]; then
|
||||
yum install -y java-1.8.0-openjdk-devel
|
||||
|
||||
JRE_HOME="/usr/lib/jvm/java-openjdk/jre"
|
||||
JDK_HOME="/usr/lib/jvm/java-openjdk"
|
||||
|
||||
echo "OpenJDK has been installed"
|
||||
else
|
||||
exit 0
|
||||
fi
|
|
@ -0,0 +1,34 @@
|
|||
#!/bin/bash
|
||||
|
||||
echo "START: installing Scala"
|
||||
sudo yum -y update
|
||||
exit 0
|
||||
|
||||
if [ $test_only -eq 0 ]; then
|
||||
|
||||
RETURN_CODE="$(curl -s -o /dev/null -w "%{http_code}" http://www.scala-lang.org/)"
|
||||
|
||||
if [ "$RETURN_CODE" != "200" ]; then
|
||||
echo "http://www.scala-lang.org is unreachable" && exit 1
|
||||
fi
|
||||
|
||||
if [ -n "${scala_version:-}" ]; then
|
||||
VERSION=$scala_version
|
||||
else
|
||||
VERSION="$(curl -s --fail http://www.scala-lang.org| tr -d '\n' | sed 's/^.*<div[^<]\+scala-version">[^0-9]\+\([0-9\.\?]\+\)<.\+$/\1/')"
|
||||
|
||||
if [ $? != 0 -o -z "${VERSION}" ]; then
|
||||
echo "Installing default version $scala_version"
|
||||
VERSION=$scala_version
|
||||
fi
|
||||
fi
|
||||
|
||||
PKG=scala-${VERSION}
|
||||
|
||||
URL="http://downloads.lightbend.com/scala/${VERSION}"
|
||||
|
||||
rpm -Uhv ${URL}/${PKG}.rpm
|
||||
fi
|
||||
|
||||
echo "END: installing Scala"
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
#!/bin/bash
|
||||
|
||||
|
||||
if [ $test_only -eq 0 ]; then
|
||||
sed '/^Defaults requiretty*/ s/^/#/' -i /etc/sudoers
|
||||
fi
|
|
@ -0,0 +1,12 @@
|
|||
#!/bin/bash
|
||||
|
||||
check=$(cat /etc/selinux/config | grep "SELINUX=permissive" | wc -l)
|
||||
|
||||
if [ $check -eq 0 ]; then
|
||||
if [ $test_only -eq 0 ]; then
|
||||
echo "SELINUX=permissive" > /etc/selinux/config
|
||||
echo "SELINUXTYPE=targeted" >> /etc/selinux/config
|
||||
else
|
||||
exit 0
|
||||
fi
|
||||
fi
|
|
@ -0,0 +1,5 @@
|
|||
#!/bin/bash
|
||||
|
||||
if [ $test_only -eq 0 ]; then
|
||||
yum clean all && yum repolist
|
||||
fi
|
|
@ -0,0 +1,23 @@
|
|||
#!/bin/bash
|
||||
|
||||
EXTJS_DESTINATION_DIR="/opt/mapr-repository"
|
||||
EXTJS_DOWNLOAD_URL="http://tarballs.openstack.org/sahara/dist/common-artifacts/ext-2.2.zip"
|
||||
EXTJS_NO_UNPACK=1
|
||||
|
||||
extjs_archive=/tmp/$(basename $EXTJS_DOWNLOAD_URL)
|
||||
|
||||
if [ ! -f "${EXTJS_DESTINATION_DIR}/${extjs_archive}" ]; then
|
||||
if [ $test_only -eq 0 ]; then
|
||||
wget -O $extjs_archive $EXTJS_DOWNLOAD_URL
|
||||
|
||||
mkdir -p $EXTJS_DESTINATION_DIR
|
||||
if [ -z "${EXTJS_NO_UNPACK:-}" ]; then
|
||||
unzip -d "$EXTJS_DESTINATION_DIR" $extjs_archive
|
||||
rm -f $extjs_archive
|
||||
else
|
||||
mv $extjs_archive $EXTJS_DESTINATION_DIR
|
||||
fi
|
||||
else
|
||||
exit 0
|
||||
fi
|
||||
fi
|
|
@ -0,0 +1,42 @@
|
|||
#!/bin/bash
|
||||
|
||||
|
||||
# NOTE: $(dirname $0) is read-only, use space under $TARGET_ROOT
|
||||
JAVA_LOCATION=${JAVA_TARGET_LOCATION:-"/usr/java"}
|
||||
JAVA_NAME="oracle-jdk"
|
||||
JAVA_HOME=$JAVA_LOCATION/$JAVA_NAME
|
||||
JAVA_DOWNLOAD_URL=${JAVA_DOWNLOAD_URL:-"http://download.oracle.com/otn-pub/java/jdk/7u51-b13/jdk-7u51-linux-x64.tar.gz"}
|
||||
|
||||
# FIXME: probably not idempotent, find a better condition
|
||||
if [ ! -d $JAVA_LOCATION ]; then
|
||||
if [ $test_only -eq 0 ]; then
|
||||
echo "Begin: installation of Java"
|
||||
mkdir -p $JAVA_LOCATION
|
||||
|
||||
if [ -n "$JAVA_DOWNLOAD_URL" ]; then
|
||||
JAVA_FILE=$(basename $JAVA_DOWNLOAD_URL)
|
||||
wget --no-check-certificate --no-cookies -c \
|
||||
--header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" \
|
||||
-O $JAVA_LOCATION/$JAVA_FILE $JAVA_DOWNLOAD_URL
|
||||
elif [ -n "$JAVA_FILE" ]; then
|
||||
install -D -g root -o root -m 0755 $(dirname $0)/$JAVA_FILE $JAVA_LOCATION
|
||||
fi
|
||||
|
||||
cd $JAVA_LOCATION
|
||||
|
||||
echo "Decompressing Java archive"
|
||||
echo -e "\n" | tar -zxf $JAVA_FILE
|
||||
echo "Setting up $JAVA_NAME"
|
||||
chown -R root:root $JAVA_LOCATION
|
||||
JAVA_DIR=`ls -1 $JAVA_LOCATION | grep -v tar.gz`
|
||||
ln -s $JAVA_LOCATION/$JAVA_DIR $JAVA_HOME
|
||||
|
||||
setup-java-home $JAVA_HOME $JAVA_HOME
|
||||
|
||||
rm $JAVA_FILE
|
||||
|
||||
echo "End: installation of Java"
|
||||
else
|
||||
exit 0
|
||||
fi
|
||||
fi
|
|
@ -0,0 +1,226 @@
|
|||
# execute_in_directory <directory> <command>
|
||||
execute_in_directory() {
|
||||
local directory="$(readlink -f "$1")"; shift
|
||||
local cmd="$*"
|
||||
|
||||
pushd "$directory" && eval "$cmd" && popd
|
||||
}
|
||||
|
||||
# get_distro
|
||||
get_distro() {
|
||||
echo "$DISTRO_NAME"
|
||||
}
|
||||
|
||||
# download_apt_package <package> [version] [directory]
|
||||
download_apt_package() {
|
||||
local package="$1"
|
||||
local version="${2:-}"
|
||||
local directory="${3:-$(pwd)}"
|
||||
local package_spec="$package${version:+=$version*}"
|
||||
|
||||
execute_in_directory "$directory" apt-get --allow-unauthenticated download "$package_spec"
|
||||
}
|
||||
|
||||
# download_yum_package <package> [version] [directory]
|
||||
download_yum_package() {
|
||||
local package="$1"
|
||||
local version="${2:-}"
|
||||
local directory="${3:-$(pwd)}"
|
||||
local package_spec="$package${version:+-$version*}"
|
||||
|
||||
yumdownloader --destdir "$directory" "$package_spec"
|
||||
}
|
||||
|
||||
# download_package <package> [version] [directory] [distro]
|
||||
download_package() {
|
||||
local package="$1"
|
||||
local version="${2:-}"
|
||||
local directory="${3:-$(pwd)}"
|
||||
local distro="${4:-$(get_distro)}"
|
||||
|
||||
if [[ "$distro" == "ubuntu" ]]; then
|
||||
download_apt_package "$package" "$version" "$directory"
|
||||
elif [[ "$distro" == "centos" || "$distro" == "centos7" || "$distro" == "rhel" || "$distro" == "rhel7" ]]; then
|
||||
download_yum_package "$package" "$version" "$directory"
|
||||
fi
|
||||
}
|
||||
|
||||
# get_packages <package_groups_file> <spec_file> [version_separator]
|
||||
get_packages() {
|
||||
local package_groups_file="$1"
|
||||
local spec_file="$2"
|
||||
local version_separator="${3:-:}"
|
||||
|
||||
python "$VERSIONS_PY" --separator "$version_separator" "$package_groups_file" "$spec_file"
|
||||
}
|
||||
|
||||
# download_packages <package_groups_file> <spec_file> [directory] [distro]
|
||||
download_packages() {
|
||||
local package_groups_file="$1"
|
||||
local spec_file="$2"
|
||||
local directory="${3:-$(pwd)}"
|
||||
local distro="${4:-$(get_distro)}"
|
||||
local version_separator=":"
|
||||
|
||||
local packages="$(get_packages "$package_groups_file" "$spec_file" "$version_separator")"
|
||||
for package in $packages; do
|
||||
IFS="$version_separator" read -ra package_version <<< "$package"
|
||||
download_package "${package_version[@]}" "$directory" "$distro"
|
||||
done
|
||||
}
|
||||
|
||||
# create_apt_repo <directory>
|
||||
create_apt_repo() {
|
||||
local directory="$(readlink -f "$1")"
|
||||
local binary_dir="$directory/binary"
|
||||
local packages_gz="$binary_dir/Packages.gz"
|
||||
|
||||
mkdir -p "$binary_dir"
|
||||
execute_in_directory "$directory" "dpkg-scanpackages -m . /dev/null | gzip -9c > $packages_gz"
|
||||
}
|
||||
|
||||
# create_yum_repo <directory>
|
||||
create_yum_repo() {
|
||||
local directory="$(readlink -f "$1")"
|
||||
|
||||
createrepo "$directory"
|
||||
}
|
||||
|
||||
# create_repo <directory> [distro]
|
||||
create_repo() {
|
||||
local directory="$(readlink -f "$1")"
|
||||
local distro="${2:-$(get_distro)}"
|
||||
|
||||
if [[ "$distro" == "ubuntu" ]]; then
|
||||
create_apt_repo "$directory"
|
||||
elif [[ "$distro" == "centos" || "$distro" == "centos7" || "$distro" == "rhel" || "$distro" == "rhel7" ]]; then
|
||||
create_yum_repo "$directory"
|
||||
fi
|
||||
}
|
||||
|
||||
# add_apt_repo <repo_name> <repo_url>
|
||||
add_apt_repo() {
|
||||
local repo_name="$1"
|
||||
local repo_url="$2"
|
||||
local repo="deb $repo_url"
|
||||
local repo_path="/etc/apt/sources.list.d/$repo_name.list"
|
||||
|
||||
echo "$repo" > "$repo_path" && apt-get update
|
||||
}
|
||||
|
||||
# add_yum_repo <repo_name> <repo_url>
|
||||
add_yum_repo() {
|
||||
local repo_name="$1"
|
||||
local repo_url="$2"
|
||||
local repo_path="/etc/yum.repos.d/$repo_name.repo"
|
||||
|
||||
cat > "$repo_path" << EOF
|
||||
[$repo_name]
|
||||
name=$repo_name
|
||||
baseurl=$repo_url
|
||||
enabled=1
|
||||
gpgcheck=0
|
||||
protect=1
|
||||
EOF
|
||||
yum clean all && rm -rf /var/cache/yum/* && yum check-update
|
||||
}
|
||||
|
||||
# add_repo <repo_name> <repo_url> [distro]
|
||||
add_repo() {
|
||||
local repo_name="$1"
|
||||
local repo_url="$2"
|
||||
local distro="${3:-$(get_distro)}"
|
||||
|
||||
if [[ "$distro" == "ubuntu" ]]; then
|
||||
add_apt_repo "$repo_name" "$repo_url"
|
||||
elif [[ "$distro" == "centos" || "$distro" == "centos7" || "$distro" == "rhel" || "$distro" == "rhel7" ]]; then
|
||||
add_yum_repo "$repo_name" "$repo_url"
|
||||
fi
|
||||
}
|
||||
|
||||
# add_local_apt_repo <repo_name> <directory>
|
||||
add_local_apt_repo() {
|
||||
local repo_name="$1"
|
||||
local directory="$(readlink -f "$2")"
|
||||
local repo_url="file:$directory binary/"
|
||||
|
||||
add_apt_repo "$repo_name" "$repo_url"
|
||||
}
|
||||
|
||||
# add_local_yum_repo <repo_name> <directory>
|
||||
add_local_yum_repo() {
|
||||
local repo_name="$1"
|
||||
local directory="$(readlink -f "$2")"
|
||||
local repo_url="file://$directory"
|
||||
|
||||
add_yum_repo "$repo_name" "$repo_url"
|
||||
}
|
||||
|
||||
# add_local_repo <repo_name> <directory> [distro]
|
||||
add_local_repo() {
|
||||
local repo_name="$1"
|
||||
local directory="$(readlink -f "$2")"
|
||||
local distro="${3:-$(get_distro)}"
|
||||
|
||||
if [[ "$distro" == "ubuntu" ]]; then
|
||||
add_local_apt_repo "$repo_name" "$directory"
|
||||
elif [[ "$distro" == "centos" || "$distro" == "centos7" || "$distro" == "rhel" || "$distro" == "rhel7" ]]; then
|
||||
add_local_yum_repo "$repo_name" "$directory"
|
||||
fi
|
||||
}
|
||||
|
||||
# remove_apt_repo <repo_name>
|
||||
remove_apt_repo() {
|
||||
local repo_name="$1"
|
||||
local repo_path="/etc/apt/sources.list.d/$repo_name.list"
|
||||
|
||||
rm "$repo_path" && apt-get update
|
||||
}
|
||||
|
||||
# remove_yum_repo <repo_name>
|
||||
remove_yum_repo() {
|
||||
local repo_name="$1"
|
||||
local repo_path="/etc/yum.repos.d/$repo_name.repo"
|
||||
|
||||
rm "$repo_path"
|
||||
}
|
||||
|
||||
# remove_repo <repo_name> [distro]
|
||||
remove_repo() {
|
||||
local repo_name="$1"
|
||||
local distro="${2:-$(get_distro)}"
|
||||
|
||||
if [[ "$distro" == "ubuntu" ]]; then
|
||||
remove_apt_repo "$repo_name"
|
||||
elif [[ "$distro" == "centos" || "$distro" == "centos7" || "$distro" == "rhel" || "$distro" == "rhel7" ]]; then
|
||||
remove_yum_repo "$repo_name"
|
||||
fi
|
||||
}
|
||||
|
||||
# create_local_repo <repo_name> <repo_url> <package_groups_file> <spec_file> <directory>
|
||||
create_local_repo() {
|
||||
local repo_name="$1"
|
||||
local repo_url="$2"
|
||||
local package_groups_file="$3"
|
||||
local spec_file="$4"
|
||||
local directory="$5"
|
||||
|
||||
add_repo "$repo_name" "$repo_url"
|
||||
mkdir -p "$directory" && directory="$(readlink -f "$directory")"
|
||||
download_packages "$package_groups_file" "$spec_file" "$directory"
|
||||
remove_repo "$repo_name"
|
||||
create_repo "$directory"
|
||||
}
|
||||
|
||||
# localize_repo <repo_name> <repo_url> <package_groups_file> <spec_file> <directory>
|
||||
localize_repo() {
|
||||
local repo_name="$1"
|
||||
local repo_url="$2"
|
||||
local package_groups_file="$3"
|
||||
local spec_file="$4"
|
||||
local directory="$5"
|
||||
|
||||
mkdir -p "$directory" && directory="$(readlink -f "$directory")"
|
||||
create_local_repo "$repo_name" "$repo_url" "$package_groups_file" "$spec_file" "$directory"
|
||||
add_local_repo "$repo_name" "$directory"
|
||||
}
|
|
@ -0,0 +1,140 @@
|
|||
{
|
||||
"asynchbase": {
|
||||
"all": [
|
||||
"mapr-asynchbase"
|
||||
]
|
||||
},
|
||||
"drill": {
|
||||
"all": [
|
||||
"mapr-drill"
|
||||
]
|
||||
},
|
||||
"flume": {
|
||||
"all": [
|
||||
"mapr-flume"
|
||||
]
|
||||
},
|
||||
"hbase": {
|
||||
"all": [
|
||||
"mapr-hbase",
|
||||
"mapr-hbase-internal",
|
||||
"mapr-hbase-master",
|
||||
"mapr-hbase-regionserver",
|
||||
"mapr-hbasethrift",
|
||||
"mapr-hbase-rest"
|
||||
],
|
||||
"0.98.12": [
|
||||
"mapr-hbase",
|
||||
"mapr-hbase-internal",
|
||||
"mapr-hbase-master",
|
||||
"mapr-hbase-regionserver",
|
||||
"mapr-hbasethrift",
|
||||
"mapr-libhbase",
|
||||
"mapr-hbase-rest"
|
||||
],
|
||||
"1.1.1": [
|
||||
"mapr-hbase",
|
||||
"mapr-hbase-internal",
|
||||
"mapr-hbase-master",
|
||||
"mapr-hbase-regionserver",
|
||||
"mapr-hbasethrift",
|
||||
"mapr-libhbase",
|
||||
"mapr-hbase-rest"
|
||||
]
|
||||
},
|
||||
"hive": {
|
||||
"all": [
|
||||
"mapr-hive",
|
||||
"mapr-hivemetastore",
|
||||
"mapr-hiveserver2"
|
||||
]
|
||||
},
|
||||
"httpfs": {
|
||||
"all": [
|
||||
"mapr-httpfs"
|
||||
]
|
||||
},
|
||||
"hue": {
|
||||
"all": [
|
||||
"mapr-hue",
|
||||
"mapr-hue-base",
|
||||
"mapr-hue-livy"
|
||||
],
|
||||
"3.10.0": [
|
||||
"mapr-hue",
|
||||
"mapr-hue-livy"
|
||||
]
|
||||
},
|
||||
"impala": {
|
||||
"all": [
|
||||
"mapr-impala",
|
||||
"mapr-impala-catalog",
|
||||
"mapr-impala-server",
|
||||
"mapr-impala-statestore",
|
||||
"mapr-impala-udf"
|
||||
]
|
||||
},
|
||||
"mahout": {
|
||||
"all": [
|
||||
"mapr-mahout"
|
||||
]
|
||||
},
|
||||
"oozie": {
|
||||
"all": [
|
||||
"mapr-oozie",
|
||||
"mapr-oozie-internal"
|
||||
]
|
||||
},
|
||||
"pig": {
|
||||
"all": [
|
||||
"mapr-pig"
|
||||
]
|
||||
},
|
||||
"sentry": {
|
||||
"all": [
|
||||
"mapr-sentry"
|
||||
]
|
||||
},
|
||||
"spark": {
|
||||
"all": [
|
||||
"mapr-spark",
|
||||
"mapr-spark-historyserver",
|
||||
"mapr-spark-master"
|
||||
]
|
||||
},
|
||||
"sqoop": {
|
||||
"all": [
|
||||
"mapr-sqoop2-client",
|
||||
"mapr-sqoop2-server"
|
||||
]
|
||||
},
|
||||
"storm": {
|
||||
"all": [
|
||||
"mapr-storm",
|
||||
"mapr-storm-ui",
|
||||
"mapr-storm-nimbus",
|
||||
"mapr-storm-supervisor"
|
||||
]
|
||||
},
|
||||
"tez": {
|
||||
"all": [
|
||||
"mapr-tez"
|
||||
]
|
||||
},
|
||||
"kafka": {
|
||||
"all": [
|
||||
"mapr-kafka"
|
||||
]
|
||||
},
|
||||
"kafka-connect": {
|
||||
"all": [
|
||||
"mapr-kafka-connect-hdfs",
|
||||
"mapr-kafka-connect-jdbc"
|
||||
]
|
||||
},
|
||||
"kafka-rest": {
|
||||
"all": [
|
||||
"mapr-kafka-rest"
|
||||
]
|
||||
}
|
||||
}
|
|
@ -0,0 +1,46 @@
|
|||
{
|
||||
"drill": [
|
||||
"1.1.0",
|
||||
"1.2.0",
|
||||
"1.4.0"
|
||||
],
|
||||
"flume": [
|
||||
"1.5.0",
|
||||
"1.6.0"
|
||||
],
|
||||
"hbase": [
|
||||
"0.98.9",
|
||||
"0.98.12"
|
||||
],
|
||||
"hive": [
|
||||
"0.13",
|
||||
"1.0",
|
||||
"1.2"
|
||||
],
|
||||
"httpfs": [
|
||||
"1.0"
|
||||
],
|
||||
"hue": [
|
||||
"3.8.1",
|
||||
"3.9.0"
|
||||
],
|
||||
"impala": [
|
||||
"1.4.1"
|
||||
],
|
||||
"mahout": [
|
||||
"0.10.0"
|
||||
],
|
||||
"oozie": [
|
||||
"4.2.0"
|
||||
],
|
||||
"pig": [
|
||||
"0.14",
|
||||
"0.15"
|
||||
],
|
||||
"sqoop": [
|
||||
"2.0.0"
|
||||
],
|
||||
"spark": [
|
||||
"1.5.2"
|
||||
]
|
||||
}
|
|
@ -0,0 +1,50 @@
|
|||
{
|
||||
"drill": [
|
||||
"1.9.0"
|
||||
],
|
||||
"flume": [
|
||||
"1.6.0"
|
||||
],
|
||||
"hbase": [
|
||||
"1.1.1"
|
||||
],
|
||||
"hive": [
|
||||
"1.2"
|
||||
],
|
||||
"httpfs": [
|
||||
"1.0"
|
||||
],
|
||||
"hue": [
|
||||
"3.10.0"
|
||||
],
|
||||
"impala": [
|
||||
"2.5.0"
|
||||
],
|
||||
"mahout": [
|
||||
"0.12.0"
|
||||
],
|
||||
"oozie": [
|
||||
"4.2.0"
|
||||
],
|
||||
"pig": [
|
||||
"0.16"
|
||||
],
|
||||
"sqoop": [
|
||||
"2.0.0"
|
||||
],
|
||||
"spark": [
|
||||
"2.0.1"
|
||||
],
|
||||
"sentry": [
|
||||
"1.6.0"
|
||||
],
|
||||
"kafka": [
|
||||
"0.9.0"
|
||||
],
|
||||
"kafka-connect": [
|
||||
"2.0.1"
|
||||
],
|
||||
"kafka-rest": [
|
||||
"2.0.1"
|
||||
]
|
||||
}
|
|
@ -0,0 +1,47 @@
|
|||
{
|
||||
"drill": [
|
||||
"1.9.0"
|
||||
],
|
||||
"flume": [
|
||||
"1.6.0"
|
||||
],
|
||||
"hbase": [
|
||||
"1.1.1"
|
||||
],
|
||||
"hive": [
|
||||
"1.2"
|
||||
],
|
||||
"httpfs": [
|
||||
"1.0"
|
||||
],
|
||||
"hue": [
|
||||
"3.10.0"
|
||||
],
|
||||
"mahout": [
|
||||
"0.12.0"
|
||||
],
|
||||
"oozie": [
|
||||
"4.2.0"
|
||||
],
|
||||
"pig": [
|
||||
"0.16"
|
||||
],
|
||||
"sqoop": [
|
||||
"2.0.0"
|
||||
],
|
||||
"spark": [
|
||||
"2.0.1"
|
||||
],
|
||||
"sentry": [
|
||||
"1.6.0"
|
||||
],
|
||||
"kafka": [
|
||||
"0.9.0"
|
||||
],
|
||||
"kafka-connect": [
|
||||
"2.0.1"
|
||||
],
|
||||
"kafka-rest": [
|
||||
"2.0.1"
|
||||
]
|
||||
}
|
|
@ -0,0 +1,83 @@
|
|||
# Copyright (c) 2015, MapR Technologies
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
|
||||
import argparse
|
||||
import sys
|
||||
|
||||
from oslo_serialization import jsonutils as json
|
||||
|
||||
_GROUP_VERSION_SEPARATOR = ","
|
||||
_ALL_GROUP_VERSION = "all"
|
||||
|
||||
|
||||
def _build_parser():
|
||||
parser = argparse.ArgumentParser()
|
||||
|
||||
parser.add_argument("packages", help="path to the packages.json")
|
||||
parser.add_argument("spec", help="path to the spec.json")
|
||||
parser.add_argument("--separator", default=":",
|
||||
help="separator between package name"
|
||||
" and version in output")
|
||||
|
||||
return parser
|
||||
|
||||
|
||||
def _load_json(path):
|
||||
with open(path) as json_file:
|
||||
return json.load(json_file)
|
||||
|
||||
|
||||
def _version_matches(version, group_version):
|
||||
for gv in group_version.split(_GROUP_VERSION_SEPARATOR):
|
||||
if version.startswith(gv):
|
||||
return True
|
||||
|
||||
return False
|
||||
|
||||
|
||||
def _get_packages(version, group_spec):
|
||||
for group_version in group_spec:
|
||||
if _version_matches(version, group_version):
|
||||
return group_spec[group_version]
|
||||
|
||||
return group_spec[_ALL_GROUP_VERSION]
|
||||
|
||||
|
||||
def _get_package_versions(spec, package_groups):
|
||||
return [(package, version)
|
||||
for pg_name, versions in spec.items()
|
||||
for version in versions
|
||||
for package in _get_packages(version, package_groups[pg_name])]
|
||||
|
||||
|
||||
parser = _build_parser()
|
||||
|
||||
|
||||
def main(args=None):
|
||||
args = parser.parse_args(args or sys.argv[1:])
|
||||
|
||||
spec = _load_json(args.spec)
|
||||
package_groups = _load_json(args.packages)
|
||||
separator = args.separator
|
||||
|
||||
package_versions = _get_package_versions(spec, package_groups)
|
||||
package_format = "%s" + separator + "%s\n"
|
||||
package_versions = map(lambda pv: package_format % pv, package_versions)
|
||||
|
||||
sys.stdout.writelines(package_versions)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
|
@ -0,0 +1,195 @@
|
|||
arguments:
|
||||
java_distro:
|
||||
default: openjdk
|
||||
description: The distribution of Java to install. Defaults to cloudera-jdk.
|
||||
choices:
|
||||
- openjdk
|
||||
- oracle-java
|
||||
plugin_version:
|
||||
default: 5.2.0
|
||||
description: The distribution of MapR to install. Defaults to 5.2.0.
|
||||
hidden: True
|
||||
required: False
|
||||
scala_version:
|
||||
default: 2.11.6
|
||||
description: The version of scala to install. Defaults to 2.11.6.
|
||||
hidden: True
|
||||
required: False
|
||||
hdfs_lib_dir:
|
||||
default: /usr/lib/hadoop-mapreduce
|
||||
description: The path to HDFS_LIB_DIR. Default to /usr/lib/hadoop-mapreduce
|
||||
required: False
|
||||
|
||||
validators:
|
||||
- os_case:
|
||||
- ubuntu:
|
||||
- script: ubuntu/install_mapr_dependencies
|
||||
- package:
|
||||
- mtools
|
||||
- rpcbind
|
||||
- sdparm
|
||||
- syslinux
|
||||
- unzip
|
||||
- wget
|
||||
- zip
|
||||
- os_case:
|
||||
- centos:
|
||||
- package:
|
||||
- cups
|
||||
- cdparanoia-libs
|
||||
- cups-libs
|
||||
- createrepo
|
||||
- cvs
|
||||
- cyrus-sasl-gssapi
|
||||
- cyrus-sasl-plain
|
||||
- foomatic
|
||||
- foomatic-db
|
||||
- foomatic-db-filesystem
|
||||
- foomatic-db-ppds
|
||||
- gdbm-devel
|
||||
- gettext
|
||||
- ghostscript
|
||||
- ghostscript-fonts
|
||||
- glibc
|
||||
- glibc-common
|
||||
- glibc-devel
|
||||
- glibc-headers
|
||||
- gstreamer
|
||||
- gstreamer-plugins-base
|
||||
- gstreamer-tools
|
||||
- hdparm
|
||||
- irqbalance
|
||||
- iso-codes
|
||||
- kernel-headers
|
||||
- libXt
|
||||
- libXv
|
||||
- libXxf86vm
|
||||
- libgomp
|
||||
- libgudev1
|
||||
- libicu
|
||||
- libmng
|
||||
- liboil
|
||||
- libtheora
|
||||
- libtirpc
|
||||
- libvisual
|
||||
- libxslt
|
||||
- mesa-dri-drivers
|
||||
- mesa-libGL
|
||||
- mesa-libGLU
|
||||
- mesa-private-llvm
|
||||
- nmap-ncat
|
||||
- numactl
|
||||
- openjpeg-libs
|
||||
- patch
|
||||
- pax
|
||||
- perl-CGI
|
||||
- perl-ExtUtils-MakeMaker
|
||||
- perl-ExtUtils-ParseXS
|
||||
- perl-Test-Harness
|
||||
- perl-Test-Simple
|
||||
- perl-devel
|
||||
- phonon-backend-gstreamer
|
||||
- poppler
|
||||
- poppler-data
|
||||
- poppler-utils
|
||||
- portreserve
|
||||
- qt
|
||||
- qt-x11
|
||||
- qt3
|
||||
- redhat-lsb
|
||||
- redhat-lsb-core
|
||||
- redhat-lsb-printing
|
||||
- urw-fonts
|
||||
- yum-utils
|
||||
- xml-common
|
||||
- ubuntu:
|
||||
- package:
|
||||
- binutils
|
||||
- daemon
|
||||
- dpkg-dev
|
||||
- dpkg-repack
|
||||
- gcc
|
||||
- gcc-4.8
|
||||
- gcc-doc
|
||||
- gcc-multilib
|
||||
- iputils-arping
|
||||
- libasan0
|
||||
- libatomic1
|
||||
- libc-dev-bin
|
||||
- libc6
|
||||
- libc6-dev
|
||||
- libcrypt-passwdmd5-perl
|
||||
- libgcc-4.8-dev
|
||||
- libgomp1
|
||||
- libgssglue1
|
||||
- libicu48
|
||||
- libitm1
|
||||
- libmysqlclient-dev
|
||||
- libmysqlclient16
|
||||
- libmysqlclient18
|
||||
- libnfsidmap2
|
||||
- libquadmath0
|
||||
- libsasl2-dev
|
||||
- libsasl2-modules-gssapi-mit
|
||||
- libssl0.9.8
|
||||
- libtirpc1
|
||||
- libtsan0
|
||||
- libxslt1.1
|
||||
- linux-libc-dev
|
||||
- manpages-dev
|
||||
- mysql-common
|
||||
- nfs-common
|
||||
- open-iscsi
|
||||
- openjdk-7-jre
|
||||
- syslinux-common
|
||||
- zlib1g-dev
|
||||
- script: common/configure_extjs
|
||||
- os_case:
|
||||
- centos:
|
||||
- copy_script: common/resources/package_utils.sh
|
||||
- copy_script: common/resources/packages.json
|
||||
- copy_script: common/resources/spec_5.1.0.json
|
||||
- copy_script: common/resources/spec_5.2.0.json
|
||||
- copy_script: common/resources/versions.py
|
||||
- script:
|
||||
centos/install_scala:
|
||||
env_vars: [scala_version]
|
||||
- script:
|
||||
centos/install_mapr_core_repository:
|
||||
env_vars: [plugin_version]
|
||||
- script:
|
||||
centos/install_mapr_eco_repository:
|
||||
env_vars: [plugin_version]
|
||||
- script: centos/selinux_permissive
|
||||
- argument_case:
|
||||
argument_name: java_distro
|
||||
cases:
|
||||
openjdk:
|
||||
- script: centos/install_openjdk
|
||||
oracle-java:
|
||||
- script: common/oracle_java
|
||||
- ubuntu:
|
||||
- copy_script: common/resources/package_utils.sh
|
||||
- copy_script: common/resources/packages.json
|
||||
- copy_script: common/resources/spec_5.1.0.json
|
||||
- copy_script: common/resources/spec_5.2.0.json
|
||||
- copy_script: common/resources/spec_5.2.0_ubuntu.json
|
||||
- copy_script: common/resources/versions.py
|
||||
- script:
|
||||
ubuntu/install_scala:
|
||||
env_vars: [scala_version]
|
||||
- script:
|
||||
ubuntu/install_mapr_core_repository:
|
||||
env_vars: [plugin_version]
|
||||
- script:
|
||||
ubuntu/install_mapr_eco_repository:
|
||||
env_vars: [plugin_version]
|
||||
- os_case:
|
||||
- ubuntu:
|
||||
- argument_case:
|
||||
argument_name: java_distro
|
||||
cases:
|
||||
openjdk:
|
||||
- script: ubuntu/install_openjdk
|
||||
oracle-java:
|
||||
- script: common/oracle_java
|
|
@ -0,0 +1,27 @@
|
|||
#!/bin/bash
|
||||
|
||||
DISTRO_NAME=$distro
|
||||
source "/tmp/package_utils.sh"
|
||||
|
||||
echo "START: installing MapR core repository"
|
||||
|
||||
MAPR_REPO_URL="http://package.mapr.com/releases/v${plugin_version}/ubuntu/mapr-v${plugin_version}GA.deb.tgz"
|
||||
MAPR_REPO_DIR="/opt/mapr-repository/core"
|
||||
|
||||
if [ ! -d "$MAPR_REPO_DIR" ] || [ -z "$(ls -A $MAPR_REPO_DIR)" ]; then
|
||||
if [ $test_only -eq 0 ]; then
|
||||
|
||||
MAPR_REPO_NAME="mapr_core"
|
||||
|
||||
echo "Downloading MapR repository archive"
|
||||
mkdir -p "$MAPR_REPO_DIR" && curl "$MAPR_REPO_URL" | tar -xz -C "$MAPR_REPO_DIR"
|
||||
|
||||
echo "Creating local repository"
|
||||
create_repo "$MAPR_REPO_DIR"
|
||||
|
||||
echo "Adding MapR repository"
|
||||
add_local_repo "$MAPR_REPO_NAME" "$MAPR_REPO_DIR"
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "END: installing MapR core repository"
|
|
@ -0,0 +1,22 @@
|
|||
#!/bin/bash
|
||||
|
||||
echo "START: installing MapR core dependencies"
|
||||
|
||||
if [ ! -f /etc/apt/sources.list.d/security_repo.list ]; then
|
||||
if [ $test_only -eq 0 ]; then
|
||||
# Required for libicu48
|
||||
cat >> /etc/apt/sources.list.d/security_repo.list << EOF
|
||||
deb http://security.ubuntu.com/ubuntu precise-security main
|
||||
EOF
|
||||
# Required for libmysqlclient16
|
||||
cat >> /etc/apt/sources.list.d/security_repo.list << EOF
|
||||
deb http://old-releases.ubuntu.com/ubuntu lucid-security main
|
||||
EOF
|
||||
else
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
apt-get update
|
||||
|
||||
echo "END: installing MapR core dependencies"
|
|
@ -0,0 +1,32 @@
|
|||
#!/bin/bash
|
||||
|
||||
|
||||
VERSIONS_PY="/tmp/versions.py"
|
||||
DISTRO_NAME=$distro
|
||||
|
||||
source "/tmp/package_utils.sh"
|
||||
|
||||
echo "START: installing MapR ecosystem repository"
|
||||
|
||||
MAPR_REPO_URL="http://package.mapr.com/releases/MEP/MEP-2.0.0/ubuntu/ binary trusty"
|
||||
MAPR_REPO_DIR="/opt/mapr-repository/ecosystem"
|
||||
|
||||
if [ ! -d "$MAPR_REPO_DIR" ] || [ -z "$(ls -A $MAPR_REPO_DIR)" ]; then
|
||||
if [ $test_only -eq 0 ]; then
|
||||
|
||||
MAPR_REPO_NAME="mapr_ecosystem"
|
||||
MAPR_PKG_GROUPS="/tmp/packages.json"
|
||||
|
||||
if [ -f /tmp/spec_$plugin_version_ubuntu.json ]; then
|
||||
MAPR_SPEC="/tmp/spec_$plugin_version_ubuntu.json"
|
||||
else
|
||||
MAPR_SPEC="/tmp/spec_$plugin_version.json"
|
||||
fi
|
||||
|
||||
echo "Creating local MapR ecosystem repository"
|
||||
localize_repo "$MAPR_REPO_NAME" "$MAPR_REPO_URL" "$MAPR_PKG_GROUPS" "$MAPR_SPEC" "$MAPR_REPO_DIR"
|
||||
echo $MAPR_SPEC
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "END: installing MapR ecosystem repository"
|
|
@ -0,0 +1,16 @@
|
|||
#!/bin/bash
|
||||
|
||||
echo "Installing OpenJDK"
|
||||
|
||||
if [ $test_only -eq 0 ]; then
|
||||
apt-get install -y openjdk-7-jdk
|
||||
|
||||
JRE_PATH=$(update-alternatives --list java)
|
||||
JRE_HOME=${JRE_PATH%/bin/java}
|
||||
JDK_PATH=$(update-alternatives --list javac)
|
||||
JDK_HOME=${JDK_PATH%/bin/javac}
|
||||
|
||||
echo "OpenJDK has been installed"
|
||||
else
|
||||
exit 0
|
||||
fi
|
|
@ -0,0 +1,35 @@
|
|||
#!/bin/bash
|
||||
|
||||
echo "START: installing Scala"
|
||||
|
||||
|
||||
if [ $test_only -eq 0 ]; then
|
||||
|
||||
RETURN_CODE="$(curl -s -o /dev/null -w "%{http_code}" http://www.scala-lang.org/)"
|
||||
|
||||
if [ "$RETURN_CODE" != "200" ]; then
|
||||
echo "http://www.scala-lang.org is unreachable" && exit 1
|
||||
fi
|
||||
|
||||
if [ -n "${scala_version:-}" ]; then
|
||||
VERSION=$scala_version
|
||||
else
|
||||
VERSION="$(curl -s --fail http://www.scala-lang.org| tr -d '\n' | sed 's/^.*<div[^<]\+scala-version">[^0-9]\+\([0-9\.\?]\+\)<.\+$/\1/')"
|
||||
|
||||
if [ $? != 0 -o -z "${VERSION}" ]; then
|
||||
echo "Installing default version $scala_version"
|
||||
VERSION=$scala_version
|
||||
fi
|
||||
fi
|
||||
|
||||
PKG=scala-${VERSION}
|
||||
|
||||
URL="http://downloads.lightbend.com/scala/${VERSION}"
|
||||
|
||||
wget -N ${URL}/${PKG}.deb
|
||||
dpkg -i ${PKG}.deb
|
||||
rm ${PKG}.deb
|
||||
fi
|
||||
|
||||
echo "END: installing Scala"
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
#!/bin/bash
|
||||
|
||||
if [ $test_only -eq 0 ]; then
|
||||
apt-get update
|
||||
fi
|
|
@ -72,6 +72,9 @@ case "$PLUGIN" in
|
|||
"ambari")
|
||||
build_images "ambari" "2.4" "centos7"
|
||||
;;
|
||||
"mapr")
|
||||
build_images "mapr" "5.2.0.mrv2" "centos7"
|
||||
;;
|
||||
*)
|
||||
echo "Invalid version"
|
||||
;;
|
||||
|
|
Loading…
Reference in New Issue