heat_template_version: 2014-10-16
outputs:
  description: this
  instance_ip_1:
    description: IP address of the instance
    value:
      get_attr:
      - floating_ip_1
      - floating_ip_address
  instance_ip_2:
    description: IP address of the instance
    value:
      get_attr:
      - floating_ip_2
      - floating_ip_address
parameters:
  availability_zone:
    default: compute1
    description: The AvailZone.
    type: string
  private_net_name:
    default: private_network
    type: string
  public_network:
    default: provider_network
    description: Public
    label: Publi_N_ID
    type: string
resources:
  demo1_security_Group:
    properties:
      name: demo1_security_Group
      rules:
      - port_range_max: 22
        port_range_min: 22
        protocol: tcp
      - protocol: icmp
    type: OS::Neutron::SecurityGroup
  floating_ip_1:
    properties:
      floating_network:
        get_param: public_network
    type: OS::Neutron::FloatingIP
  floating_ip_2:
    properties:
      floating_network:
        get_param: public_network
    type: OS::Neutron::FloatingIP
  floating_ip_assoc_1:
    properties:
      floatingip_id:
        get_resource: floating_ip_1
      port_id:
        get_resource: public_port_1
    type: OS::Neutron::FloatingIPAssociation
  floating_ip_assoc_2:
    properties:
      floatingip_id:
        get_resource: floating_ip_2
      port_id:
        get_resource: public_port_2
    type: OS::Neutron::FloatingIPAssociation
  my_instance_1:
    properties:
      availability_zone: nova
      flavor: m1.small
      image: Cirros
      networks:
      - port:
          get_resource: public_port_1
    type: OS::Nova::Server
  my_instance_2:
    properties:
      availability_zone: nova
      flavor: m1.small
      image: Cirros
      networks:
      - port:
          get_resource: public_port_2
    type: OS::Nova::Server
  private_network:
    type: OS::Neutron::Net
  private_subnet:
    properties:
      cidr: 10.10.17.0/24
      dns_nameservers: [ "8.8.8.8" ]
      network_id:  { get_resource: private_network }
    type: OS::Neutron::Subnet
  public_port_1:
    properties:
      fixed_ips:
      - subnet_id:
          get_resource: private_subnet
      network:
        get_resource: private_network
      security_groups:
      - get_resource: demo1_security_Group
    type: OS::Neutron::Port
  public_port_2:
    properties:
      fixed_ips:
      - subnet_id:
          get_resource: private_subnet
      network:
        get_resource: private_network
      security_groups:
      - get_resource: demo1_security_Group
    type: OS::Neutron::Port
  router_1:
    properties:
      external_gateway_info:
        network: { get_param: public_network  }
    type: OS::Neutron::Router
  router_interface:
    properties:
      router_id: { get_resource: router_1 } 
      subnet: { get_resource: private_subnet }
    type: OS::Neutron::RouterInterface
outputs:
    description: 'none'