def bundle(rootfs, region, bucket=None, size=10, filesystem='ext4'): _get_amitools_path() pems = _get_pem_paths() log.info('creating loopback, formatting and mounting') image_path = rootfs + '.img' image_mount = rootfs + '.img.mount' utils.mkdir(image_mount) executil.system('dd if=/dev/null of=%s bs=1 seek=%dG' % (image_path, size)) executil.system('mkfs.' + filesystem, '-F', '-j', image_path) executil.system('mount -o loop', image_path, image_mount) log.info('syncing rootfs to loopback') utils.rsync(rootfs, image_mount) log.debug('umounting loopback') executil.system('umount', '-d', image_mount) os.removedirs(image_mount) log.debug('getting unique ami name') app = utils.get_turnkey_version(rootfs) ami_name = utils.get_uniquename(region, app + '.s3') log.info('target ami_name - %s ', ami_name) log.info('bundling loopback into ami') arch = utils.parse_imagename(ami_name)['architecture'] _bundle_image(region, image_path, ami_name, arch, pems) os.remove(image_path) log.info('uploading bundled ami') bucket = bucket if bucket else "turnkeylinux-" + region _bundle_upload(region, ami_name, bucket) log.info("complete - %s %s", bucket, ami_name) return bucket, ami_name
def register(ami_name, region, bucket=None, desc=None, arch=None): desc = desc if desc else utils.parse_imagename(ami_name)['url'] bucket = bucket if bucket else "turnkeylinux-" + region image_location = os.path.join(bucket, ami_name + ".manifest.xml") log.debug('registering image - %s', image_location) conn = utils.connect(region) ami_id = conn.register_image(name=ami_name, description=desc, image_location=image_location) log.info('registered image - %s %s', ami_id, image_location) return ami_id
def register(snapshot_id, region, size=None, arch=None, name=None, desc=None): conn = utils.connect(region) log.debug('getting snapshot - %s', snapshot_id) snapshot = conn.get_all_snapshots(snapshot_ids=[snapshot_id])[0] size = size if size else snapshot.volume_size name = name if name else snapshot.description desc = desc if desc else utils.parse_imagename(name)['url'] arch = arch if arch else utils.parse_imagename(name)['architecture'] kernel_id = utils.get_kernel(region, arch) arch_ec2 = "x86_64" if arch == "amd64" else arch log.debug('creating block_device_map') rootfs = BlockDeviceType() rootfs.delete_on_termination = True rootfs.size = size rootfs.snapshot_id = snapshot_id ephemeral = BlockDeviceType() ephemeral.ephemeral_name = 'ephemeral0' block_device_map = BlockDeviceMapping() block_device_map['/dev/sda1'] = rootfs block_device_map['/dev/sda2'] = ephemeral log.debug('registering image - %s', name) ami_id = conn.register_image( name=name, description=desc, architecture=arch_ec2, kernel_id=kernel_id, root_device_name="/dev/sda1", block_device_map=block_device_map) log.info('registered image - %s %s %s', ami_id, name, region) return ami_id
def register(ami_name, region, bucket=None, desc=None, arch=None): desc = desc if desc else utils.parse_imagename(ami_name)['url'] bucket = bucket if bucket else "turnkeylinux-" + region image_location = os.path.join(bucket, ami_name + ".manifest.xml") log.debug('registering image - %s', image_location) conn = utils.connect(region) ami_id = conn.register_image( name=ami_name, description=desc, image_location=image_location) log.info('registered image - %s %s', ami_id, image_location) return ami_id
def register(snapshot_id, region, size=None, arch=None, name=None, desc=None): conn = utils.connect(region) log.debug('getting snapshot - %s', snapshot_id) snapshot = conn.get_all_snapshots(snapshot_ids=[snapshot_id])[0] size = size if size else snapshot.volume_size name = name if name else snapshot.description desc = desc if desc else utils.parse_imagename(name)['url'] arch = arch if arch else utils.parse_imagename(name)['architecture'] kernel_id = utils.get_kernel(region, arch) arch_ec2 = "x86_64" if arch == "amd64" else arch log.debug('creating block_device_map') rootfs = BlockDeviceType() rootfs.delete_on_termination = True rootfs.size = size rootfs.snapshot_id = snapshot_id ephemeral = BlockDeviceType() ephemeral.ephemeral_name = 'ephemeral0' block_device_map = BlockDeviceMapping() block_device_map['/dev/sda1'] = rootfs block_device_map['/dev/sda2'] = ephemeral log.debug('registering image - %s', name) ami_id = conn.register_image(name=name, description=desc, architecture=arch_ec2, kernel_id=kernel_id, root_device_name="/dev/sda1", block_device_map=block_device_map) log.info('registered image - %s %s %s', ami_id, name, region) return ami_id