Example)
create_floatingip_instance.yaml
heat_template_version: 2015-10-15
description: Simple template to deploy a single compute instance
parameters:
  image:
    type: string
    label: Image name or ID
    description: Image to be used for compute instance
    default: cirros
  flavor:
    type: string
    label: Flavor
    description: Type of instance (flavor) to be used
    default: m1.small
  private_network:
    type: string
    label: Private network name or ID
    description: Network to attach instance to.
    default: demo_private
  private_subnet:
    type: string
    default: 29801943-a259-4580-a5d6-b8d387991b6a
    description: Id of the private sub network for the compute server
  public_network:
    type: string
    label: Public network name or ID
    default: public
    description: Id of the public network for the compute server 
resources:
  my_instance:
    type: OS::Nova::Server
    properties:
      name: Heat_VM
      image: { get_param: image }
      flavor: { get_param: flavor }
      networks:
        - port: { get_resource: my_instance_port }
        
  my_instance_port:
    type: OS::Neutron::Port
    properties:
      network_id: { get_param: private_network }
      fixed_ips:
        - subnet_id: { get_param: private_subnet }
  floating_ip:
    type: OS::Neutron::FloatingIP
    properties:
      floating_network: { get_param: public_network }
      port_id: { get_resource: my_instance_port }
outputs:
  instance_private_ip:
    description: IP address of the instance
    value: { get_attr: [my_instance, first_address] }
  instance_public_ip:
    description: IP address of the instance
    value: { get_attr: [floating_ip, floating_ip_address] }