infochimps-labs / ironfan

Chef orchestration layer -- your system diagram come to life. Provision EC2, OpenStack or Vagrant without changes to cookbooks or configuration
http://infochimps.com
Other
502 stars 102 forks source link

Multi Cloud Support in Ironfan #141

Closed jessehu closed 12 years ago

jessehu commented 12 years ago

Hi @mrflip,

VMware had created a new project VMware Serengeti Ironfan (a fork of Ironfan project) to enable Ironfan work with VMware vSphere 5.0 (in addition to EC2) and support multi various cloud providers easily and gracefully. VMware Serengeti Ironfan now supports two kinds of cloud providers: vSphere and EC2.

In VMware Serengeti Ironfan, each cloud provider has a seperate folder to contain the necessary model classes: Cloud, Cluster, Facet, Server, ServerSlice. For example, cloud provider for vSphere has a folder (lib/ironfan/vsphere) which contains 5 files, and each file defines a model class for vSphere cloud. If you want to add a new cloud provider, create a folder and the model classes for it, override necessary methods defined in the base model classes. Please take vSphere cloud provider as an example when writing new cloud provider. You can see a brief introduction of multi cloud providers support here.

Here is the main code change for support multi cloud providers in VMware Serengeti Ironfan: https://github.com/vmware-serengeti/ironfan/commit/5f37acf0b7fbf4f45b0931e5c8c5ce12b2ed19da#diff-11 . If it's possible to contribute multi cloud providers support code or other code back to Infochimps' Ironfan, please kindly let me know :)

Thanks, Jesse

temujin9 commented 12 years ago

@jessehu :

This couldn't have come at a better time; thank you very much. It's a rather large set of changes, so I'll be pulling it in and testing it in a side-branch, but it's going to get immediate exercise. It's my hope that we can get it worked back into the mainline for v3.2, which will hopefully allow Serengeti Ironfan to be a much closer relative of Infochimps Ironfan.

Down the line, I'm pushing for a refactor of the underlying engine, to better describe the interaction between components in a true multi-cloud environment. It involves turning the DSL from an active interpreter into a static model, which is then one of the parts of a large state machine with cloud-specific transition decorators (so that EC2 can provide an SSH key escrow, without requiring every provider to pretend to know how to). I'd be interested in getting your feedback and testing help when that time comes.

It's probably no great surprise that we're excited about Serengeti. Let me know if there's anything we can do to help VMware with further usage of our code.

temujin9 commented 12 years ago

@jessehu We've just released the v4.x branch, with our first firm stab at true multicloud. I'll be contacting you and other stakeholders in the coming weeks, to work on solidifying the provider interface in code, and help with retooling Serengeti to v4.x compatibility. Thanks for helping provide incentive for this refactor!