Skip to content

Instantly share code, notes, and snippets.

@diatmpravin
Created December 12, 2014 11:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save diatmpravin/959a52bee8f95173ed61 to your computer and use it in GitHub Desktop.
Save diatmpravin/959a52bee8f95173ed61 to your computer and use it in GitHub Desktop.
cf-180-deployment.yml
<%
director_uuid = "09615bb6-cbd8-42d1-89a7-3cf324b5395c"
static_ip = "137.172.74.90"
root_domain = "mycloud1.com"
deployment_name = "cf-180"
cf_release = "180"
protocol = "https"
common_password = "c1oudc0w"
stemcell_name = "bosh-openstack-kvm-ubuntu-trusty-go_agent"
%>
compilation:
cloud_properties:
instance_type: m1.medium
network: cf1
reuse_compilation_vms: true
workers: 3
director_uuid: <%= director_uuid %>
jobs:
- instances: 1
name: ha_proxy_z1
networks:
- name: floating
static_ips:
- <%= static_ip %>
- default:
- dns
- gateway
name: cf1
properties:
ha_proxy:
ssl_pem: |
-----BEGIN CERTIFICATE-----
MIID3TCCA0agAwIBAgIJAJ+a0kUJmtWRMA0GCSqGSIb3DQEBBQUAMIGmMQswCQYD
VQQGEwJERTEQMA4GA1UECBMHR2VybWFueTESMBAGA1UEBxMJRGFybXN0YWR0MRMw
EQYDVQQKEwpWZWx1bSBPcmcuMRUwEwYDVQQLEwxDbG91ZEZvdW5kcnkxHzAdBgNV
BAMUFiouMTMwLjgzLjExLjE2OS54aXAuaW8xJDAiBgkqhkiG9w0BCQEWFWpoaWVt
ZXJAY2xvdWRzY2FsZS5kZTAeFw0xNDA0MjcwODU5MTVaFw0xNTA0MjcwODU5MTVa
MIGmMQswCQYDVQQGEwJERTEQMA4GA1UECBMHR2VybWFueTESMBAGA1UEBxMJRGFy
bXN0YWR0MRMwEQYDVQQKEwpWZWx1bSBPcmcuMRUwEwYDVQQLEwxDbG91ZEZvdW5k
cnkxHzAdBgNVBAMUFiouMTMwLjgzLjExLjE2OS54aXAuaW8xJDAiBgkqhkiG9w0B
CQEWFWpoaWVtZXJAY2xvdWRzY2FsZS5kZTCBnzANBgkqhkiG9w0BAQEFAAOBjQAw
gYkCgYEA0QvDshYUmJ38Znrt8GJ/qU0twiGElUgFjvlRLi2O6F/K0mMT+r+8AOi3
f14nUZL8SHym/450G7QE3E2R+04d1UF6WMVRFdLBzx3qGK9lZ619wUcJTUo5da61
H7hRpcLg+nY1V8Esv1SCi0JxBnPmATviv+BqkH3Fdraa3nUSQ6kCAwEAAaOCAQ8w
ggELMB0GA1UdDgQWBBRiG2TA4LBvbPpyUQ/bEDsL4MhxIjCB2wYDVR0jBIHTMIHQ
gBRiG2TA4LBvbPpyUQ/bEDsL4MhxIqGBrKSBqTCBpjELMAkGA1UEBhMCREUxEDAO
BgNVBAgTB0dlcm1hbnkxEjAQBgNVBAcTCURhcm1zdGFkdDETMBEGA1UEChMKVmVs
dW0gT3JnLjEVMBMGA1UECxMMQ2xvdWRGb3VuZHJ5MR8wHQYDVQQDFBYqLjEzMC44
My4xMS4xNjkueGlwLmlvMSQwIgYJKoZIhvcNAQkBFhVqaGllbWVyQGNsb3Vkc2Nh
bGUuZGWCCQCfmtJFCZrVkTAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4GB
AGSULjC7HgBgVIYd5keZ+xp3nT09hV9Y8D/hJVcyP/l82XFJpwW0Eqhijfqr5JIF
I0MI4YxEjTl9jdRWq2D+7L6HDrhfVpKKQIwtKkVo6KyURUkwy/f0kRyjozucE3y9
ukpst7VqkgMItJqxgfQQFCqxCmA7l9pkLoxeO3nLHMn3
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDRC8OyFhSYnfxmeu3wYn+pTS3CIYSVSAWO+VEuLY7oX8rSYxP6
v7wA6Ld/XidRkvxIfKb/jnQbtATcTZH7Th3VQXpYxVEV0sHPHeoYr2VnrX3BRwlN
Sjl1rrUfuFGlwuD6djVXwSy/VIKLQnEGc+YBO+K/4GqQfcV2tpredRJDqQIDAQAB
AoGBAJt3yF7VlRO7y07b9cFlP9RFldZe3x+2pIukV/+j2jhvpYO6M820crmqWW3c
NBmy2vV93yUIaMmBpGvDNOJVQlFSQAftKQup6TW7A0aL0y0EvVxRWUVa9M39Q5nG
chbDUtn42Q55aBBMD2i6XeJGATY8KvwkbKnvOQrhZfJaGONBAkEA+9Bcncdbu2ox
TUn5+gNgc66eECH0WO/PNnZtu8JHaIvS0WlHtNVpKqHrZBKQVfsCeP7tkZKqC51F
PxItn+zthQJBANSFZWfM/qvlONJHqXsH2e4Ov6LyZ7tjG9asiaM/547eZxgEmkcB
1xkM6IKLRWrmNCj356gbtM0cu2buoT5NVNUCQQCocX2ysUukd2mZWNXVrvKTD4h+
JChuYaQLu3a19USNI5MXL8Seq28Y7I0oON7CFRFXXLgP+7qx4DcU9JT+eJ99AkB0
dsISt3GdLBoOir0jMjNI1YZJuwQD2hVoeNdYwm2YiuL+c49EeIqzLLLCz6X0JkHR
bcHjC4Pyn9tHVmDA7sodAkAuh+A4miDDlmEA8gsBH8TdW4xBnUiOAaefW4kEz2Vd
PHNrSDC+J5NMiFLA/uEsQblyYXW5t8rR2bst7ojFb6Sc
-----END RSA PRIVATE KEY-----
networks:
apps: cf1
router:
servers:
z1:
- 0.router-z1.cf1.<%= deployment_name %>.microbosh
z2: []
# static_ips: 10.0.1.20
resource_pool: router_z1
templates:
- name: haproxy
release: cf
- instances: 1
name: nats_z1
networks:
- name: cf1
# static_ips: 10.0.1.22
properties:
networks:
apps: cf1
resource_pool: medium_z1
templates:
- name: nats
release: cf
- name: nats_stream_forwarder
release: cf
- instances: 1
name: etcd_z1
networks:
- name: cf1
# static_ips: 10.0.1.28
persistent_disk: 10024
properties:
networks:
apps: cf1
resource_pool: medium_z1
templates:
- name: etcd
release: cf
- name: etcd_metrics_server
release: cf
- instances: 1
name: logs_z1
networks:
- name: cf1
# static_ips: 10.0.1.21
persistent_disk: 16384
properties:
networks:
apps: cf1
resource_pool: medium_z1
templates:
- name: syslog_aggregator
release: cf
- instances: 1
name: stats_z1
networks:
- name: cf1
properties:
networks:
apps: cf1
resource_pool: small_z1
templates:
- name: collector
release: cf
- instances: 1
name: nfs_z1
networks:
- name: cf1
# static_ips: 10.0.1.23
persistent_disk: 16384
resource_pool: medium_z1
templates:
- name: debian_nfs_server
release: cf
- instances: 1
name: postgres_z1
networks:
- name: cf1
# static_ips: 10.0.1.24
persistent_disk: 10240
resource_pool: medium_z1
templates:
- name: postgres
release: cf
- instances: 1
name: uaa_z1
networks:
- name: cf1
properties:
networks:
apps: cf1
resource_pool: medium_z1
templates:
- name: uaa
release: cf
- instances: 1
name: login_z1
networks:
- name: cf1
properties:
networks:
apps: cf1
resource_pool: medium_z1
templates:
- name: login
release: cf
- instances: 1
name: api_z1
networks:
- name: cf1
persistent_disk: 0
properties:
metron_agent:
zone: z1
networks:
apps: cf1
nfs_server:
address: null
allow_from_entries:
- 10.0.1.0/24
share: null
resource_pool: large_z1
templates:
- name: cloud_controller_ng
release: cf
- name: metron_agent
release: cf
- instances: 1
name: clock_global
networks:
- name: cf1
persistent_disk: 0
properties:
metron_agent:
zone: z1
networks:
apps: cf1
resource_pool: medium_z1
templates:
- name: cloud_controller_clock
release: cf
- name: metron_agent
release: cf
- instances: 1
name: api_worker_z1
networks:
- name: cf1
persistent_disk: 0
properties:
metron_agent:
zone: z1
networks:
apps: cf1
nfs_server:
address: null
allow_from_entries:
- 10.0.1.0/24
share: null
resource_pool: small_z1
templates:
- name: cloud_controller_worker
release: cf
- name: metron_agent
release: cf
- instances: 1
name: hm9000_z1
networks:
- name: cf1
properties:
networks:
apps: cf1
resource_pool: medium_z1
templates:
- name: hm9000
release: cf
- instances: 1
name: runner_z1
networks:
- name: cf1
static_ips: null
properties:
metron_agent:
zone: z1
networks:
apps: cf1
management: cf1
resource_pool: runner_z1
templates:
- name: dea_next
release: cf
- name: dea_logging_agent
release: cf
- name: metron_agent
release: cf
update:
max_in_flight: 1
- instances: 1
name: loggregator_z1
networks:
- name: cf1
# static_ips: 10.0.1.26
properties:
loggregator:
zone: z1
networks:
apps: cf1
resource_pool: medium_z1
templates:
- name: loggregator
release: cf
- instances: 1
name: loggregator_trafficcontroller_z1
networks:
- name: cf1
# static_ips: 10.0.1.27
properties:
networks:
apps: cf1
traffic_controller:
zone: z1
resource_pool: small_z1
templates:
- name: loggregator_trafficcontroller
release: cf
- instances: 1
name: router_z1
networks:
- name: cf1
# static_ips: 10.0.1.25
properties:
metron_agent:
zone: z1
networks:
apps: cf1
resource_pool: router_z1
templates:
- name: gorouter
release: cf
- name: metron_agent
release: cf
meta:
environment: cf
releases:
- name: cf
version: <%= cf_release %>
stemcell:
name: <%= stemcell_name %>
version: latest
name: <%= deployment_name %>
networks:
- name: cf1
type: dynamic
cloud_properties:
security_groups:
- default
- bosh
- cf-private
- cf-public
- ssh
- name: floating
type: vip
cloud_properties: {}
properties:
acceptance_tests: null
app_domains:
- <%= root_domain %>
cc:
app_events:
cutoff_age_in_days: 31
app_usage_events:
cutoff_age_in_days: 31
audit_events:
cutoff_age_in_days: 31
billing_event_writing_enabled: true
broker_client_timeout_seconds: 70
buildpacks:
buildpack_directory_key: <%= root_domain %>-cc-buildpacks
cdn: null
fog_connection: null
bulk_api_password: <%= common_password %>
client_max_body_size: 1536M
db_encryption_key: <%= common_password %>
default_app_disk_in_mb: 1024
default_app_memory: 1024
default_buildpacks:
- name: java_buildpack
package: buildpack_java
- name: ruby_buildpack
package: buildpack_ruby
- name: nodejs_buildpack
package: buildpack_nodejs
- name: go_buildpack
package: buildpack_go
- name: python_buildpack
package: buildpack_python
- name: php_buildpack
package: buildpack_php
default_quota_definition: default
default_running_security_groups:
- public_networks
- dns
default_staging_security_groups:
- public_networks
- dns
development_mode: false
diego: false
directories: null
disable_custom_buildpacks: false
droplets:
cdn: null
droplet_directory_key: <%= root_domain %>-cc-droplets
fog_connection: null
external_host: api
install_buildpacks:
- name: java_buildpack
package: buildpack_java
- name: ruby_buildpack
package: buildpack_ruby
- name: nodejs_buildpack
package: buildpack_nodejs
- name: go_buildpack
package: buildpack_go
- name: python_buildpack
package: buildpack_python
- name: php_buildpack
package: buildpack_php
jobs:
app_bits_packer:
timeout_in_seconds: null
app_events_cleanup:
timeout_in_seconds: null
app_usage_events_cleanup:
timeout_in_seconds: null
blobstore_delete:
timeout_in_seconds: null
blobstore_upload:
timeout_in_seconds: null
droplet_deletion:
timeout_in_seconds: null
droplet_upload:
timeout_in_seconds: null
global:
timeout_in_seconds: 14400
model_deletion:
timeout_in_seconds: null
maximum_app_disk_in_mb: 2048
newrelic:
capture_params: false
developer_mode: false
environment_name: cf
license_key: null
monitor_mode: false
transaction_tracer:
enabled: true
record_sql: obfuscated
packages:
app_package_directory_key: <%= root_domain %>-cc-packages
cdn: null
fog_connection: null
max_package_size: 1073741824
quota_definitions:
default:
memory_limit: 10240
non_basic_services_allowed: true
total_routes: 1000
total_services: 100
resource_pool:
cdn: null
fog_connection: null
resource_directory_key: <%= root_domain %>-cc-resources
security_group_definitions:
- name: public_networks
rules:
- destination: 0.0.0.0-9.255.255.255
protocol: all
- destination: 11.0.0.0-169.253.255.255
protocol: all
- destination: 169.255.0.0-172.15.255.255
protocol: all
- destination: 172.32.0.0-192.167.255.255
protocol: all
- destination: 192.169.0.0-255.255.255.255
protocol: all
- name: dns
rules:
- destination: 0.0.0.0/0
ports: "53"
protocol: tcp
- destination: 0.0.0.0/0
ports: "53"
protocol: udp
srv_api_uri: <%= protocol %>://api.<%= root_domain %>
stacks: null
staging_upload_password: <%= common_password %>
staging_upload_user: <%= common_password %>
system_buildpacks:
- name: java_buildpack
package: buildpack_java
- name: ruby_buildpack
package: buildpack_ruby
- name: nodejs_buildpack
package: buildpack_nodejs
- name: go_buildpack
package: buildpack_go
- name: python_buildpack
package: buildpack_python
- name: php_buildpack
package: buildpack_php
user_buildpacks: []
ccdb:
address: 0.postgres-z1.cf1.<%= deployment_name %>.microbosh
databases:
- name: ccdb
tag: cc
db_scheme: postgres
port: 5524
roles:
- name: ccadmin
password: <%= common_password %>
tag: admin
collector: null
databases:
address: 0.postgres-z1.cf1.<%= deployment_name %>.microbosh
databases:
- citext: true
name: ccdb
tag: cc
- citext: true
name: uaadb
tag: uaa
db_scheme: postgres
port: 5524
roles:
- name: ccadmin
password: <%= common_password %>
tag: admin
- name: uaaadmin
password: <%= common_password %>
tag: admin
dea_next:
allow_networks: null
deny_networks: null
directory_server_protocol: <%= protocol %>
disk_mb: 10000
disk_overcommit_factor: 2
evacuation_bail_out_time_in_seconds: 600
instance_disk_inode_limit: 200000
kernel_network_tuning_enabled: true
logging_level: debug
memory_mb: 1024
memory_overcommit_factor: 3
staging_disk_inode_limit: 200000
staging_disk_limit_mb: 4096
staging_memory_limit_mb: 1024
description: Cloud Foundry sponsored by Pivotal
disk_quota_enabled: true
domain: <%= root_domain %>
dropsonde:
enabled: true
etcd:
machines:
- 0.etcd-z1.cf1.<%= deployment_name %>.microbosh
etcd_metrics_server:
nats:
machines:
- 0.nats-z1.cf1.<%= deployment_name %>.microbosh
password: <%= common_password %>
username: nats
logger_endpoint:
port: 4443
loggregator:
blacklisted_syslog_ranges: []
debug: false
maxRetainedLogMessages: 100
loggregator_endpoint:
shared_secret: <%= common_password %>
host: 0.trafficcontroller-z1.cf1.<%= deployment_name %>.microbosh
login:
analytics:
code: null
domain: null
asset_base_url: null
brand: oss
catalina_opts: -Xmx768m -XX:MaxPermSize=256m
links:
home: <%= protocol %>://console.<%= root_domain %>
network: null
passwd: <%= protocol %>://console.<%= root_domain %>/password_resets/new
signup: <%= protocol %>://console.<%= root_domain %>/register
signup-network: null
protocol: <%= protocol %>
saml:
metadataTrustCheck: null
signups_enabled: null
smtp:
host: null
password: null
port: null
user: null
tiles: null
uaa_base: null
uaa_certificate: null
url: <%= protocol %>://login.<%= root_domain %>
metron_endpoint:
shared_secret: <%= common_password %>
nats:
address: 0.nats-z1.cf1.<%= deployment_name %>.microbosh
debug: false
machines:
- 0.nats-z1.cf1.<%= deployment_name %>.microbosh
monitor_port: 0
password: <%= common_password %>
port: 4222
prof_port: 0
trace: false
user: nats
nfs_server:
address: 0.nfs-z1.cf1.<%= deployment_name %>.microbosh
allow_from_entries:
- 10.0.1.0/24
share: null
request_timeout_in_seconds: 300
router:
status:
password: <%= common_password %>
user: router
servers:
z1:
- 0.router-z1.cf1.<%= deployment_name %>.microbosh
z2: []
smoke_tests: null
ssl:
skip_cert_verify: true
support_address: http://support.cloudfoundry.com
syslog_aggregator: null
system_domain: <%= root_domain %>
system_domain_organization: demo
uaa:
admin:
client_secret: <%= common_password %>
authentication:
policy:
countFailuresWithinSeconds: null
lockoutAfterFailures: null
lockoutPeriodSeconds: null
batch:
password: <%= common_password %>
username: batch
catalina_opts: -Xmx768m -XX:MaxPermSize=256m
cc:
client_secret: <%= common_password %>
clients:
app-direct:
access-token-validity: 1209600
authorities: app_direct_invoice.write
authorized-grant-types: authorization_code,client_credentials,password,refresh_token,implicit
override: true
redirect-uri: <%= protocol %>://console.<%= root_domain %>
refresh-token-validity: 1209600
secret: <%= common_password %>
developer_console:
access-token-validity: 1209600
authorities: scim.write,scim.read,cloud_controller.read,cloud_controller.write,password.write,uaa.admin,uaa.resource,cloud_controller.admin,billing.admin
authorized-grant-types: authorization_code,client_credentials
override: true
redirect-uri: <%= protocol %>://console.<%= root_domain %>/oauth/callback
refresh-token-validity: 1209600
scope: openid,cloud_controller.read,cloud_controller.write,password.write,console.admin,console.support
secret: <%= common_password %>
login:
authorities: oauth.login
authorized-grant-types: authorization_code,client_credentials,refresh_token
override: true
redirect-uri: <%= protocol %>://login.<%= root_domain %>
scope: openid,oauth.approvals
secret: <%= common_password %>
notifications:
authorities: cloud_controller.admin,scim.read
authorized-grant-types: client_credentials
secret: <%= common_password %>
servicesmgmt:
authorities: uaa.resource,oauth.service,clients.read,clients.write,clients.secret
authorized-grant-types: authorization_code,client_credentials,password,implicit
autoapprove: true
override: true
redirect-uri: <%= protocol %>://servicesmgmt.<%= root_domain %>/auth/cloudfoundry/callback
scope: openid,cloud_controller.read,cloud_controller.write
secret: <%= common_password %>
space-mail:
access-token-validity: 1209600
authorities: scim.read,scim.write,cloud_controller.admin
authorized-grant-types: client_credentials
override: true
refresh-token-validity: 1209600
secret: <%= common_password %>
support-services:
access-token-validity: 1209600
authorities: portal.users.read
authorized-grant-types: authorization_code,client_credentials
redirect-uri: http://support-signon.<%= root_domain %>
refresh-token-validity: 1209600
scope: scim.write,scim.read,openid,cloud_controller.read,cloud_controller.write
secret: <%= common_password %>
jwt:
signing_key: '
-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQDHFr+KICms+tuT1OXJwhCUmR2dKVy7psa8xzElSyzqx7oJyfJ1
JZyOzToj9T5SfTIq396agbHJWVfYphNahvZ/7uMXqHxf+ZH9BL1gk9Y6kCnbM5R6
0gfwjyW1/dQPjOzn9N394zd2FJoFHwdq9Qs0wBugspULZVNRxq7veq/fzwIDAQAB
AoGBAJ8dRTQFhIllbHx4GLbpTQsWXJ6w4hZvskJKCLM/o8R4n+0W45pQ1xEiYKdA
Z/DRcnjltylRImBD8XuLL8iYOQSZXNMb1h3g5/UGbUXLmCgQLOUUlnYt34QOQm+0
KvUqfMSFBbKMsYBAoQmNdTHBaz3dZa8ON9hh/f5TT8u0OWNRAkEA5opzsIXv+52J
duc1VGyX3SwlxiE2dStW8wZqGiuLH142n6MKnkLU4ctNLiclw6BZePXFZYIK+AkE
xQ+k16je5QJBAN0TIKMPWIbbHVr5rkdUqOyezlFFWYOwnMmw/BKa1d3zp54VP/P8
+5aQ2d4sMoKEOfdWH7UqMe3FszfYFvSu5KMCQFMYeFaaEEP7Jn8rGzfQ5HQd44ek
lQJqmq6CE2BXbY/i34FuvPcKU70HEEygY6Y9d8J3o6zQ0K9SYNu+pcXt4lkCQA3h
jJQQe5uEGJTExqed7jllQ0khFJzLMx0K6tj0NeeIzAaGCQz13oo2sCdeGRHO4aDh
HH6Qlq/6UOV5wP8+GAcCQFgRCcB+hrje8hfEEefHcFpyKH+5g1Eu1k0mLrxK2zd+
4SlotYRHgPCEubokb2S1zfZDWIXW3HmggnGgM949TlY=
-----END RSA PRIVATE KEY-----'
verification_key: '
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHFr+KICms+tuT1OXJwhCUmR2d
KVy7psa8xzElSyzqx7oJyfJ1JZyOzToj9T5SfTIq396agbHJWVfYphNahvZ/7uMX
qHxf+ZH9BL1gk9Y6kCnbM5R60gfwjyW1/dQPjOzn9N394zd2FJoFHwdq9Qs0wBug
spULZVNRxq7veq/fzwIDAQAB
-----END PUBLIC KEY-----'
ldap: null
login:
client_secret: null
# no_ssl: <%= protocol == "http" %>
scim:
external_groups: null
userids_enabled: false
users:
- admin|admin|scim.write,scim.read,openid,cloud_controller.admin,uaa.admin,password.write
- services|password|scim.write,scim.read,openid,cloud_controller.admin
spring_profiles: null
url: <%= protocol %>://uaa.<%= root_domain %>
uaadb:
address: 0.postgres-z1.cf1.<%= deployment_name %>.microbosh
databases:
- name: uaadb
tag: uaa
db_scheme: postgresql
port: 5524
roles:
- name: uaaadmin
password: <%= common_password %>
tag: admin
releases:
- name: cf
version: <%= cf_release %>
resource_pools:
- cloud_properties:
instance_type: m1.small
name: small_z1
network: cf1
size: 3
stemcell:
name: <%= stemcell_name %>
version: latest
- cloud_properties:
instance_type: m1.medium
name: medium_z1
network: cf1
size: 10
stemcell:
name: <%= stemcell_name %>
version: latest
- cloud_properties:
instance_type: m1.medium
name: large_z1
network: cf1
size: 1
stemcell:
name: <%= stemcell_name %>
version: latest
- cloud_properties:
instance_type: m1.medium
name: runner_z1
network: cf1
size: 1
stemcell:
name: <%= stemcell_name %>
version: latest
- cloud_properties:
instance_type: m1.medium
name: router_z1
network: cf1
size: 2
stemcell:
name: <%= stemcell_name %>
version: latest
- cloud_properties:
instance_type: m1.small
name: small_errand
network: cf1
size: 0
stemcell:
name: <%= stemcell_name %>
version: latest
update:
canaries: 1
canary_watch_time: 30000-600000
max_in_flight: 1
serial: true
update_watch_time: 5000-600000
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment