{
  "description"               : "Install Hadoop 2.6.5 on Ubuntu 16.04 (single-node cluster)",
  "options"                   : {
    "displayExecutionGraphDescription": true
  },
  "asynchronousCommands"      : [
  ],
  "serialSynchronizedCommands": [
    {
      "description"                : "[sudo] apt-get update",
      "suppressOutput"             : false,
      "suppressDiagnostics": true,
      "showPreAndPostSpawnMessages": true,
      "outputColor"                : "",
      "useSudo"                    : true,
      "command"                    : "apt-get",
      "args"                       : [
        "update",
        "-y"
      ]
    },
    {
      "description"                : "[sudo] Install JDK",
      "suppressOutput"             : false,
      "suppressDiagnostics": true,
      "showPreAndPostSpawnMessages": true,
      "outputColor"                : "",
      "useSudo"                    : true,
      "command"                    : "apt-get",
      "args"                       : [
        "install",
        "default-jdk",
        "-y"
      ]
    },
    {
      "description"                : "[sudo] addgroup hadoop",
      "suppressOutput"             : false,
      "suppressDiagnostics": true,
      "showPreAndPostSpawnMessages": true,
      "outputColor"                : "",
      "useSudo"                    : true,
      "command"                    : "addgroup",
      "args"                       : [
        "hadoop"
      ]
    },
    {
      "description"                : "[sudo] useradd hduser -s /bin/bash -m -g hadoop",
      "suppressOutput"             : false,
      "suppressDiagnostics": true,
      "showPreAndPostSpawnMessages": true,
      "outputColor"                : "",
      "useSudo"                    : true,
      "command"                    : "/usr/bin/env",
      "args"                       : [
        "bash",
        "-c",
        "useradd -m -p `perl -e 'printf(\"%s\n\", crypt(\"password\",\"password\"))'` -s /bin/bash hduser -g hadoop"
      ]
    },
    {
      "description"                : "[sudo] apt-get install ssh (probably unnecessary)",
      "suppressOutput"             : false,
      "suppressDiagnostics": true,
      "showPreAndPostSpawnMessages": true,
      "outputColor"                : "",
      "useSudo"                    : true,
      "command"                    : "apt-get",
      "args"                       : [
        "install",
        "ssh",
        "-y"
      ]
    },
    {
      "description"                : "[sudo] ssh-keygen",
      "suppressOutput"             : false,
      "suppressDiagnostics": true,
      "showPreAndPostSpawnMessages": true,
      "outputColor"                : "",
      "useSudo"                    : false,
      "command"                    : "bash",
      "args"                       : [
        "-c",
        "echo password | sudo -S --user=hduser ssh-keygen -t rsa -N \"\" -f /home/hduser/.ssh/id_rsa"
      ]
    },
    {
      "description"                : "[sudo] cat id_rsa.pub >> authorized_keys",
      "suppressOutput"             : false,
      "suppressDiagnostics": true,
      "showPreAndPostSpawnMessages": true,
      "outputColor"                : "",
      "useSudo"                    : true,
      "command"                    : "bash",
      "args"                       : [
        "-c",
        "echo password | sudo -S --user=hduser cat /home/hduser/.ssh/id_rsa.pub >> /home/hduser/.ssh/authorized_keys"
      ]
    },
    {
      "description"                : "[sudo] mkdir -p /usr/local/hadoop",
      "suppressOutput"             : false,
      "suppressDiagnostics": true,
      "showPreAndPostSpawnMessages": true,
      "outputColor"                : "",
      "useSudo"                    : false,
      "command"                    : "bash",
      "args"                       : [
        "-c",
        "echo password | sudo -S -- bash -c 'mkdir -p /usr/local/hadoop && chown hduser.hadoop /usr/local/hadoop'"
      ]
    },
    {
      "description"                : "[sudo] curl hadoop.tar.gz | tar xvf",
      "suppressOutput"             : false,
      "suppressDiagnostics": true,
      "showPreAndPostSpawnMessages": true,
      "outputColor"                : "",
      "useSudo"                    : false,
      "command"                    : "bash",
      "args"                       : [
        "-c",
        "echo password | sudo --user=hduser -S -- bash -c 'curl http://mirrors.sonic.net/apache/hadoop/common/hadoop-2.6.5/hadoop-2.6.5.tar.gz | tar xz --strip-components=1 -C /usr/local/hadoop'"
      ]
    },
    {
      "description"                : "[sudo] adduser hduser sudo",
      "suppressOutput"             : false,
      "suppressDiagnostics": true,
      "showPreAndPostSpawnMessages": true,
      "outputColor"                : "",
      "useSudo"                    : false,
      "command"                    : "bash",
      "args"                       : [
        "-c",
        "echo password | sudo -S -- bash -c 'adduser hduser sudo'"
      ]
    },
    {
      "description"                : "[sudo] Update /home/hduser/.profile (Step 0)",
      "suppressOutput"             : false,
      "suppressDiagnostics": true,
      "showPreAndPostSpawnMessages": true,
      "outputColor"                : "",
      "useSudo"                    : false,
      "command"                    : "bash",
      "args"                       : [
        "-c",
        "echo password | sudo -S --user=hduser -- bash -c 'echo \\#HADOOP VARIABLES START >> /home/hduser/.profile'"
      ]
    },
    {
      "description"                : "[sudo] Update /home/hduser/.profile (Step 1)",
      "suppressOutput"             : false,
      "suppressDiagnostics": true,
      "showPreAndPostSpawnMessages": true,
      "outputColor"                : "",
      "useSudo"                    : false,
      "command"                    : "bash",
      "args"                       : [
        "-c",
        "echo password | sudo -S --user=hduser -- bash -c 'export J_H=`which java` && export J_H2=`readlink -f ${J_H}` && echo export JAVA_HOME=${J_H2%/jre/bin/java} >> /home/hduser/.profile'"
      ]
    },
    {
      "description"                : "[sudo] Update /home/hduser/.profile (Step 2)",
      "suppressOutput"             : false,
      "suppressDiagnostics": true,
      "showPreAndPostSpawnMessages": true,
      "outputColor"                : "",
      "useSudo"                    : false,
      "command"                    : "bash",
      "args"                       : [
        "-c",
        "echo password | sudo -S --user=hduser -- bash -c 'echo export HADOOP_INSTALL=/usr/local/hadoop >> /home/hduser/.profile'"
      ]
    },
    {
      "description"                : "[sudo] Update /home/hduser/.profile (Step 3)",
      "suppressOutput"             : false,
      "suppressDiagnostics": true,
      "showPreAndPostSpawnMessages": true,
      "outputColor"                : "",
      "useSudo"                    : false,
      "command"                    : "bash",
      "args"                       : [
        "-c",
        "echo password | sudo -S --user=hduser -- bash -c 'echo export PATH=\\$PATH:\\$HADOOP_INSTALL/bin:\\$HADOOP_INSTALL/sbin >> /home/hduser/.profile'"
      ]
    },
    {
      "description"                : "[sudo] Update /home/hduser/.profile (Step 4)",
      "suppressOutput"             : false,
      "suppressDiagnostics": true,
      "showPreAndPostSpawnMessages": true,
      "outputColor"                : "",
      "useSudo"                    : false,
      "command"                    : "bash",
      "args"                       : [
        "-c",
        "echo password | sudo -S --user=hduser -- bash -c 'echo export HADOOP_MAPRED_HOME=\\$HADOOP_INSTALL >> /home/hduser/.profile'"
      ]
    },
    {
      "description"                : "[sudo] Update /home/hduser/.profile (Step 5)",
      "suppressOutput"             : false,
      "suppressDiagnostics": true,
      "showPreAndPostSpawnMessages": true,
      "outputColor"                : "",
      "useSudo"                    : false,
      "command"                    : "bash",
      "args"                       : [
        "-c",
        "echo password | sudo -S --user=hduser -- bash -c 'echo export HADOOP_COMMON_HOME=\\$HADOOP_INSTALL >> /home/hduser/.profile'"
      ]
    },
    {
      "description"                : "[sudo] Update /home/hduser/.profile (Step 6)",
      "suppressOutput"             : false,
      "suppressDiagnostics": true,
      "showPreAndPostSpawnMessages": true,
      "outputColor"                : "",
      "useSudo"                    : false,
      "command"                    : "bash",
      "args"                       : [
        "-c",
        "echo password | sudo -S --user=hduser -- bash -c 'echo export HADOOP_HDFS_HOME=\\$HADOOP_INSTALL >> /home/hduser/.profile'"
      ]
    },
    {
      "description"                : "[sudo] Update /home/hduser/.profile (Step 7)",
      "suppressOutput"             : false,
      "suppressDiagnostics": true,
      "showPreAndPostSpawnMessages": true,
      "outputColor"                : "",
      "useSudo"                    : false,
      "command"                    : "bash",
      "args"                       : [
        "-c",
        "echo password | sudo -S --user=hduser -- bash -c 'echo export YARN_HOME=\\$HADOOP_INSTALL >> /home/hduser/.profile'"
      ]
    },
    {
      "description"                : "[sudo] Update /home/hduser/.profile (Step 8)",
      "suppressOutput"             : false,
      "suppressDiagnostics": true,
      "showPreAndPostSpawnMessages": true,
      "outputColor"                : "",
      "useSudo"                    : false,
      "command"                    : "bash",
      "args"                       : [
        "-c",
        "echo password | sudo -S --user=hduser -- bash -c 'echo export HADOOP_COMMON_LIB_NATIVE_DIR=\\$HADOOP_INSTALL/lib/native >> /home/hduser/.profile'"
      ]
    },
    {
      "description"                : "[sudo] Update /home/hduser/.profile (Step 9)",
      "suppressOutput"             : false,
      "suppressDiagnostics": true,
      "showPreAndPostSpawnMessages": true,
      "outputColor"                : "",
      "useSudo"                    : false,
      "command"                    : "bash",
      "args"                       : [
        "-c",
        "echo password | sudo -S --user=hduser -- bash -c 'echo export HADOOP_OPTS=\\\"-Djava.library.path=\\$HADOOP_INSTALL/lib\\\" >> /home/hduser/.profile'"
      ]
    },
    {
      "description"                : "[sudo] Update /home/hduser/.profile (Step 10)",
      "suppressOutput"             : false,
      "suppressDiagnostics": true,
      "showPreAndPostSpawnMessages": true,
      "outputColor"                : "",
      "useSudo"                    : false,
      "command"                    : "bash",
      "args"                       : [
        "-c",
        "echo password | sudo -S --user=hduser -- bash -c 'echo \\#HADOOP VARIABLES END >> /home/hduser/.profile'"
      ]
    },
    {
      "description"                : "[sudo] Update /usr/local/hadoop/hadoop-env.sh with JAVA_HOME",
      "suppressOutput"             : false,
      "suppressDiagnostics": true,
      "showPreAndPostSpawnMessages": true,
      "outputColor"                : "",
      "useSudo"                    : false,
      "command"                    : "bash",
      "args"                       : [
        "-c",
        "echo password | sudo -S --user=hduser -- bash -c 'export J_H=`which java` && export J_H2=`readlink -f ${J_H}` && echo export JAVA_HOME=${J_H2%/jre/bin/java} >> /usr/local/hadoop/etc/hadoop/hadoop-env.sh'"
      ]
    },
    {
      "description"                : "[sudo] Update /usr/local/hadoop/hadoop-env.sh with JAVA_HOME",
      "suppressOutput"             : false,
      "suppressDiagnostics": true,
      "showPreAndPostSpawnMessages": true,
      "outputColor"                : "",
      "useSudo"                    : false,
      "command"                    : "bash",
      "args"                       : [
        "-c",
        "echo password | sudo -S --user=hduser -- bash -c 'export J_H=`which java` && export J_H2=`readlink -f ${J_H}` && echo export JAVA_HOME=${J_H2%/jre/bin/java} >> /usr/local/hadoop/etc/hadoop/hadoop-env.sh'"
      ]
    },
    {
      "description"                : "[sudo] mkdir -p /app/hadoop/tmp",
      "suppressOutput"             : false,
      "suppressDiagnostics": true,
      "showPreAndPostSpawnMessages": true,
      "outputColor"                : "",
      "useSudo"                    : false,
      "command"                    : "bash",
      "args"                       : [
        "-c",
        "echo password | sudo -S -- bash -c 'mkdir -p /app/hadoop/tmp && chown hduser.hadoop /app/hadoop/tmp'"
      ]
    },
    {
      "description"                : "[sudo] wget core-site.xml",
      "suppressOutput"             : false,
      "suppressDiagnostics": true,
      "showPreAndPostSpawnMessages": true,
      "outputColor"                : "",
      "useSudo"                    : false,
      "command"                    : "bash",
      "args"                       : [
        "-c",
        "echo password | sudo -S -- bash -c 'wget -O /usr/local/hadoop/etc/hadoop/core-site.xml https://raw.githubusercontent.com/jreeme/firmament-bash/master/command-json/hadoop-config/core-site.xml'"
      ]
    },
    {
      "description"                : "[sudo] wget mapred-site.xml",
      "suppressOutput"             : false,
      "suppressDiagnostics": true,
      "showPreAndPostSpawnMessages": true,
      "outputColor"                : "",
      "useSudo"                    : false,
      "command"                    : "bash",
      "args"                       : [
        "-c",
        "echo password | sudo -S -- bash -c 'wget -O /usr/local/hadoop/etc/hadoop/mapred-site.xml https://raw.githubusercontent.com/jreeme/firmament-bash/master/command-json/hadoop-config/mapred-site.xml'"
      ]
    },
    {
      "description"                : "[sudo] mkdir -p /usr/local/hadoop_store/hdfs.namenode",
      "suppressOutput"             : false,
      "suppressDiagnostics": true,
      "showPreAndPostSpawnMessages": true,
      "outputColor"                : "",
      "useSudo"                    : false,
      "command"                    : "bash",
      "args"                       : [
        "-c",
        "echo password | sudo -S -- bash -c 'mkdir -p /usr/local/hadoop_store/hdfs/namenode'"
      ]
    },
    {
      "description"                : "[sudo] mkdir -p /usr/local/hadoop_store/hdfs.datanode",
      "suppressOutput"             : false,
      "suppressDiagnostics": true,
      "showPreAndPostSpawnMessages": true,
      "outputColor"                : "",
      "useSudo"                    : false,
      "command"                    : "bash",
      "args"                       : [
        "-c",
        "echo password | sudo -S -- bash -c 'mkdir -p /usr/local/hadoop_store/hdfs/datanode && chown -R hduser.hadoop /usr/local/hadoop_store'"
      ]
    },
    {
      "description"                : "[sudo] wget hdfs-site.xml",
      "suppressOutput"             : false,
      "suppressDiagnostics": true,
      "showPreAndPostSpawnMessages": true,
      "outputColor"                : "",
      "useSudo"                    : false,
      "command"                    : "bash",
      "args"                       : [
        "-c",
        "echo password | sudo -S -- bash -c 'wget -O /usr/local/hadoop/etc/hadoop/hdfs-site.xml https://raw.githubusercontent.com/jreeme/firmament-bash/master/command-json/hadoop-config/hdfs-site.xml'"
      ]
    },
    {
      "description"                : "[sudo] hadoop namenode -format",
      "suppressOutput"             : false,
      "suppressDiagnostics": true,
      "showPreAndPostSpawnMessages": true,
      "outputColor"                : "",
      "useSudo"                    : false,
      "command"                    : "bash",
      "args"                       : [
        "-c",
        "echo password | sudo -S -i -u hduser bash -c 'hadoop namenode -format'"
      ]
    }
  ]
}

