teamcity.jinja (79 lines of code) (raw):
{% set BASE_NAME = env['deployment'][:40] %}
{%- if not properties['domainName'] %}
{%- set ENABLE_HTTPS = false %}
{%- else %}
{%- set ENABLE_HTTPS = true %}
{%- endif %}
resources:
- name: database
type: database.jinja
properties:
baseName: {{ BASE_NAME }}
zone: {{ properties['zone'] }}
size: {{ properties['installationSize'] }}
{%- if not properties['network'] %}
- name: network
type: network.jinja
properties:
baseName: {{ BASE_NAME }}
enableHttps: {{ ENABLE_HTTPS }}
{%- endif %}
{%- if not properties['serviceAccount'] %}
- name: service-account
type: service-account.jinja
properties:
baseName: {{ BASE_NAME }}
{%- endif %}
{%- if properties['createStorageBucket'] %}
- name: storage
type: storage.jinja
properties:
baseName: {{ BASE_NAME }}
zone: {{ properties['zone'] }}
{%- endif %}
- name: vm
type: virtual-machine.jinja
properties:
baseName: {{ BASE_NAME }}
zone: {{ properties['zone'] }}
teamcityVersion: {{ properties['version'] }}
ipAddress: {{ properties['ipAddress'] }}
enableHttps: {{ ENABLE_HTTPS }}
{%- if ENABLE_HTTPS %}
domainName: {{ properties['domainName'] }}
domainOwnerEmail: {{ properties['domainOwnerEmail'] }}
{%- endif %}
{%- if properties['network'] %}
network: {{ properties['network'] }}
{%- else %}
network: $(ref.network.name)
{%- endif %}
subnetwork: {{ properties['subnetwork'] }}
size: {{ properties['installationSize'] }}
{%- if properties['serviceAccount'] %}
serviceAccount: {{ properties['serviceAccount'] }}
{%- else %}
serviceAccount: $(ref.service-account.email)
{%- endif %}
database:
instance: $(ref.database.instance)
name: $(ref.database.name)
user: $(ref.database.user)
waiter:
name: $(ref.waiter.name)
config: $(ref.waiter.config)
- name: waiter
type: waiter.jinja
properties:
baseName: {{ BASE_NAME }}
ipAddress: $(ref.vm.ip)
enableHttps: {{ ENABLE_HTTPS }}
outputs:
- name: teamcityUrl
{%- if ENABLE_HTTPS %}
value: https://{{ properties['domainName'] }}
{%- else %}
value: http://$(ref.vm.ip)
{%- endif %}
- name: teamcityIpAddress
value: $(ref.vm.ip)