heat_template_version: 2013-05-23
description: 'Tie OpenStack components together'
parameters:
  KeystoneAdminToken:
    description: Admin Token needed for keystone
    type: string
    hidden: true
  TemplateRoot:
    description: URL Base where all of our templates are available
    type: string
resources:
  RabbitMQ:
    type: AWS::CloudFormation::Stack
    TemplateURL:
      Fn::Join:
        - {get_param: TemplateRoot}
        - rabbitmq.yaml
    parameters:
      InstanceType: m1.small
      KeyName: default
      RabbitMQImage: image-rabbitmq
  MySQL:
    type: AWS::CloudFormation::Stack
    TemplateURL:
      Fn::Join:
        - {get_param: TemplateRoot}
        - mysql.yaml
    parameters:
      InstanceType: m1.small
      KeyName: default
      MySQLImage: image-mysql
  Keystone:
    type: AWS::CloudFormation::Stack
    TemplateURL:
      Fn::Join:
        - {get_param: TemplateRoot}
        - keystone.yaml
    parameters:
      AdminToken: {get_param: KeystoneAdminToken}
      KeyName: default
      KeystoneDSN:
        Fn::Join:
          - 'mysql://keystone:'
          - {get_attr: [ MySQL , KeystonePassword ]}
          - '@'
          - {get_attr: [ MySQL , MySQLHost ]}
          - '/keystone'
  Glance:
    type: AWS::CloudFormation::Stack
    TemplateURL:
      Fn::Join:
        - {get_param: TemplateRoot}
        - glance.yaml
    parameters:
      KeyName: default
      HeatDSN:
        Fn::Join:
          - 'mysql://glance:'
          - {get_attr: [ MySQL, GlancePassword ] }
          - '@'
          - {get_attr: [ MySQL, MySQLHost ]}
          - '/glance'
  Heat:
    type: AWS::CloudFormation::Stack
    TemplateURL:
      Fn::Join:
        - {get_param: TemplateRoot}
        - heat.yaml
    parameters:
      KeyName: default
      HeatDSN:
        Fn::Join:
          - 'mysql://heat:'
          - {get_attr: [ MySQL, HeatPassword ] }
          - '@'
          - {get_attr: [ MySQL, MySQLHost ]}
          - '/heat'
