heat_template_version: 2014-10-16 description: My first stack parameters: gitlab_root_password: type: string description: The administrator password used to login GitLab. default: gitlab.nctucs.net key_name: type: string description: Name of keypair to assign to servers default: gitlab_key image: type: string description: Name of image to use for servers default: Ubuntu14.04 flavor: type: string description: Flavor to use for servers default: 1core2GBmemory20GBdisk public_net: type: string description: > ID or name of public network for which floating IP addresses will be allocated default: net04_ext private_net_name: type: string description: Name of private network to be created default: gitlab_subnet private_net_cidr: type: string description: Private network address (CIDR notation) default: 192.168.0.0/24 private_net_dns_nameservers: type: comma_delimited_list description: Private network dns server default: [ "140.113.1.1", "8.8.8.8"] resources: wait_condition: type: OS::Heat::WaitCondition properties: handle: { get_resource: wait_handle } timeout: 43200 wait_handle: type: OS::Heat::WaitConditionHandle my_key: type: OS::Nova::KeyPair properties: save_private_key: true name: gitlab_key server1: type: OS::Nova::Server properties: name: GitLab_Server image: { get_param: image } flavor: { get_param: flavor } key_name: { get_resource: my_key } admin_user: ubuntu networks: - port: { get_resource: server1_port } user_data: str_replace: template: get_file: gitlab_user_data.sh params: $INSTANCE_FLOATING_IP: { get_attr: [ server1_floating_ip, floating_ip_address ] } $GITLAB_ROOT_PASSWORD: { get_param: gitlab_root_password } wc_notify: { get_attr: [wait_handle, curl_cli] } user_data_format: RAW server1_port: type: OS::Neutron::Port properties: network_id: 59b143a7-7d97-4e56-a213-42359395892e fixed_ips: - subnet_id: bbffe3bc-6847-44cd-a9da-8702e570fa50 server1_floating_ip: type: OS::Neutron::FloatingIP properties: floating_network: { get_param: public_net } port_id: { get_resource: server1_port } server2: type: OS::Nova::Server properties: name: Runner_Server image: { get_param: image } flavor: { get_param: flavor } key_name: {get_resource: my_key } networks: - port: { get_resource: server2_port } user_data: str_replace: template: get_file: runner_user_data.sh params: $GITLAB_IP: { get_attr: [ server1_floating_ip, floating_ip_address ] } $REGISTRATION_TOKEN: { 'Fn::Select': ['registration token', { get_attr: [wait_condition, data] }] } user_data_format: RAW server2_port: type: OS::Neutron::Port properties: network_id: 59b143a7-7d97-4e56-a213-42359395892e fixed_ips: - subnet_id: bbffe3bc-6847-44cd-a9da-8702e570fa50 outputs: server1_private_ip: description: IP address of server1 in private network value: { get_attr: [ server1, first_address ] } server1_public_ip: description: Floating IP address of server1 in public network value: { get_attr: [ server1_floating_ip, floating_ip_address ] } server2_private_ip: description: IP address of server2 in private network value: { get_attr: [ server2, first_address ] } private_key: description: Private key value: { get_attr: [ my_key, private_key ] }