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 openshift_openstack_provider_network_name %} subnet: type: string label: Subnet ID description: Subnet resource {% endif %} {% if openshift_use_flannel|default(False)|bool %} attach_data_net: type: boolean default: false label: Attach-data-net description: A switch for data port connection data_net: type: string default: '' label: Net ID description: Net resource {% if not openshift_openstack_provider_network_name %} data_subnet: type: string default: '' label: Subnet ID description: Subnet resource {% endif %} {% endif %} secgrp: type: comma_delimited_list label: Security groups description: Security group resources attach_float_net: type: boolean default: true label: Attach-float-net description: A switch for floating network port connection {% if not openshift_openstack_provider_network_name %} floating_network: type: string default: '' 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" } scheduler_hints: type: json description: Server scheduler hints. 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 openshift_openstack_provider_network_name %} - 0 {% else %} - 1 {% endif %} - addr conditions: no_floating: {not: { get_param: attach_float_net} } {% if openshift_use_flannel|default(False)|bool %} no_data_subnet: {not: { get_param: attach_data_net} } {% endif %} 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 openshift_use_flannel|default(False)|bool %} if: - no_data_subnet {% if use_trunk_ports|default(false)|bool %} - - port: { get_attr: [trunk-port, port_id] } {% else %} - - port: { get_resource: port } {% endif %} {% if use_trunk_ports|default(false)|bool %} - - port: { get_attr: [trunk-port, port_id] } {% else %} - - port: { get_resource: port } - port: { get_resource: data_port } {% endif %} {% else %} {% if use_trunk_ports|default(false)|bool %} - port: { get_attr: [trunk-port, port_id] } {% else %} - port: { get_resource: port } {% endif %} {% 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 } scheduler_hints: { get_param: scheduler_hints } {% 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 openshift_openstack_provider_network_name %} fixed_ips: - subnet: { get_param: subnet } {% endif %} security_groups: { get_param: secgrp } {% if openshift_use_flannel|default(False)|bool %} data_port: type: OS::Neutron::Port condition: { not: no_data_subnet } properties: network: { get_param: data_net } port_security_enabled: false {% if not openshift_openstack_provider_network_name %} fixed_ips: - subnet: { get_param: data_subnet } {% endif %} {% endif %} {% if not openshift_openstack_provider_network_name %} floating-ip: condition: { not: no_floating } type: OS::Neutron::FloatingIP properties: floating_network: { get_param: floating_network } port_id: { get_resource: port } {% endif %} {% if not openshift_openstack_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 %}