def setup_dns(): # Install DNS server run("aptitude install -y bind9 bind9utils", pty=False) # bind directory permissions need to be modified in order for dynamic # updates to work run("chmod g+w /etc/bind") # Get IP address and charge it into context context = {"ip_address": get_ip_address()} # Set up configuration files with cd("/etc/bind"): upload_template( "named.conf.local", "named.conf.local", context, use_jinja=True, template_dir="templates/dns_server" ) upload_template("db.lasa.nya", "db.lasa.nya", context, use_jinja=True, template_dir="templates/dns_server") # Restart DNS server run("service bind9 restart", pty=False)
def setup_node(index): if not path.exists('packages/lasana_node_home.tar.gz'): raise Exception('lasana_node_home.tar.gz does not exist. Run fab create_node_home_package first.') # Install lasaña dependencies run('aptitude install -y --without-recommends python-{virtualenv,psycopg2,flup} sudo git gettext', pty=False) # Create new user create_lasana_user() # Upload home put('packages/lasana_node_home.tar.gz', '/lasana/home.tar.gz') with cd('/lasana'): # Uncompress home sudo('tar zxfvp home.tar.gz', user='******') run('rm home.tar.gz') # Create a virtualenv sudo('umask 077; virtualenv --setuptools env', user='******') # Install Django and other requirements suprun('pip install -r requirements.txt') if not exists('lasana'): # Download lasaña repo from git suprun('git clone git://github.com/ntrrgc/lasana.git -b distributed') else: # Update lasaña repo with cd('lasana'): suprun('git pull') # Git version of lasaña requires compiling some things with cd('lasana'): # Compile messages (translations) suprun('django-admin.py compilemessages') # Collect static resources suprun('python manage.py collectstatic --noinput', umask=0027) # Sync database suprun('python manage.py synchronized_syncdb') # Register node in the database, getting a node Id suprun('python manage.py registernode') # Get node name from node Id node_name = 's' + run('cat nodeid') # Set hostname to the given node name set_hostname(node_name) # get only the subdomain part # Install lasaña initscript put('packages/lasana_initscript.sh', '/etc/init.d/lasana') run('chmod +x /etc/init.d/lasana') # Set it to boot with the system run('update-rc.d lasana defaults') # Start lasaña run('/etc/init.d/lasana start', pty=False) # Install and configure the web server setup_lighttpd() # Register the new name in DNS server execute(register_node_in_dns, node_name, get_ip_address(), hosts=[index])