heat_stack_server.yaml.j2 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. heat_template_version: 2016-10-14
  2. description: OpenShift cluster server
  3. parameters:
  4. name:
  5. type: string
  6. label: Name
  7. description: Name
  8. group:
  9. type: string
  10. label: Host Group
  11. description: The Primary Ansible Host Group
  12. default: host
  13. cluster_env:
  14. type: string
  15. label: Cluster environment
  16. description: Environment of the cluster
  17. cluster_id:
  18. type: string
  19. label: Cluster ID
  20. description: Identifier of the cluster
  21. type:
  22. type: string
  23. label: Type
  24. description: Type master or node
  25. subtype:
  26. type: string
  27. label: Sub-type
  28. description: Sub-type compute or infra for nodes, default otherwise
  29. default: default
  30. key_name:
  31. type: string
  32. label: Key name
  33. description: Key name of keypair
  34. image:
  35. type: string
  36. label: Image
  37. description: Name of the image
  38. flavor:
  39. type: string
  40. label: Flavor
  41. description: Name of the flavor
  42. net:
  43. type: string
  44. label: Net ID
  45. description: Net resource
  46. net_name:
  47. type: string
  48. label: Net name
  49. description: Net name
  50. {% if not provider_network %}
  51. subnet:
  52. type: string
  53. label: Subnet ID
  54. description: Subnet resource
  55. {% endif %}
  56. secgrp:
  57. type: comma_delimited_list
  58. label: Security groups
  59. description: Security group resources
  60. {% if not provider_network %}
  61. floating_network:
  62. type: string
  63. label: Floating network
  64. description: Network to allocate floating IP from
  65. {% endif %}
  66. availability_zone:
  67. type: string
  68. description: The Availability Zone to launch the instance.
  69. default: nova
  70. volume_size:
  71. type: number
  72. description: Size of the volume to be created.
  73. default: 1
  74. constraints:
  75. - range: { min: 1, max: 1024 }
  76. description: must be between 1 and 1024 Gb.
  77. node_labels:
  78. type: json
  79. description: OpenShift Node Labels
  80. default: {"region": "default" }
  81. scheduler_hints:
  82. type: json
  83. description: Server scheduler hints.
  84. default: {}
  85. outputs:
  86. name:
  87. description: Name of the server
  88. value: { get_attr: [ server, name ] }
  89. private_ip:
  90. description: Private IP of the server
  91. value:
  92. get_attr:
  93. - server
  94. - addresses
  95. - { get_param: net_name }
  96. - 0
  97. - addr
  98. floating_ip:
  99. description: Floating IP of the server
  100. value:
  101. get_attr:
  102. - server
  103. - addresses
  104. - { get_param: net_name }
  105. {% if provider_network %}
  106. - 0
  107. {% else %}
  108. - 1
  109. {% endif %}
  110. - addr
  111. resources:
  112. server:
  113. type: OS::Nova::Server
  114. properties:
  115. name: { get_param: name }
  116. key_name: { get_param: key_name }
  117. image: { get_param: image }
  118. flavor: { get_param: flavor }
  119. networks:
  120. {% if use_trunk_ports|default(false)|bool %}
  121. - port: { get_attr: [trunk-port, port_id] }
  122. {% else %}
  123. - port: { get_resource: port }
  124. {% endif %}
  125. user_data:
  126. get_file: user-data
  127. user_data_format: RAW
  128. user_data_update_policy: IGNORE
  129. metadata:
  130. group: { get_param: group }
  131. environment: { get_param: cluster_env }
  132. clusterid: { get_param: cluster_id }
  133. host-type: { get_param: type }
  134. sub-host-type: { get_param: subtype }
  135. node_labels: { get_param: node_labels }
  136. scheduler_hints: { get_param: scheduler_hints }
  137. {% if use_trunk_ports|default(false)|bool %}
  138. trunk-port:
  139. type: OS::Neutron::Trunk
  140. properties:
  141. name: { get_param: name }
  142. port: { get_resource: port }
  143. {% endif %}
  144. port:
  145. type: OS::Neutron::Port
  146. properties:
  147. network: { get_param: net }
  148. {% if not provider_network %}
  149. fixed_ips:
  150. - subnet: { get_param: subnet }
  151. {% endif %}
  152. security_groups: { get_param: secgrp }
  153. {% if not provider_network %}
  154. floating-ip:
  155. type: OS::Neutron::FloatingIP
  156. properties:
  157. floating_network: { get_param: floating_network }
  158. port_id: { get_resource: port }
  159. {% endif %}
  160. {% if not ephemeral_volumes|default(false)|bool %}
  161. cinder_volume:
  162. type: OS::Cinder::Volume
  163. properties:
  164. size: { get_param: volume_size }
  165. availability_zone: { get_param: availability_zone }
  166. volume_attachment:
  167. type: OS::Cinder::VolumeAttachment
  168. properties:
  169. volume_id: { get_resource: cinder_volume }
  170. instance_uuid: { get_resource: server }
  171. mountpoint: /dev/sdb
  172. {% endif %}