heat_template_version: 2016-10-14 description: OpenShift cluster server parameters: name: type: string label: Name description: Name group: type: string label: Host Group description: The Primary Ansible Host Group default: host cluster_env: type: string label: Cluster environment description: Environment of the cluster cluster_id: type: string label: Cluster ID description: Identifier of the cluster type: type: string label: Type description: Type master or node subtype: type: string label: Sub-type description: Sub-type compute or infra for nodes, default otherwise default: default key_name: type: string label: Key name description: Key name of keypair image: type: string label: Image description: Name of the image flavor: type: string label: Flavor description: Name of the flavor net: type: string label: Net ID description: Net resource net_name: type: string label: Net name description: Net name {% if not provider_network %} subnet: type: string label: Subnet ID description: Subnet resource {% endif %} secgrp: type: comma_delimited_list label: Security groups description: Security group resources {% if not provider_network %} floating_network: type: string label: Floating network description: Network to allocate floating IP from {% endif %} availability_zone: type: string description: The Availability Zone to launch the instance. default: nova volume_size: type: number description: Size of the volume to be created. default: 1 constraints: - range: { min: 1, max: 1024 } description: must be between 1 and 1024 Gb. node_labels: type: json description: OpenShift Node Labels default: {"region": "default" } outputs: name: description: Name of the server value: { get_attr: [ server, name ] } private_ip: description: Private IP of the server value: get_attr: - server - addresses - { get_param: net_name } - 0 - addr floating_ip: description: Floating IP of the server value: get_attr: - server - addresses - { get_param: net_name } {% if provider_network %} - 0 {% else %} - 1 {% endif %} - addr resources: server: type: OS::Nova::Server properties: name: { get_param: name } key_name: { get_param: key_name } image: { get_param: image } flavor: { get_param: flavor } networks: {% if use_trunk_ports|default(false)|bool %} - port: { get_attr: [trunk-port, port_id] } {% else %} - port: { get_resource: port } {% endif %} user_data: get_file: user-data user_data_format: RAW user_data_update_policy: IGNORE metadata: group: { get_param: group } environment: { get_param: cluster_env } clusterid: { get_param: cluster_id } host-type: { get_param: type } sub-host-type: { get_param: subtype } node_labels: { get_param: node_labels } {% if use_trunk_ports|default(false)|bool %} trunk-port: type: OS::Neutron::Trunk properties: name: { get_param: name } port: { get_resource: port } {% endif %} port: type: OS::Neutron::Port properties: network: { get_param: net } {% if not provider_network %} fixed_ips: - subnet: { get_param: subnet } {% endif %} security_groups: { get_param: secgrp } {% if not provider_network %} floating-ip: type: OS::Neutron::FloatingIP properties: floating_network: { get_param: floating_network } port_id: { get_resource: port } {% endif %} {% if not ephemeral_volumes|default(false)|bool %} cinder_volume: type: OS::Cinder::Volume properties: size: { get_param: volume_size } availability_zone: { get_param: availability_zone } volume_attachment: type: OS::Cinder::VolumeAttachment properties: volume_id: { get_resource: cinder_volume } instance_uuid: { get_resource: server } mountpoint: /dev/sdb {% endif %}