Hi all,

could I add this script to the deployments/standalone folder (or suggest better)? It's updated deployment script for Ubuntu 16.10. in Azure for test/development. There are 5 changes related to the original standalone deployment script:

Change #1:

replaced row 159:
wget -P $R https://download.libsodium.org/libsodium/releases/libsodium-1.0.3.tar.gz
    cd $R
    tar xzf libsodium-1.0.3.tar.gz
    rm $R/libsodium-1.0.3.tar.gz
    cd $R/libsodium-1.0.3/
    ./configure
    make
    make install
    cd
    rm -r $R/libsodium-1.0.3/

to:
wget -P $R https://download.libsodium.org/libsodium/releases/libsodium-1.0.4.tar.gz
    cd $R
    tar xzf libsodium-1.0.4.tar.gz
    rm $R/libsodium-1.0.4.tar.gz
    cd $R/libsodium-1.0.4/
    ./configure
    make
    make install
    cd
    rm -r $R/libsodium-1.0.4/

reason: version 1.0.3 was already removed from download list (the latest version 1.0.11 was compiled with errors)

Change #2:

replaced row 34 (parameter -ne is unknown; in Ubuntu, not sure other distro) - change:
if [ ${UID} -ne 0 ]; then
    printRed "Please start the script as root."
    exit 1
fi

to:
if [ "${UID}" = "0" ]
    then
    printRed "Please start the script as root."
    exit 1
fi

Change #3:

removed "function" identification of each function in the script (Ubuntu)

Change #4:
replace row 197:
wget -P $R http://apache.mirror.anlx.net/spark/spark-1.6.1/spark-1.6.1-bin-hadoop2.6.tgz

to:
wget -P $R http://d3kbcqa49mib13.cloudfront.net/spark-1.6.1-bin-hadoop2.6.tgz

reason: repository apache.mirror.anlx.net is not available

Change #5:
replace row 201:
cat <<EOF >> $R/etc/bash.bashrc

to:
cat <<EOF >> /etc/bash.bashrc

reason:
to hit the correct file

Kind regards
Jan Rock
#!/usr/bin/env bash

set -e

##########################################################
# Image configs
HOSTNAME="iota"
USERNAME="iota"
TZDATA="Europe/London"

#########################################################
cd
BASEDIR=$(pwd)
DEVICE_R=${BASEDIR}/
ARCH=$(uname -m)
export TZ=${TZDATA}

########################################################
# bash colors
BASH_GREEN="\e[1;32m"
BASH_RED="\e[1;31m"
BASH_NORMAL="\e[0m"

printGreen() {
    echo -e "${BASH_GREEN}$1${BASH_NORMAL}"
}

printRed() {
    echo -e "${BASH_RED}$1${BASH_NORMAL}"
}

#########################################################
# check root
if [ "${UID}" = "0" ]
    then
    printRed "Please start the script as root."
    exit 1
fi

configure_timezone() {
    printGreen "Setup timezone ${TZDATA}..."
    # Set time zone
    echo ${TZDATA} > /etc/timezone
    dpkg-reconfigure -f noninteractive tzdata
}

apt_upgrade() {
    printGreen "Upgrade..."
    apt-get -f -y install
    dpkg --configure -a
    apt-get update
    apt-get -y -u dist-upgrade
}

apt_clean() {
    printGreen "Clean packages..."
    apt-get -y autoremove
    apt-get clean
}


create_groups() {
    printGreen "Create groups..."
    groupadd -f --system gpio
    groupadd -f --system i2c
    groupadd -f --system input
    groupadd -f --system spi

    # Create adduser hook
    cat <<'EOM' >/usr/local/sbin/adduser.local
#!/bin/sh
# This script is executed as the final step when calling `adduser`
# USAGE:
#   adduser.local USER UID GID HOME

# Add user to the Raspberry Pi specific groups
usermod -a -G adm,gpio,i2c,input,spi,video $1
EOM
    chmod +x /usr/local/sbin/adduser.local
}

# Create default user
create_user() {
    printGreen "Create user..."
    apt-get -y install whois
    local DATE=$(date +%m%H%M%S)
    local PASSWD=$(mkpasswd -m sha-512 ${USERNAME} ${DATE})

    adduser --gecos "iota user" --add_extra_groups --disabled-password 
${USERNAME}
    usermod -a -G sudo -p ${PASSWD} ${USERNAME}
}


configure_ssh() {
    printGreen "Configure ssh..."
    apt-get -y install openssh-server
    cat > /etc/systemd/system/sshdgenkeys.service << EOF
[Unit]
Description=SSH key generation on first startup
Before=ssh.service
ConditionPathExists=|!/etc/ssh/ssh_host_key
ConditionPathExists=|!/etc/ssh/ssh_host_key.pub
ConditionPathExists=|!/etc/ssh/ssh_host_rsa_key
ConditionPathExists=|!/etc/ssh/ssh_host_rsa_key.pub
ConditionPathExists=|!/etc/ssh/ssh_host_dsa_key
ConditionPathExists=|!/etc/ssh/ssh_host_dsa_key.pub
ConditionPathExists=|!/etc/ssh/ssh_host_ecdsa_key
ConditionPathExists=|!/etc/ssh/ssh_host_ecdsa_key.pub
ConditionPathExists=|!/etc/ssh/ssh_host_ed25519_key
ConditionPathExists=|!/etc/ssh/ssh_host_ed25519_key.pub

[Service]
ExecStart=/usr/bin/ssh-keygen -A
Type=oneshot
RemainAfterExit=yes

[Install]
WantedBy=ssh.service
EOF

    mkdir -p /etc/systemd/system/ssh.service.wants
    ln -s /etc/systemd/system/sshdgenkeys.service 
/etc/systemd/system/ssh.service.wants
}

configure_network() {
    printGreen "Set hostename ${HOSTNAME}..."

    # Set up hosts
    echo ${HOSTNAME} >/etc/hostname
    cat <<EOM >/etc/hosts
127.0.0.1       localhost
::1             localhost ip6-localhost ip6-loopback
ff02::1         ip6-allnodes
ff02::2         ip6-allrouters

127.0.1.1       ${HOSTNAME}
EOM

    # Set up interfaces
    printGreen "Configure network..."
    cat <<EOM >/etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8)
# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d

# The loopback network interface
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp
EOM

}

install_zeromq(){

    printGreen "Installing ZeroMQ..."
    apt-get -y install libtool pkg-config build-essential autoconf automake
    wget -P $R 
https://download.libsodium.org/libsodium/releases/libsodium-1.0.4.tar.gz    
    cd $R
    tar xzf libsodium-1.0.4.tar.gz
    rm $R/libsodium-1.0.4.tar.gz
    cd $R/libsodium-1.0.4/
    ./configure
    make
    make install
    cd
    rm -r $R/libsodium-1.0.4/
    wget -P $R http://download.zeromq.org/zeromq-4.1.3.tar.gz
    cd $R
    tar -zxf zeromq-4.1.3.tar.gz
    cd zeromq-4.1.3/
    ./configure
    make
    make install
    ldconfig
    cd ..
    rm -r zeromq-4.1.3/
    rm zeromq-4.1.3.tar.gz
    cd
}

install_scala(){
    printGreen  "Installing Scala..."
    wget -P $R https://downloads.typesafe.com/scala/2.11.6/scala-2.11.6.tgz
    mkdir -p /usr/lib/scala
    cd $R
    tar -xzf scala-2.11.6.tgz -C /usr/lib/scala
    rm $R/scala-2.11.6.tgz
    ln -sf /usr/lib/scala/scala-2.11.6/bin/scala /bin/scala
    ln -sf /usr/lib/scala/scala-2.11.6/bin/scalac /bin/scalac

}

install_spark(){
    printGreen "Installing Spark..."
    wget -P $R 
http://d3kbcqa49mib13.cloudfront.net/spark-1.6.1-bin-hadoop2.6.tgz
    cd $R
    tar xzf spark-1.6.1-bin-hadoop2.6.tgz -C /opt
    rm $R/spark-1.6.1-bin-hadoop2.6.tgz
    cat <<EOF >> /etc/bash.bashrc
export PATH=\$PATH:/opt/spark-1.6.1-bin-hadoop2.6/bin
EOF
}

install_software() {
    printGreen "Install extra packages..."
    apt-add-repository ppa:webupd8team/java
    apt-get update
    echo "oracle-java8-installer shared/accepted-oracle-license-v1-1 select 
true" | debconf-set-selections
    apt-get install -y oracle-java8-installer
    apt-get -y install htop nano avahi-utils vim git ntp

    install_zeromq

    printGreen "Installing MQTT..."
    apt-get -y install mosquitto mosquitto-clients

    printGreen  "Installing Redis...."
    apt-get -y install redis-server python-redis

    install_scala
    install_spark

    printGreen "Install iota packages..."

}


stage_01_base() {
    printGreen "================================================"
    printGreen "Stage 1 - Base system"
    printGreen "================================================"

    #configure_timezone
    apt_upgrade
    apt_clean
}

stage_02_desktop() {
    printGreen "================================================"
    printGreen "Stage 2 - Desktop"
    printGreen "================================================"

    #create_groups
#    create_user
    #configure_ssh
    #configure_network
    #apt_upgrade
    #apt_clean
}

stage_03_extra_SW() {
    printGreen "================================================"
    printGreen "Stage 3 - Add Extra Software"
    printGreen "================================================"

    R="${DEVICE_R}"
    install_software
    apt_upgrade
    apt_clean
}

#########################################################
# Start
startTime=$(date +%s)


#########################################################
# Main
stage_01_base
stage_02_desktop
stage_03_extra_SW


#########################################################
# calculate process time
endTime=$(date +%s)
dt=$((endTime - startTime))
ds=$((dt % 60))
dm=$(((dt / 60) % 60))
dh=$((dt / 3600))

echo -e "${BASH_GREEN}"
echo -e "-------------------------------------------------------"
printf '\tTotal time: %02d:%02d:%02d\n' ${dh} ${dm} ${ds}
echo -e "-------------------------------------------------------"
echo -e "${BASH_NORMAL}"
#!/usr/bin/env bash

Reply via email to