package dk.kaspergsm.stormdeploy.configurations; import static org.jclouds.scriptbuilder.domain.Statements.exec; import java.util.ArrayList; import java.util.List; import org.jclouds.scriptbuilder.domain.Statement; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * Contains all methods to configure system tools on nodes. * If tools already exists, this takes almost no time! * * @author Kasper Grud Skat Madsen */ public class SystemTools { private SystemTools() { } public enum PACKAGE_MANAGER {APT}; private static Logger log = LoggerFactory.getLogger(SystemTools.class); public static List<Statement> init(PACKAGE_MANAGER pm) { List<Statement> st = new ArrayList<Statement>(); if (pm == PACKAGE_MANAGER.APT) { // Enable multiverse st.add(exec("sed -i \"/^# deb.*multiverse/ s/^# //\" /etc/apt/sources.list")); // Hide interactive installation prompts st.add(exec("export DEBIAN_FRONTEND=noninteractive")); // Init apt st.add(exec("apt-get update -y")); //st.add(exec("apt-get upgrade -y")); - user can add to remote-exec-preconfig if needed // Install JDK (OpenJDK 7) st.add(exec("apt-get install -y openjdk-7-jdk")); st.add(exec("export JAVA_HOME=$(dirname $(dirname $(find `ls -d /usr/lib/jvm/* | sort -k1 -r` -name 'javac' | head -1)))")); st.add(exec("update-alternatives --set java $JAVA_HOME/jre/bin/java")); // Install ant st.add(exec("apt-get install -y ant")); // Install git st.add(exec("apt-get install -y git")); // Install build-tools st.add(exec("apt-get install -y build-essential")); st.add(exec("apt-get install -y uuid-dev")); st.add(exec("apt-get install -y pkg-config")); st.add(exec("apt-get install -y libtool")); st.add(exec("apt-get install -y automake1.10")); st.add(exec("apt-get install -y unzip")); st.add(exec("update-alternatives --set automake /usr/bin/automake-1.10")); } else { log.error("PACKAGE MANAGER not supported: " + pm.toString()); } return st; } }