[openstack-dev] [Heat] Long-term, how do we make heat image/flavor name agnostic?

Steve Baker sbaker at redhat.com
Wed Jul 17 22:00:40 UTC 2013


On 07/18/2013 08:53 AM, Gabriel Hurley wrote:
> I spent a bunch of time working with and understanding Heat in H2, and I find myself with one overarching question which I wonder if anyone's thought about or even answered already...
>
> At present, the CloudFormation template format is the first-class means of doing things in Heat. CloudFormation was created for Amazon, and Amazon has this massive convenience of having a (more or less) static list of images and flavors that they control. Therefore in CloudFormation everything is specified by a unique, specific name.
>
> OpenStack doesn't have this luxury. We have as many image and flavor names as we have deployments. Now, there are simple answers...
>
>   1. Name everything the way Amazon does, or
>   2. Alter your templates.
>
> But personally, I don't like either of these options. I think in the long term we win at platform/ecosystem by making it possible to take a template off the internet and having it work on *any* OpenStack cloud.
>
> To get there, we need a system that chooses images based on metadata (platform, architecture, distro) and flavors based on actual minimum requirements.
>
> Has anyone on the Heat team thought about this? Are there efforts in the works to alleviate this? Am I missing something obvious?
>
Yes, each openstack cloud could have completely different flavors and
images available. My current approach is to not have a Mappings section
at all and just specify the flavor and image on launch, ie:

Parameters:
  KeyName:
    Type: String
  InstanceType:
    Type: String
  ImageId:
    Type: String
...
Resources:
  SmokeServer:
    Type: AWS::EC2::Instance
    Properties:
      ImageId: {Ref: ImageId}
      InstanceType: {Ref: InstanceType}
      KeyName: {Ref: KeyName}
...

InstanceType and ImageId could even be specified in the environment file
that is specified on launch, so they don't need to be specified in the
launch command, ie env.yaml:
parameters:
  KeyName: heat_key
  InstanceType: m1.micro
  ImageId: ubuntu-vm-heat-cfntools-tempest

heat stack-create mystack -e env.yaml --template-file=mytemplate.yaml



More information about the OpenStack-dev mailing list