| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 | 
							- #!/bin/bash
 
- APT_SOURCES_LST="/etc/apt/sources.list.d/"
 
- DEVEL_DIR="/opt/devel"
 
- WGET="wget"
 
- RABBITMQCTL="rabbitmqctl"
 
- RABBITMQ_APT_URL="http://www.rabbitmq.com/debian/"
 
- RABBITMQ_APT_VER="testing main"
 
- RABBITMQ_APT_KEY="https://www.rabbitmq.com/rabbitmq-signing-key-public.asc"
 
- RABBITMQ_DEB="rabbitmq-server"
 
- RABBITMQ_USERNAME="testing"
 
- RABBITMQ_PASSWORD="t3s71ng"
 
- RABBITMQ_VHOST="/testing"
 
- REDIS_DEB="redis-server"
 
- REDIS_CONF="/etc/redis/redis.conf"
 
- GIT_ROOT="${DEVEL_DIR}"
 
- GITHUB_ROOT="https://github.com/"
 
- CELERY_GITHUB_USER="celery"
 
- CELERY_USER="celery"
 
- CELERY_GROUP="celery"
 
- CELERY_DIR="${GIT_ROOT}/celery"
 
- CELERY_FUNTESTS="${CELERY_DIR}/funtests/stress"
 
- CELERY_CONFIG_SRC="${CELERY_FUNTESTS}/run/provision/celeryd-init.config"
 
- CELERY_CONFIG_DST="/etc/default/celeryd"
 
- STRESS_DIR="${GIT_ROOT}/stress"
 
- die () {
 
-     echo $*
 
-     exit 1
 
- }
 
- # --- grent
 
- add_real_user () {
 
-     user_shell=${3:-/bin/bash}
 
-     addgroup $2
 
-     echo creating user "$1 group='$2' shell='${user_shell}'"
 
-     echo | adduser -q "$1" --shell="${user_shell}"   \
 
-             --ingroup="$2"                           \
 
-             --disabled-password  1>/dev/null 2>&1
 
-     id "$1" || die "Not able to create user"
 
- }
 
- # --- system
 
- make_directories () {
 
-     mkdir -p "${DEVEL_DIR}"
 
- }
 
- enable_bash_vi_mode () {
 
-     echo "set -o vi" >> /etc/bash.bashrc
 
- }
 
- configure_system () {
 
-     make_directories
 
-     enable_bash_vi_mode
 
- }
 
- # --- apt
 
- apt_update() {
 
-     apt-get update
 
- }
 
- add_apt_source () {
 
-     echo "deb $1" >> "${APT_SOURCES_LST}/rabbitmq.list"
 
- }
 
- add_apt_key() {
 
-     "$WGET" --quiet -O - "$1" | apt-key add -
 
- }
 
- apt_install () {
 
-     apt-get install -y "$1"
 
- }
 
- # --- rabbitmq
 
- rabbitmq_add_user () {
 
-     "$RABBITMQCTL" add_user "$1" "$2"
 
- }
 
- rabbitmq_add_vhost () {
 
-     "$RABBITMQCTL" add_vhost "$1"
 
- }
 
- rabbitmq_set_perm () {
 
-     "$RABBITMQCTL" set_permissions -p $1 $2 '.*' '.*' '.*'
 
- }
 
- install_rabbitmq() {
 
-     add_apt_source "${RABBITMQ_APT_URL} ${RABBITMQ_APT_VER}"
 
-     add_apt_key "${RABBITMQ_APT_KEY}"
 
-     apt_update
 
-     apt_install "${RABBITMQ_DEB}"
 
-     rabbitmq_add_user "${RABBITMQ_USERNAME}" "${RABBITMQ_PASSWORD}"
 
-     rabbitmq_add_vhost "${RABBITMQ_VHOST}"
 
-     rabbitmq_set_perm "${RABBITMQ_VHOST}" "${RABBITMQ_USERNAME}"
 
- }
 
- # --- redis
 
- restart_redis () {
 
-     service redis-server restart
 
- }
 
- install_redis () {
 
-     apt_install "${REDIS_DEB}"
 
-     sed -i 's/^bind .*$/#bind 127.0.0.1/' "${REDIS_CONF}"
 
-     restart_redis
 
- }
 
- # --- git
 
- install_git () {
 
-     apt_install git
 
- }
 
- github_clone () {
 
-     mkdir "${CELERY_DIR}"
 
-     chown "${CELERY_USER}" "${CELERY_DIR}"
 
-     (cd "${GIT_ROOT}"; sudo -u celery git clone "${GITHUB_ROOT}/${1}/${2}")
 
- }
 
- # --- pip
 
- pip_install () {
 
-     pip install -U "$1"
 
- }
 
- install_pip () {
 
-     apt_install python-setuptools
 
-     easy_install pip
 
-     pip_install virtualenv
 
-     apt_install python-dev
 
-     pip_install setproctitle
 
- }
 
- # --- celery
 
- restart_celery () {
 
-     service celeryd restart
 
- }
 
- install_celery_service () {
 
-     cp "${CELERY_DIR}/extra/generic-init.d/celeryd" /etc/init.d/
 
-     chmod +x "/etc/init.d/celeryd"
 
-     update-rc.d celeryd defaults
 
-     echo "cp \'${CELERY_CONFIG_SRC}\' \'${CELERY_CONFIG_DST}'"
 
-     cp "${CELERY_CONFIG_SRC}" "${CELERY_CONFIG_DST}"
 
-     update-rc.d celeryd enable
 
-     restart_celery
 
- }
 
- install_celery () {
 
-     pip_install celery
 
-     add_real_user "${CELERY_USER}" "${CELERY_GROUP}"
 
-     echo github_clone "'${CELERY_GITHUB_USER}'" "'celery'"
 
-     github_clone "${CELERY_GITHUB_USER}" celery
 
-     (cd ${CELERY_DIR}; pip install -r requirements/dev.txt);
 
-     (cd ${CELERY_DIR}; python setup.py develop);
 
- }
 
- install_stress () {
 
-     mkdir "${STRESS_DIR}"
 
-     chown "${CELERY_USER}" "${STRESS_DIR}"
 
-     cp -r ${CELERY_DIR}/funtests/stress/* "${STRESS_DIR}/"
 
- }
 
- # --- MAIN
 
- provision () {
 
-     apt_update
 
-     configure_system
 
-     apt_install powertop
 
-     apt_install htop
 
-     install_git
 
-     install_rabbitmq
 
-     install_redis
 
-     install_pip
 
-     install_celery
 
-     install_stress
 
-     install_celery_service
 
- }
 
- provision
 
 
  |