This was a good read, I think the simpler vApp method makes sense for an 
infrastructure tool. And could be a great opportunity to rework projects into a 
more useful system.

I would not want to make the blueprints too complex, but my main issue with 
vApp methodology is how a vApp is completely self-contained. They eat up 
storage like mad, when they should really just be a collection of existing 
provisioning resources and templates.

Example:

A vApp when created copies the included VM temples to create a larger template. 
It would be better for our blueprints to simply point to the included templates 
like 'symlinks'. Providing almost zero increase to storage(only meta-data) and 
making the feature seriously competitive.

The main logistics issue would be ensuring a blueprint health check incase 
someone deletes the linked templates underneath. Or maybe a dependancy error 
when someone tries to remove a template that's linked to one or more 
blueprints. This error could inform the admin that the template is in use by a 
blueprint that must be deleted first.

Thanks

Sent from my iPhone

On Jan 16, 2013, at 11:51 PM, Chris Sears <chris.x.se...@sungard.com> wrote:

> After reading up a bit more on AWS CloudFormation [1] and OpenStack's
> work-alike Heat [2], they actually differ quite a bit from VMware vApps. I
> thought it might be worth talking about some of the differences.
> 
> CloudFormation is a general purpose provisioning system for AWS services,
> but under the hood, it's essentially a workflow engine (similar to vCenter
> Orchestrator or HP Operations Orchestrator). The problem CloudFormation is
> solving is runbook automation, where you might have a 20 step process for
> deploying an app into AWS that you want to completely automate. It competes
> with tools like Puppet and Chef (although they can work together).
> 
> The templates used by CloudFormation are less config files and more like
> scripts or XSLT. They include variables, user inputs, outputs, flow
> control, and a small standard library of functions. [3] Templates require
> testing and debugging. It's possible to have run-time bugs related to a
> wait condition that cause a deadlock and trigger a rollback.
> 
> When you execute a CloudFormation template, the resulting set of
> provisioned resources is called a "stack". A stack could be a multi-tier
> app with several VMs, but it could also be 3 empty VPCs, an SNS queue, and
> an IAM user. If we follow a similar convention, a stack would not
> necessarily map onto a project. A stack might include VMs in multiple
> projects. Or no VMs at all.
> 
> To extend the workflow coordination and configuration capabilities into the
> guest OS, CloudFormation provides a set of helper scripts that can fill a
> similar roll as cloud-init, creating files and running commands with
> content and arguments dynamically generated from the template. [4]
> 
> It helped me to look at some real templates to understand everything that
> CloudFormation was doing. Here are a couple examples... (the first
> provisions an Active Directory server, the second creates an instance of
> OpenShift)
> https://s3.amazonaws.com/cloudformation-templates-us-east-1/Windows_Single_Server_Active_Directory.template
> https://github.com/openstack/heat/blob/master/templates/OpenShift.template
> 
> By contrast, vApps are much simpler. They are effectively just a collection
> of one or more VMs, their associated network settings and some limited
> additional metadata. You can start and stop a vApp. You can import or
> export a vApp as an OVF file if you wanted to move it from one cloud to
> another. A vApp could roughly map to a project.
> 
> To me, it sounds like we need vApps, with some limited features of
> CloudFormation. Just enough to enable a user experience of clicking a
> "Launch Blueprint" button and having everything magically provisioned, like
> AWS does here:
> http://aws.amazon.com/cloudformation/aws-cloudformation-templates/
> 
> Thoughts?
> 
> - Chris
> 
> [1]: http://aws.amazon.com/cloudformation/faqs/
> [2]: https://github.com/openstack/heat
> [3]:
> http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-anatomy.html
> [4]:
> http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-helper-scripts-reference.html
> 
> 
> On Wed, Jan 16, 2013 at 1:59 PM, Mohammad Nour El-Din <
> nour.moham...@gmail.com> wrote:
> 
>> Hi
>> 
>> Sent from my Samsung Galaxy S3
>> Apologies for any typos
>> On Jan 16, 2013 6:01 PM, "Shane Witbeck" <sh...@digitalsanctum.com> wrote:
>>> 
>>> +1 for YAML. After all, YAML is a superset of JSON [1] which is the
>> primary objective of the 1.2 spec.
>>> 
>>> Here are my pros and cons:
>>> 
>>> Pros:
>>> - relational anchors and aliases (potential here for less verbosity
>> through reuse)
>>> - more readable
>>> - comments
>>> - projects which I respect, choose yaml over json for similar types of
>> configuration [2], [3]
>>> 
>>> Cons:
>>> - more complex to parse, less mature libraries compared to json
>>> 
>>> All this being said, I would advocate that more initial focus should be
>> on the "model" and how it solves the problem of defining the "blueprint".
>> Serialization format discussion should be secondary and around whatever
>> best fits the model, not the other way around.
>> 
>> +1 on that
>> 
>>> 
>>> 
>>> [1] http://yaml.org/spec/1.2/spec.html#id2759572
>>> [2]
>> http://www.elasticsearch.org/guide/reference/setup/configuration.html
>>> [3]
>> https://github.com/cloudfoundry/bosh-release/blob/master/micro/aws.yml
>>> 
>>> 
>>> --
>>> Shane Witbeck
>>> 
>>> 
>>> On Thursday, January 10, 2013 at 1:20 PM, Kelcey Damage (BT) wrote:
>>> 
>>>> +1 for YAML, I find JSON good for when I never look at the data and
>> simply pass to a Python dictionary, however for interaction I am going to
>> back the YAML choice.
>>>> 
>>>> KELCEY DAMAGE
>>>> Infrastructure Systems Architect
>>>> www.backbonetechnology.com (http://www.backbonetechnology.com)
>>>> 
>> -------------------------------------------------------------------------
>>>> kel...@backbonetechnology.com (mailto:kel...@backbonetechnology.com)
>>>> 
>>>> address: 55 East 7th Ave, Vancouver, BC, V5T 1M4
>>>> tel: +1 604 713 8560 ext:114
>>>> fax: +1 604 605 0964
>>>> skype: kelcey.damage
>>>> 
>>>> 
>>>> 
>>>>> -----Original Message-----
>>>>> From: Alex Heneveld [mailto:alex.henev...@cloudsoftcorp.com]
>>>>> Sent: Wednesday, January 09, 2013 4:39 PM
>>>>> To: cloudstack-dev@incubator.apache.org (mailto:
>> cloudstack-dev@incubator.apache.org)
>>>>> Cc: Min Chen
>>>>> Subject: Re: [DISCUSS] PaaS Enablement: Composite Application
>> Blueprints
>>>>> (#576)
>>>>> 
>>>>> 
>>>>> Hi Min, Jie,
>>>>> 
>>>>> Min, nice questions. I've given my answers in-line.
>>>>> 
>>>>> Jie, my answers also respond to some of your points, re TOSCA and
>>>>> YAML/JSON.
>>>>> 
>>>>> 
>>>>> On 08/01/2013 17:50, Min Chen wrote:
>>>>>> +1 on this feature to extend CloudStack from pure IaaS to PaaS or
>> SaaS
>>>>>> area. Some questions in my mind:
>>>>>> 
>>>>>> 1) Does your proposed blueprint only contain functional component
>>>>>> description or contain both functional and deployment aspects? For
>>>>>> example, for a 3-tier app containing three functional components
>> like
>>>>>> web tier, server, and DB, users can define different deployment
>> models
>>>>>> for the same functional components, like small deployment
>> (co-hosting
>>>>>> all components on one VM), or medium or large deployment.
>>>>>> 
>>>>> 
>>>>> Great use case. Introduces a _lot_ of complexity:
>>>>> 
>>>>> (1) allow parameters to be passed to the blueprint (e.g. "size")
>>>>> (2) separate the components that are to be created from the
>> customizations
>>>>> performed
>>>>> (so you could define customizations for webserver, appserver, and
>> data,
>>>>> then either
>>>>> apply the customizations either to a single VM (small), distinct VM's
>>>>> (medium),
>>>>> or distinct VM groups (large))
>>>>> (3) allow blueprints to refer to other blueprints
>>>>> (so the "webserver customization" lives as its own reusable module)
>>>>> (4) allow conditional branching based on parameters
>>>>> (e.g. if user selects "size=small" then run all customisations on
>> single VM)
>>>>> 
>>>>> I'd be inclined to DEFER them as features, until phase 2 or 3, but we
>> should
>>>>> consider how the description might support them as I'd like to see
>> some of
>>>>> this functionality eventually.
>>>>> 
>>>>> What do other people think? This is obvious functionality to want,
>> what's the
>>>>> right way to support it but without making the description language
>>>>> complicated?
>>>>> 
>>>>> (BTW one of the reasons I think TOSCA could be a good choice is that
>> it has
>>>>> considered many of these. You can define properties (1 above),
>> arbitrary
>>>>> nodes (2), and references to other definitions (3). It also has the
>> concepts of
>>>>> requirements / capabilities, relationships, policies, and plans --
>> some of which
>>>>> could be used to support (4)
>>>>> eventually.)
>>>>> 
>>>>>> 2) Have you thought of creating Service offerings from your defined
>>>>>> blueprints? This may allow CloudStack to provide some SaaS
>> functionalities.
>>>>>> 
>>>>> 
>>>>> I like this idea, although it might break assumptions made elsewhere
>> about
>>>>> service offerings so we should look at it carefully.
>>>>> 
>>>>>> 3) As for blueprint description language, easy-to-read and
>>>>>> easy-to-edit by human being should be necessary if we don't provide
>>>>>> any visual GUI tools to create/edit a blueprint. I have seen some
>> JSON
>>>>>> format before in BMC Cloud LifeCycle product 2.0.
>>>>>> 
>>>>> 
>>>>> Wow JSON seems popular so far. And yet YAML is more concise and
>>>>> expressive. Designed to be easy for people to read and write
>> configuration
>>>>> just like this. Whereas JSON is designed for serializing objects, in
>> a way that
>>>>> isn't too hard for people. YAML seems the right language for this
>> purpose to
>>>>> me -- and my experience has been that it is easier to read and to
>> write,
>>>>> without the litter of curly braces and quotes.
>>>>> 
>>>>> But I don't want to be a language bigot! I can go with JSON if that's
>> what
>>>>> people want. :)
>>>>> 
>>>>>> 4) For a multi-tier application, blueprint should not only describe
>>>>>> different components, but also connections among those components,
>>>>>> like open port, LB and FW rules among them. I assume that your
>>>>>> blueprint is also taking that into consideration, and your backend
>>>>>> orchestration layer can provide enough flexibility to provision any
>>>>>> such app, seems not an easy task to me since I am new to CS.
>>>>>> 
>>>>> 
>>>>> Yeah, this is where it gets interesting. A common trick I've seen is
>> to use
>>>>> hostnames for a lot of the connection configuration, and have a few
>> hard-
>>>>> coded patterns in there (e.g. for groups, load-balancers). But that
>> only gets
>>>>> you so far, and then you hit a wall (or spin up a different
>> orchestrator).
>>>>> 
>>>>> Using requirements/capabilities and typed relationships gives a much
>> more an
>>>>> elegant solution. (Not necessarily TOSCA, but these concepts are well
>>>>> developed there!)
>>>>> 
>>>>> In any case let's make sure the use cases include interesting
>> situations like
>>>>> this, and we can compare approaches. This absolutely DOES need to be
>> in
>>>>> phase 1 I think.
>>>>> 
>>>>>> 5) From a normal user perspective, I would really love to see a GUI
>>>>>> tool developed around this to allow user to visually create/edit a
>>>>>> multi-tier app blueprint instead of using a TextEditor.
>>>>>> 
>>>>> 
>>>>> Nice to hear. Me too. The description, API, and backend come first,
>> with an
>>>>> initial set of features, but I'd love to see the GUI in phase 2.
>>>>> 
>>>>>> Thanks
>>>>>> -min
>>>>>> 
>>>>> 
>>>>> Keep it coming please.
>>>>> 
>>>>> --Alex
>>> 
>> 

Reply via email to