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
|