added aws install.sh in faafo to fix reqs install failed
This commit is contained in:
		
							
								
								
									
										203
									
								
								faafo/contrib/install-aws.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										203
									
								
								faafo/contrib/install-aws.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,203 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
# 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.
 | 
			
		||||
 | 
			
		||||
if [[ -e /etc/os-release ]]; then
 | 
			
		||||
 | 
			
		||||
    # NOTE(berendt): support for CentOS/RHEL/openSUSE/SLES will be added in the future
 | 
			
		||||
 | 
			
		||||
    source /etc/os-release
 | 
			
		||||
 | 
			
		||||
    INSTALL_DATABASE=0
 | 
			
		||||
    INSTALL_FAAFO=0
 | 
			
		||||
    INSTALL_MESSAGING=0
 | 
			
		||||
    RUN_API=0
 | 
			
		||||
    RUN_DEMO=0
 | 
			
		||||
    RUN_WORKER=0
 | 
			
		||||
    URL_DATABASE='sqlite:////tmp/sqlite.db'
 | 
			
		||||
    URL_ENDPOINT='http://127.0.0.1'
 | 
			
		||||
    URL_MESSAGING='amqp://guest:guest@localhost:5672/'
 | 
			
		||||
 | 
			
		||||
    while getopts e:m:d:i:r: FLAG; do
 | 
			
		||||
        case $FLAG in
 | 
			
		||||
            i)
 | 
			
		||||
                case $OPTARG in
 | 
			
		||||
                    messaging)
 | 
			
		||||
                        INSTALL_MESSAGING=1
 | 
			
		||||
                    ;;
 | 
			
		||||
                    database)
 | 
			
		||||
                        INSTALL_DATABASE=1
 | 
			
		||||
                    ;;
 | 
			
		||||
                    faafo)
 | 
			
		||||
                        INSTALL_FAAFO=1
 | 
			
		||||
                    ;;
 | 
			
		||||
                esac
 | 
			
		||||
            ;;
 | 
			
		||||
            r)
 | 
			
		||||
                case $OPTARG in
 | 
			
		||||
                    demo)
 | 
			
		||||
                        RUN_DEMO=1
 | 
			
		||||
                    ;;
 | 
			
		||||
                    api)
 | 
			
		||||
                        RUN_API=1
 | 
			
		||||
                    ;;
 | 
			
		||||
                    worker)
 | 
			
		||||
                        RUN_WORKER=1
 | 
			
		||||
                    ;;
 | 
			
		||||
                esac
 | 
			
		||||
            ;;
 | 
			
		||||
            e)
 | 
			
		||||
                URL_ENDPOINT=$OPTARG
 | 
			
		||||
            ;;
 | 
			
		||||
 | 
			
		||||
            m)
 | 
			
		||||
                URL_MESSAGING=$OPTARG
 | 
			
		||||
            ;;
 | 
			
		||||
 | 
			
		||||
            d)
 | 
			
		||||
                URL_DATABASE=$OPTARG
 | 
			
		||||
            ;;
 | 
			
		||||
 | 
			
		||||
            *)
 | 
			
		||||
                echo "error: unknown option $FLAG"
 | 
			
		||||
                exit 1
 | 
			
		||||
            ;;
 | 
			
		||||
        esac
 | 
			
		||||
    done
 | 
			
		||||
 | 
			
		||||
    if [[ $ID = 'ubuntu' || $ID = 'debian' ]]; then
 | 
			
		||||
        sudo apt-get update
 | 
			
		||||
    elif [[ $ID = 'fedora' ]]; then
 | 
			
		||||
        sudo dnf update -y
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    if [[ $INSTALL_DATABASE -eq 1 ]]; then
 | 
			
		||||
        if [[ $ID = 'ubuntu' || $ID = 'debian' ]]; then
 | 
			
		||||
            sudo DEBIAN_FRONTEND=noninteractive apt-get install -y mysql-server python-mysqldb
 | 
			
		||||
            # HSFD changes for Ubuntu 18.04
 | 
			
		||||
            sudo sed -i -e "/bind-address/d" /etc/mysql/mysql.conf.d/mysqld.cnf
 | 
			
		||||
            #sudo sed -i -e "/bind-address/d" /etc/mysql/my.cnf
 | 
			
		||||
            sudo service mysql restart
 | 
			
		||||
        elif [[ $ID = 'fedora' ]]; then
 | 
			
		||||
            sudo dnf install -y mariadb-server python-mysql
 | 
			
		||||
            printf "[mysqld]\nbind-address = 127.0.0.1\n" | sudo tee /etc/my.cnf.d/faafo.conf
 | 
			
		||||
            sudo systemctl enable mariadb
 | 
			
		||||
            sudo systemctl start mariadb
 | 
			
		||||
        else
 | 
			
		||||
            echo "error: distribution $ID not supported"
 | 
			
		||||
            exit 1
 | 
			
		||||
        fi
 | 
			
		||||
        sudo mysqladmin password password
 | 
			
		||||
        sudo mysql -uroot -ppassword mysql -e "CREATE DATABASE IF NOT EXISTS faafo; GRANT ALL PRIVILEGES ON faafo.* TO 'faafo'@'%' IDENTIFIED BY 'password';"
 | 
			
		||||
        URL_DATABASE='mysql://root:password@localhost/faafo'
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    if [[ $INSTALL_MESSAGING -eq 1 ]]; then
 | 
			
		||||
        if [[ $ID = 'ubuntu' || $ID = 'debian' ]]; then
 | 
			
		||||
            sudo apt-get install -y rabbitmq-server
 | 
			
		||||
        elif [[ $ID = 'fedora' ]]; then
 | 
			
		||||
            sudo dnf install -y rabbitmq-server
 | 
			
		||||
            sudo systemctl enable rabbitmq-server
 | 
			
		||||
            sudo systemctl start rabbitmq-server
 | 
			
		||||
        else
 | 
			
		||||
            echo "error: distribution $ID not supported"
 | 
			
		||||
            exit 1
 | 
			
		||||
        fi
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    if [[ $INSTALL_FAAFO -eq 1 ]]; then
 | 
			
		||||
        if [[ $ID = 'ubuntu' || $ID = 'debian' ]]; then
 | 
			
		||||
            sudo apt-get install -y python-dev python-pip supervisor git zlib1g-dev libmysqlclient-dev python-mysqldb
 | 
			
		||||
            # Following is needed because of
 | 
			
		||||
            # https://bugs.launchpad.net/ubuntu/+source/supervisor/+bug/1594740
 | 
			
		||||
            if [ $(lsb_release --short --codename) = xenial ]; then
 | 
			
		||||
                # Make sure the daemon is enabled.
 | 
			
		||||
                if ! systemctl --quiet is-enabled supervisor; then
 | 
			
		||||
                    systemctl enable supervisor
 | 
			
		||||
                fi
 | 
			
		||||
                # Make sure the daemon is started.
 | 
			
		||||
                if ! systemctl --quiet is-active supervisor; then
 | 
			
		||||
                    systemctl start supervisor
 | 
			
		||||
                fi
 | 
			
		||||
            fi
 | 
			
		||||
        elif [[ $ID = 'fedora' ]]; then
 | 
			
		||||
            sudo dnf install -y python-devel python-pip supervisor git zlib-devel mariadb-devel gcc which python-mysql
 | 
			
		||||
            sudo systemctl enable supervisord
 | 
			
		||||
            sudo systemctl start supervisord
 | 
			
		||||
        #elif [[ $ID = 'opensuse' || $ID = 'sles' ]]; then
 | 
			
		||||
        #    sudo zypper install -y python-devel python-pip
 | 
			
		||||
        else
 | 
			
		||||
            echo "error: distribution $ID not supported"
 | 
			
		||||
            exit 1
 | 
			
		||||
        fi
 | 
			
		||||
 | 
			
		||||
        # HSFD changed to local repo
 | 
			
		||||
        git clone https://gogs.informatik.hs-fulda.de/srieger/cloud-computing-msc-ai-examples
 | 
			
		||||
        cd cloud-computing-msc-ai-examples/faafo
 | 
			
		||||
        # following line required by bug 1636150
 | 
			
		||||
        sudo pip install --upgrade pbr
 | 
			
		||||
        sudo pip install -r requirements.txt
 | 
			
		||||
        # rerun install of reqs in AWS, as first run seams to be killed?
 | 
			
		||||
        sudo pip install -r requirements.txt
 | 
			
		||||
        sudo python setup.py install
 | 
			
		||||
 | 
			
		||||
        sudo sed -i -e "s#transport_url = .*#transport_url = $URL_MESSAGING#" /etc/faafo/faafo.conf
 | 
			
		||||
        sudo sed -i -e "s#database_url = .*#database_url = $URL_DATABASE#" /etc/faafo/faafo.conf
 | 
			
		||||
        sudo sed -i -e "s#endpoint_url = .*#endpoint_url = $URL_ENDPOINT#" /etc/faafo/faafo.conf
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    if [[ $RUN_API -eq 1 ]]; then
 | 
			
		||||
        faafo_api="
 | 
			
		||||
[program:faafo_api]
 | 
			
		||||
command=$(which faafo-api)
 | 
			
		||||
priority=10"
 | 
			
		||||
 | 
			
		||||
        if [[ $ID = 'ubuntu' || $ID = 'debian' ]]; then
 | 
			
		||||
            echo "$faafo_api" | sudo tee -a /etc/supervisor/conf.d/faafo.conf
 | 
			
		||||
        elif [[ $ID = 'fedora' ]]; then
 | 
			
		||||
            echo "$faafo_api" | sudo tee -a /etc/supervisord.d/faafo.ini
 | 
			
		||||
        else
 | 
			
		||||
            echo "error: distribution $ID not supported"
 | 
			
		||||
            exit 1
 | 
			
		||||
        fi
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    if [[ $RUN_WORKER -eq 1 ]]; then
 | 
			
		||||
        faafo_worker="
 | 
			
		||||
[program:faafo_worker]
 | 
			
		||||
command=$(which faafo-worker)
 | 
			
		||||
priority=20"
 | 
			
		||||
 | 
			
		||||
        if [[ $ID = 'ubuntu' || $ID = 'debian' ]]; then
 | 
			
		||||
            echo "$faafo_worker" | sudo tee -a /etc/supervisor/conf.d/faafo.conf
 | 
			
		||||
        elif [[ $ID = 'fedora' ]]; then
 | 
			
		||||
            echo "$faafo_worker" | sudo tee -a /etc/supervisord.d/faafo.ini
 | 
			
		||||
        else
 | 
			
		||||
            echo "error: distribution $ID not supported"
 | 
			
		||||
            exit 1
 | 
			
		||||
        fi
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    if [[ $RUN_WORKER -eq 1 || $RUN_API -eq 1 ]]; then
 | 
			
		||||
        sudo supervisorctl reload
 | 
			
		||||
        sleep 5
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    if [[ $RUN_DEMO -eq 1 && $RUN_API -eq 1 ]]; then
 | 
			
		||||
        faafo --endpoint-url $URL_ENDPOINT --debug create
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
else
 | 
			
		||||
    exit 1
 | 
			
		||||
fi
 | 
			
		||||
		Reference in New Issue
	
	Block a user