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]
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()
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()
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, ''))
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,''))
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',])
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]
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