GithubHelp home page GithubHelp logo

julianpistorius / chromogenic Goto Github PK

View Code? Open in Web Editor NEW

This project forked from cyverse/chromogenic

0.0 2.0 0.0 327 KB

The chromogenic cloud library can be used to create machine images from instances or existing images and make them portable across providers, as well as support for exporting to localized virtualization (i.e. Virtualbox/VMware).

License: Other

Python 99.82% Shell 0.18%

chromogenic's Introduction

Chromogenic

PyPI version

A unified interface for imaging to/from multiple cloud providers.

Chromogenic Features:

Imaging:

  • Create snapshots from instance on Openstack
  • Create images from instance on Openstack
  • Create images from instance on Eucalyptus

Export:

  • [~] Export cloud instance/image to double-click-to-start .ova (Virtualbox Appliance)
  • [~] Export cloud instance/image to stand-alone bootable image
  • Export cloud instance/image to boot hard drive on VMWare (VMDK)
  • Export cloud instance/image to RAW or QCOW2

Migration:

  • Migrate image from Eucalyptus to Openstack
  • Migrate image between Openstack Providers
  • Migrate image between Eucalyptus Providers
  • Migrate image from AWS to Openstack
  • Migrate image from AWS to Eucalyptus

Cleaning:

  • Remove specific data created by deployment in 'Atmosphere'

  • Remove users home directories and non-essential files

  • Empty logs without changing permissions or removing files

  • - Feature complete

  • [~] - Feature in progress

  • - Unsupported feature addressed in future releases

Why use chromogenic?

Cloud computing is 'the next big thing' for IT. Whether you use private clouds on your own servers (Eucalyptus, Openstack) or your running instances on AWS, the idea is the same. You click one button, wait a few minutes ( or less!) and voila, a computer is ready and waiting. Did you just 'rm -rf /' on your instance? No problem, just shut it down and startup a new instance and try it all over again.

Another great benefit to cloud computing is snapshots/imaging, which allows you to save your instance in it's current state and make it available as a new image that you can launch. However, imaging on any cloud provider can be a multi-step, intensive process.

Chromogenic takes all of the complexity out and allows you to run a single command that will do all the heavy lifting behind the scenes.

Creating An Image:

from chromogenic.drivers.openstack import ImageManager

credentials = {
    'username': '',
    'tenant_name': '',
    'password': '',
    'auth_url':'',
    'region_name':''
}
manager = ImageManager(**credentials)

manager.create_image('75fdfca4-d49d-4b2d-b919-a3297bc6d7ae', 'my new name')

Here is whats happening behind the scenes:

What Happens When an Image is Created?:

  • Image is cleaned (see service/imaging/clean.py)
    • User data is removed
    • Atmosphere specific data is removed
    • Log files, history files, and one-time-use files are removed
    • NOTE: These are a lot of system calls, most calls are inline-sed replacements, as well as other system level calls ( truncate -s0 <File> , rm <File> )
  • Additional support available for converting from Xen -> KVM:
    • Image is converted from a 'xen-based' image to a 'kvm-based' image
    • Xen specific modules are removed, KVM specific modules are added in their place
    • The ramdisk includes the required virtio modules to make the image boot on OStack.

ASSUMPTIONS:

  • All commands should be run as root (Because of chroot and mount commands)

  • You should have at least TWICE (2x) as much free space as the size of the image you are going to create, due to the process of Tarring, compressing, and parting the files.

  • Some commands must be run 'within a chroot jail' (see chroot for more information), this is what chroot jail looks like:

  mount -t proc /proc /mnt/proc/
  mount -t sysfs /sys /mnt/sys/
  mount -o bind /dev /mnt/dev/
  <chroot.. Commands run (Installing packages, rebuilding the ramdisk).. Exit>
  umount /mnt/proc/
  umount /mnt/sys/
  umount /mnt/dev/

How to Install

pip install git+git://github.com/cyverse/chromogenic#egg=chromogenic

License

Apache Software License

chromogenic's People

Contributors

jmatt avatar lenards avatar steve-gregory avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.