From c21cba3d7b33d2d268685ae855986f1187670496 Mon Sep 17 00:00:00 2001 From: Matthew Farrellee Date: Thu, 11 Jul 2013 17:46:26 -0400 Subject: [PATCH] Merge first-boot, setup-hadoop and setup-ssh with distro switching based on lsb_release Implements: blueprint merge-dib-hadoop-elements Change-Id: I5090a556471414cfd663fa07a0efec2ff94c3581 --- elements/hadoop_fedora/first-boot.d/99-setup | 38 ++++++----- .../hadoop_fedora/install.d/30-setup-hadoop | 67 ++++++++++++++----- elements/hadoop_fedora/install.d/40-setup-ssh | 1 + 3 files changed, 74 insertions(+), 32 deletions(-) diff --git a/elements/hadoop_fedora/first-boot.d/99-setup b/elements/hadoop_fedora/first-boot.d/99-setup index bd4e732..27a7ed2 100755 --- a/elements/hadoop_fedora/first-boot.d/99-setup +++ b/elements/hadoop_fedora/first-boot.d/99-setup @@ -5,18 +5,26 @@ chown root:root /mnt mkdir -p /var/run/hadoop ; chown hadoop:hadoop /var/run/hadoop mkdir -p /mnt/log/hadoop ; chown hadoop:hadoop /mnt/log/hadoop -# Unique to Ubuntu -#mkdir /run/hadoop -#chown hadoop:hadoop /run/hadoop/ -#mkdir -p /home/ubuntu/.ssh -#touch /home/ubuntu/.ssh/authorized_keys -#chown -R ubuntu:ubuntu /home/ubuntu - -# Unique to Fedora -sleep 10 -rm /etc/resolv.conf -service network restart -chown -R ec2-user:ec2-user /home/ec2-user -chown -R ec2-user:ec2-user /etc/hadoop -#TODO: configure iptables (https://bugs.launchpad.net/savanna/+bug/1195744) -iptables -F +distro=$(lsb_release -is || :) +case "$distro" in + Ubuntu ) + mkdir /run/hadoop + chown hadoop:hadoop /run/hadoop/ + mkdir -p /home/ubuntu/.ssh + touch /home/ubuntu/.ssh/authorized_keys + chown -R ubuntu:ubuntu /home/ubuntu + ;; + Fedora ) + sleep 10 + rm /etc/resolv.conf + service network restart + chown -R ec2-user:ec2-user /home/ec2-user + chown -R ec2-user:ec2-user /etc/hadoop + #TODO: configure iptables (https://bugs.launchpad.net/savanna/+bug/1195744) + iptables -F + ;; + * ) + echo "Unknown distro: $distro. Exiting." + exit 1 + ;; +esac diff --git a/elements/hadoop_fedora/install.d/30-setup-hadoop b/elements/hadoop_fedora/install.d/30-setup-hadoop index b0f80d1..81654f3 100755 --- a/elements/hadoop_fedora/install.d/30-setup-hadoop +++ b/elements/hadoop_fedora/install.d/30-setup-hadoop @@ -1,32 +1,65 @@ #!/bin/bash -echo "Hadoop setup begins" + +distro=$(lsb_release -is || :) +if [ ! "$distro" == "Fedora" -a ! "$distro" == "Ubuntu" ]; then + echo "Unknown distro: $distro. Exiting." + exit 1 +fi + +echo "Hadoop setup begins for $distro" tmp_dir=/tmp/hadoop -install-packages wget echo "Creating hadoop user & group" -adduser -G adm,wheel hadoop +case "$distro" in + Ubuntu ) + addgroup hadoop + adduser --ingroup hadoop --disabled-password --gecos GECOS hadoop + adduser hadoop sudo + ;; + Fedora ) + adduser -G adm,wheel hadoop + ;; +esac echo "Hadoop version $DIB_HADOOP_VERSION will be injected into image. Starting the download" -wget -P $tmp_dir/ "http://archive.apache.org/dist/hadoop/core/hadoop-"$DIB_HADOOP_VERSION"/hadoop-"$DIB_HADOOP_VERSION"-1.x86_64.rpm" +case "$distro" in + Ubuntu ) + package="hadoop_$DIB_HADOOP_VERSION-1_x86_64.deb" + ;; + Fedora ) + package="hadoop-$DIB_HADOOP_VERSION-1.x86_64.rpm" + ;; +esac + +install-packages wget +wget -P $tmp_dir "http://archive.apache.org/dist/hadoop/core/hadoop-$DIB_HADOOP_VERSION/$package" if [ $? -ne 0 ]; then echo -e "Could not find Hadoop version $DIB_HADOOP_VERSION.\nAborting" exit 1 fi -rpm -ivh --replacefiles $tmp_dir/hadoop-"$DIB_HADOOP_VERSION"-1.x86_64.rpm -chmod 755 /usr/sbin/start-* -chmod 755 /usr/sbin/stop-* -chmod 755 /usr/sbin/slaves.sh -chmod 755 /usr/sbin/update-hadoop-env.sh -rm $tmp_dir/hadoop-"$DIB_HADOOP_VERSION"-1.x86_64.rpm +case "$distro" in + Ubuntu ) + dpkg -i $tmp_dir/$package + ;; + Fedora ) + rpm -ivh --replacefiles $tmp_dir/$package + chmod 755 /usr/sbin/start-* + chmod 755 /usr/sbin/stop-* + chmod 755 /usr/sbin/slaves.sh + chmod 755 /usr/sbin/update-hadoop-env.sh + ;; +esac rm -r $tmp_dir echo "Pre-configuring Hadoop" filename=$(find $TARGET_ROOT/usr/java/ -maxdepth 1 -name "jdk*") -echo -e "PATH=\$PATH:/usr/sbin:$filename/bin\nJAVA_HOME=$filename" >> /home/hadoop/.bashrc -echo -e "HADOOP_HOME=/usr/share/hadoop/" >> /home/hadoop/.bashrc -sed -i "s,export JAVA_HOME=.*,export JAVA_HOME=$filename," /etc/hadoop/hadoop-env.sh -log_dir=/mnt/log/hadoop/\$USER/ -sed -i "s,export HADOOP_LOG_DIR=.*,export HADOOP_LOG_DIR=$log_dir," /etc/hadoop/hadoop-env.sh -log_dir=/mnt/log/hadoop/hdfs -sed -i "s,export HADOOP_SECURE_DN_LOG_DIR=.*,export HADOOP_SECURE_DN_LOG_DIR=$log_dir," /etc/hadoop/hadoop-env.sh +cat >> /home/hadoop/.bashrc <