Exemplo n.º 1
0
def save_as_ami(name, arch='i386'):
    config = get_provider_dict()
    # Copy pk and cert to /tmp, somehow
    fabric.api.put(fabric.api.env.conf['AWS_X509_PRIVATE_KEY'], '/tmp/pk.pem')
    fabric.api.put(fabric.api.env.conf['AWS_X509_CERTIFICATE'],
                   '/tmp/cert.pem')

    fabric.contrib.files.sed('/etc/apt/sources.list',
                             'universe$',
                             'universe multiverse',
                             use_sudo=True)
    package_update()
    package_install('ec2-ami-tools', 'ec2-api-tools')

    fabric.api.sudo(
        'ec2-bundle-vol -c /tmp/cert.pem -k /tmp/pk.pem -u %s -s 10240 -r %s' %
        (fabric.api.env.conf['AWS_ID'], arch))
    fabric.api.sudo(
        'ec2-upload-bundle -b %s -m /tmp/image.manifest.xml -a %s -s %s --location %s'
        % (fabric.api.env.conf['AWS_AMI_BUCKET'],
           fabric.api.env.conf['AWS_ACCESS_KEY_ID'],
           fabric.api.env.conf['AWS_SECRET_ACCESS_KEY'],
           config['location'][:-1]))
    result = fabric.api.sudo(
        'ec2-register -C /tmp/cert.pem -K /tmp/pk.pem --region %s %s/image.manifest.xml -n %s'
        %
        (config['location'][:-1], fabric.api.env.conf['AWS_AMI_BUCKET'], name))
    fabric.api.run('rm /tmp/pk.pem')
    fabric.api.run('rm /tmp/cert.pem')

    ami = result.split()[1]
Exemplo n.º 2
0
def prepare_server(backports=False, common=True):
    """ Prepares server: installs system packages. """
    if backports:
        setup_backports()

    with fabric.api.settings(warn_only=True):
        package_update()
        package_upgrade()

    if common:
        install_common_packages()
Exemplo n.º 3
0
def prepare_server(backports=False,common=True):
	""" Prepares server: installs system packages. """
	if backports:
		setup_backports()
	
	with fabric.api.settings(warn_only = True):
		package_update()
		package_upgrade()

	if common:
		install_common_packages()
Exemplo n.º 4
0
def nginx_install():
    """ Install nginx. """
    if _nginx_is_installed():
        fabric.api.warn(fabric.colors.yellow('Nginx is already installed'))
        return

    os = detect_os()
    options = {'lenny': '-t lenny-backports'}

    fabric.api.sudo('add-apt-repository ppa:nginx/stable')
    package_update()
    package_install(['nginx', 'libxml2', 'libxml2-dev'], options.get(os, ''))
Exemplo n.º 5
0
def nginx_install():
	""" Install nginx. """
	if _nginx_is_installed():
		fabric.api.warn(fabric.colors.yellow('Nginx is already installed'))
		return

	os = detect_os()
	options = {'lenny': '-t lenny-backports'}

	fabric.api.sudo('add-apt-repository ppa:nginx/stable')
	package_update()
	package_install(['nginx','libxml2','libxml2-dev'], options.get(os,''))
Exemplo n.º 6
0
def java_install():
	""" 
	Install Sun Java6 
	
	Currently it is recommended you do these on the server directly.  
	Fabric has trouble with the prompts that you must answer during
	installation.
	"""
	if _java_is_installed():
		fabric.api.warn(fabric.colors.yellow('Sun Java6 JDK is already installed'))
		return

	if detect_os() == 'maverick':
		fabric.api.sudo('add-apt-repository "deb http://archive.canonical.com/ lucid partner"')
		package_update()
	package_install(['sun-java6-jdk','sun-java6-jre',])
Exemplo n.º 7
0
def save_as_ami(name, arch='i386'):
	config = get_provider_dict()
	# Copy pk and cert to /tmp, somehow
	fabric.api.put(fabric.api.env.conf['AWS_X509_PRIVATE_KEY'], '/tmp/pk.pem')
	fabric.api.put(fabric.api.env.conf['AWS_X509_CERTIFICATE'], '/tmp/cert.pem')
	
	fabric.contrib.files.sed('/etc/apt/sources.list', 'universe$', 'universe multiverse', use_sudo=True)
	package_update()
	package_install('ec2-ami-tools', 'ec2-api-tools')
	
	fabric.api.sudo('ec2-bundle-vol -c /tmp/cert.pem -k /tmp/pk.pem -u %s -s 10240 -r %s' % (fabric.api.env.conf['AWS_ID'], arch))
	fabric.api.sudo('ec2-upload-bundle -b %s -m /tmp/image.manifest.xml -a %s -s %s --location %s' % (fabric.api.env.conf['AWS_AMI_BUCKET'], fabric.api.env.conf['AWS_ACCESS_KEY_ID'], fabric.api.env.conf['AWS_SECRET_ACCESS_KEY'], config['location'][:-1]))
	result = fabric.api.sudo('ec2-register -C /tmp/cert.pem -K /tmp/pk.pem --region %s %s/image.manifest.xml -n %s' % (config['location'][:-1], fabric.api.env.conf['AWS_AMI_BUCKET'], name))
	fabric.api.run('rm /tmp/pk.pem')
	fabric.api.run('rm /tmp/cert.pem')
	
	ami = result.split()[1]
Exemplo n.º 8
0
def save_as_ami(name, region_id=None, arch='i386'):
	PROVIDER = get_provider_dict()
	if not region_id:
		region_id = PROVIDER['region_id']
	
	# Copy pk and cert to /tmp, somehow
	fabric.api.put(fabric.api.env.conf['AWS_X509_PRIVATE_KEY'], '/tmp/pk.pem')
	fabric.api.put(fabric.api.env.conf['AWS_X509_CERTIFICATE'], '/tmp/cert.pem')
	
	# Edit the sources list to include ec2 tools
	fabric.contrib.files.sed('/etc/apt/sources.list', 'universe$', 'universe multiverse', use_sudo=True)
	package_update()
	package_install('ec2-ami-tools', 'ec2-api-tools')
	
	# Bundle the volume
	fabric.api.sudo(
		'ec2-bundle-vol -c /tmp/cert.pem -k /tmp/pk.pem -u %s -s 10240 -r %s' % (
			fabric.api.env.conf['AWS_ID'], arch))
	fabric.api.sudo(
		'ec2-upload-bundle -b %s -m /tmp/image.manifest.xml -a %s -s %s --location %s' % (
			fabric.api.env.conf['AWS_AMI_BUCKET'], 
			_get_access_secret_keys(), 
			#fabric.api.env.conf['AWS_ACCESS_KEY_ID'], 
			#fabric.api.env.conf['AWS_SECRET_ACCESS_KEY'], 
			region_id))
	
	# Register the key
	result = fabric.api.sudo(
		'ec2-register -C /tmp/cert.pem -K /tmp/pk.pem --region %s %s/image.manifest.xml -n %s' % (
			region_id, 
			fabric.api.env.conf['AWS_AMI_BUCKET'], 
			name))
	
	# Remove the temp files
	fabric.api.run('rm /tmp/pk.pem')
	fabric.api.run('rm /tmp/cert.pem')
	
	# Return the ami object
	ami = result.split()[1]
	return ami