Installation of a development machine ===================================== .. highlight:: bash This tutorial describes the installation of a development environment. To have a fully working environment, you have to set up the other components as well. The full procedure is included in the :doc:`Puppet recipes ` available for CIRCLE Cloud. Preparation ----------- To get the project running on a development machine, launch a new Ubuntu 14.04 machine, and log in to it over SSH. .. note:: To use *git* over *SSH*, we advise enabling SSH *agent forwarding*. On your terminal computer check if *ssh-agent* is running (the command should print a process id):: $ echo $SSH_AGENT_PID 1234 If it is not running, you can configure your dektop environment to automatically launch it. Add your private key to the agent (if it is not added by your desktop environment):: ssh-add [~/.ssh/path_to_id_rsa] You can read and write all repositories over https, but you will have to provide username and password for every push command. Log in to the new vm. The :kbd:`-A` switch enables agent forwarding:: ssh -A cloud@host You can check agent forwarding on the vm:: $ if [ -S "$SSH_AUTH_SOCK" ]; then echo "Agent forwarding works!"; fi Agent forwarding works! .. warning:: If the first character of the hostname of the vm is a digit, you have to change it, because RabbitMQ won't work with it. :: old=$(hostname) new=c-${old} sudo tee /etc/hostname <<<$new sudo hostname $new sudo sed -i /etc/hosts -e "s/$old/$new/g" Setting up required software ---------------------------- Update the package lists, and install the required system software:: sudo apt-get update sudo apt-get install --yes virtualenvwrapper postgresql git \ python-pip rabbitmq-server libpq-dev python-dev ntp memcached \ libmemcached-dev npm nodejs-legacy sudo npm -g install bower less yuglify Set up *PostgreSQL* to listen on localhost and restart it:: sudo sed -i /etc/postgresql/9.1/main/postgresql.conf -e '/#listen_addresses/ s/^#//' sudo /etc/init.d/postgresql restart Also, create a new database and user:: sudo -u postgres createuser -S -D -R circle sudo -u postgres psql <<<"ALTER USER circle WITH PASSWORD 'circle';" sudo -u postgres createdb circle -O circle Configure RabbitMQ: remove the guest user, add virtual host and user with proper permissions:: sudo rabbitmqctl delete_user guest sudo rabbitmqctl add_vhost circle sudo rabbitmqctl add_user cloud password sudo rabbitmqctl set_permissions -p circle cloud '.*' '.*' '.*' Enable SSH server to accept your name and address from your environment:: sudo sed -i /etc/ssh/sshd_config -e '$ a AcceptEnv GIT_*' sudo /etc/init.d/ssh reload You should set these vars in your **local** profile:: cat >>~/.profile <<'END' export GIT_AUTHOR_NAME="Your Name" export GIT_AUTHOR_EMAIL="your.address@example.org" export GIT_COMMITTER_NAME="$GIT_AUTHOR_NAME" export GIT_COMMITTER_EMAIL="$GIT_AUTHOR_EMAIL" END source ~/.profile Allow sending it in your **local** ssh configuration:: # Content of ~/.ssh/config: Host * SendEnv GIT_* Setting up Circle itself ------------------------ Clone the git repository:: git clone https://git.ik.bme.hu/circle/cloud.git circle If you want to push back any modifications, it is possible to set SSH as the push protocol:: cd circle git remote set-url --push origin git@git.ik.bme.hu:circle/cloud.git Set up *virtualenvwrapper* and the *virtual Python environment* for the project:: source /etc/bash_completion.d/virtualenvwrapper mkvirtualenv circle Set up default Circle configuration and activate the virtual environment:: cat >>/home/cloud/.virtualenvs/circle/bin/postactivate <>~/.vimrc <