/cf-mysql/iaas-settings.yml \
+ > cf-mysql.yml
+```
+
+##### Deploying
-1. Generate the manifest:
+Once the manifest has been generated, do the following to deploy cf-mysql on your environment.
+
+1. Deploy CF-MySQL (assumes release has already been uploaded):
```
- $ ./generate_deployment_manifest \
- aws \
- plans_stub.yml \
- cf-mysql-aws-stub.yml > cf-mysql-aws.yml
+ $ bosh deploy
```
- The resulting file, `cf-mysql-aws.yml` is your deployment manifest. To modify the deployment configuration, you can edit the stub and regenerate the manifest or edit the manifest directly.
-1. To deploy:
+1. To edit the manifest:
```
- $ bosh deployment cf-mysql-aws.yml && bosh deploy
+ $ bosh edit deployment
```
@@ -333,7 +368,7 @@ The brokers each register a route with the router, which load balances requests
Manifest properties are described in the `spec` file for each job; see [jobs](jobs).
-You can find your `director_uuid` by running `bosh status`.
+You can find your `director_uuid` by running `bosh status --uuid`.
The MariaDB cluster nodes are configured by default with 100GB of persistent disk. This can be configured in your stub or manifest using `disk_pools.mysql-persistent-disk.disk_size`, however your deployment will fail if this is less than 3GB; we recommend allocating 10GB at a minimum.
@@ -454,56 +489,3 @@ $ cf delete-service-broker p-mysql
## Deployment Resources
The service is configured to have a small footprint out of the box. These resources are sufficient for development, but may be insufficient for production workloads. If the service appears to be performing poorly, redeploying with increased resources may improve performance. See [deployment resources](docs/deployment-resources.md) for further details.
-
-
-## Additional Configuration Options
-
-### Updating Service Plans
-
-Updating the service instances is supported; see [Service plans and instances](docs/service-plans-instances.md) for details.
-
-### Pre-seeding Databases
-
-Normally databases are created via the `cf create-service` command, and
-a MySQL user is created and given access to that database when an app is bound to that service instance.
-However, it is sometimes useful to have databases and users already available when the service is deployed,
-without having to run `cf create-service` or bind an app.
-To specify any preseeded databases, add the following to the deployment manifest:
-
-```
-jobs:
-- name: mysql_z1
- properties:
- seeded_databases:
- - name: db1
- username: user1
- password: pw1
- - name: db2
- username: user2
- password: pw2
-```
-
-Note: If all you need is a database deployment, it is possible to deploy this
-release with zero broker instances and completely remove any dependencies on Cloud Foundry.
-See the [proxy](jobs/proxy/spec) and [acceptance-tests](jobs/acceptance-tests/spec) spec files for standalone configuration options.
-
-### Configuring how long the startup script waits for the database to come online
-
-On larger databases, the default database startup timeout may be too low.
-This would result in the job reporting as failing, while MySQL continues to bootstrap in the background (see [Known Issues > Long SST Transfers](docs/Known-Issues.md#long-sst-transfers)).
-To increase the duration that the startup script waits for MySQL to start, add the following to your deployment stub:
-
-```yaml
-jobs:
-- name: mysql_z1
- properties:
- database_startup_timeout: 360
-```
-
-Note: This is independent of the overall BOSH timeout which is also configurable in the manifest. The BOSH timeout should always be higher than the database startup timeout:
-
-```yaml
-update:
- canary_watch_time: 30000-600000
- update_watch_time: 30000-600000
-```
diff --git a/bosh-lite/cf-mysql-standalone-stub.yml b/bosh-lite/cf-mysql-standalone-stub.yml
deleted file mode 100644
index 9906fe78..00000000
--- a/bosh-lite/cf-mysql-standalone-stub.yml
+++ /dev/null
@@ -1,9 +0,0 @@
----
-properties:
- standalone: true
-
-jobs:
-- name: cf-mysql-broker_z1
- instances: 0
-- name: cf-mysql-broker_z2
- instances: 0
\ No newline at end of file
diff --git a/bosh-lite/cf-mysql-stub-spiff-1-node.yml b/bosh-lite/cf-mysql-stub-spiff-1-node.yml
deleted file mode 100644
index a89eda86..00000000
--- a/bosh-lite/cf-mysql-stub-spiff-1-node.yml
+++ /dev/null
@@ -1,71 +0,0 @@
----
-name: cf-warden-mysql
-director_uuid: PLACEHOLDER-DIRECTOR-UUID
-releases:
- - name: cf-mysql
- version: latest
-
-properties:
- app_domains: (( merge || ["bosh-lite.com"] ))
- domain: (( merge || "bosh-lite.com" ))
- nats:
- machines: [10.244.0.6]
- password: nats
- port: 4222
- user: nats
- cf:
- admin_username: admin
- admin_password: admin
- skip_ssl_validation: true
-
-jobs:
- - name: mysql_z1
- instances: 1
- networks:
- - name: mysql1
- static_ips:
- - 10.244.7.2
- properties:
- <<: (( merge || nil ))
- admin_password: password
- cluster_ips: (( jobs.mysql_z1.networks.[0].static_ips ))
- database_startup_timeout: 600
- bootstrap_endpoint:
- username: username
- password: password
- - name: mysql_z2
- instances: 0
- - name: mysql_z3
- instances: 0
- - name: cf-mysql-broker_z1
- instances: 1
- properties:
- <<: (( merge || nil ))
- auth_password: password
- auth_username: admin
- cookie_secret: 94046872-2602-4ca6-8d07-8b0da9762477
- skip_ssl_validation: true
- services:
- - name: p-mysql
- dashboard_client:
- secret: p-mysql-secret
- plans:
- - name: 100mb
- max_storage_mb: 10
- - name: 1gb
- max_storage_mb: 20
- - name: cf-mysql-broker_z2
- instances: 0
- - name: proxy_z1
- properties:
- <<: (( merge || nil ))
- proxy:
- <<: (( merge || nil ))
- api_username: username
- api_password: password
- - name: proxy_z2
- instances: 0
- - name: acceptance-tests
- properties:
- proxy:
- proxy_count: 1
diff --git a/bosh-lite/cf-mysql-stub-spiff-3-node.yml b/bosh-lite/cf-mysql-stub-spiff-3-node.yml
deleted file mode 100644
index f6d9c80e..00000000
--- a/bosh-lite/cf-mysql-stub-spiff-3-node.yml
+++ /dev/null
@@ -1,52 +0,0 @@
----
-name: cf-warden-mysql
-director_uuid: PLACEHOLDER-DIRECTOR-UUID
-releases:
- - name: cf-mysql
- version: latest
-
-properties:
- app_domains: (( merge || ["bosh-lite.com"] ))
- domain: (( merge || "bosh-lite.com" ))
- nats:
- machines: [10.244.0.6]
- password: nats
- port: 4222
- user: nats
- cf:
- admin_username: admin
- admin_password: admin
- skip_ssl_validation: true
-
-jobs:
- - name: mysql_z1
- properties:
- <<: (( merge || nil ))
- admin_password: password
- database_startup_timeout: 600
- bootstrap_endpoint:
- username: username
- password: password
- - name: cf-mysql-broker_z1
- properties:
- <<: (( merge || nil ))
- auth_password: password
- auth_username: admin
- cookie_secret: 94046872-2602-4ca6-8d07-8b0da9762477
- skip_ssl_validation: true
- services:
- - name: p-mysql
- dashboard_client:
- secret: p-mysql-secret
- plans:
- - name: 100mb
- max_storage_mb: 10
- - name: 1gb
- max_storage_mb: 20
- - name: proxy_z1
- properties:
- <<: (( merge || nil ))
- proxy:
- <<: (( merge || nil ))
- api_username: username
- api_password: password
diff --git a/bosh-lite/make_manifest b/bosh-lite/make_manifest
deleted file mode 100755
index 5db64635..00000000
--- a/bosh-lite/make_manifest
+++ /dev/null
@@ -1,63 +0,0 @@
-#!/bin/bash
-
-set -eu
-
-MY_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
-
-# This script expects to live one directory below the release directory.
-RELEASE_DIR=$( cd ${MY_DIR}/.. && pwd )
-
-# And that the release directory lives one directory below the workspace directory.
-WORKSPACE_DIR="$( cd ${RELEASE_DIR}/.. && pwd )"
-
-OK_COLOR='\033[1;32m'
-ACTION_COLOR='\033[1;33m'
-INFO_COLOR='\033[1;36m'
-NO_COLOR='\033[0m'
-
-BOSH_LITE_USERNAME=${BOSH_LITE_USERNAME:-admin}
-BOSH_LITE_PASSWORD=${BOSH_LITE_PASSWORD:-admin}
-
-# By default use 3 node stub
-mysql_stub="cf-mysql-stub-spiff-3-node.yml"
-# If any arguments were provided,
-# see if there is a stub with the number of nodes provided.
-# If not, assume the argument is not the number of nodes and continue.
-if [[ $# -ne 0 ]] && [[ -f "${RELEASE_DIR}/bosh-lite/cf-mysql-stub-spiff-$1-node.yml" ]] ; then
- mysql_stub="cf-mysql-stub-spiff-$1-node.yml"
- echo -e "Using stub ${INFO_COLOR}${RELEASE_DIR}/bosh-lite/${mysql_stub}${NO_COLOR}"
- shift
-fi
-
-mkdir -p ${RELEASE_DIR}/bosh-lite/tmp
-mkdir -p ${RELEASE_DIR}/bosh-lite/manifest
-
-cp \
- ${RELEASE_DIR}/bosh-lite/$mysql_stub \
- ${RELEASE_DIR}/bosh-lite/tmp/cf-mysql-stub-with-uuid.yml
-
-DIRECTOR_IP=${DIRECTOR_IP:-192.168.50.4}
-
-# If a file exists with an api-address, use that instead
-if [ -f ${WORKSPACE_DIR}/api-address ]; then
- API_ADDRESS=$( cat ${WORKSPACE_DIR}/api-address )
- echo -e "WARNING: Found API address file at ${INFO_COLOR}${WORKSPACE_DIR}/api-address${NO_COLOR}
- - using ${INFO_COLOR}${API_ADDRESS}${NO_COLOR} instead of ${INFO_COLOR}${DIRECTOR_IP}${NO_COLOR} for director IP
- - and ${INFO_COLOR}${API_ADDRESS}.xip.io${NO_COLOR} instead of ${INFO_COLOR}bosh-lite.com${NO_COLOR} for API address"
- DIRECTOR_IP=${API_ADDRESS}
- perl -pi -e "s/bosh-lite.com/${API_ADDRESS}.xip.io/g" $RELEASE_DIR/bosh-lite/tmp/cf-mysql-stub-with-uuid.yml
-fi
-
-bosh -n target ${DIRECTOR_IP}
-bosh -n login "${BOSH_LITE_USERNAME}" "${BOSH_LITE_PASSWORD}"
-DIRECTOR_UUID=$(bosh status | grep UUID | awk '{print $2}')
-echo $DIRECTOR_UUID
-perl -pi -e "s/PLACEHOLDER-DIRECTOR-UUID/$DIRECTOR_UUID/g" $RELEASE_DIR/bosh-lite/tmp/cf-mysql-stub-with-uuid.yml
-
-${RELEASE_DIR}/generate_deployment_manifest \
- warden \
- ${RELEASE_DIR}/templates/sample_stubs/sample_plans_stub.yml \
- ${RELEASE_DIR}/bosh-lite/tmp/cf-mysql-stub-with-uuid.yml \
- "$@" > ${RELEASE_DIR}/bosh-lite/manifests/cf-mysql-manifest.yml
-
-bosh deployment $RELEASE_DIR/bosh-lite/manifests/cf-mysql-manifest.yml
diff --git a/bosh-lite/manifests/.gitkeep b/bosh-lite/manifests/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/bosh-lite/tmp/.gitkeep b/bosh-lite/tmp/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/config/blobs.yml b/config/blobs.yml
index cc5cba38..1bdcc56f 100644
--- a/config/blobs.yml
+++ b/config/blobs.yml
@@ -87,3 +87,7 @@ mariadb/mariadb-galera-10.0.22.tar.gz:
object_id: 6276661c-5065-451a-8ef9-36e214ce29a6
sha: 3e79ccd1cb10dd4ef87d67a163f001b0edd05103
size: 56593286
+mariadb/mariadb-galera-10.0.23.tar.gz:
+ object_id: 6d3ba50a-c12e-4a4d-b992-10f7051a0a73
+ sha: c920df0661770abb923a7af5e964927f7d02ff5f
+ size: 57726827
diff --git a/docs/arbitrator.md b/docs/arbitrator.md
new file mode 100644
index 00000000..e9a9c042
--- /dev/null
+++ b/docs/arbitrator.md
@@ -0,0 +1,35 @@
+# Arbitrator node
+
+As part of CF MySQL v26, we provide an [arbitrator node](http://galeracluster.com/documentation-webpages/arbitrator.html) as a replacement for one of the MySQL nodes. The arbitrator is a Galera node which does not participate in database transactions or data replication, but just votes in order to maintain quorum. This enables the user to save on resource cost (since the arbitrator is pretty lightweight compared to a normal database node), while still avoiding split-brain conditions which can happen when one of the database nodes is unreachable.
+
+In other words, we are going from a 3-node configuration to a 2-node-plus-arbitrator configuration as part of v26. In a typical bosh deployment of CF MySQL, the node is called `arbitrator_z3` and replaces the earlier `mysql_z3` node.
+
+### Deploying 2-node-plus-arbitrator configuration as fresh deploy
+
+For a fresh deployment of CF MySQL v26, simply follow the steps in the [README](https://github.com/cloudfoundry/cf-mysql-release/blob/develop/README.md#create-manifest-and-deploy).
+
+### Upgrading to 2-node-plus-arbitrator from already existing 3-node deployment
+
+If you already have a 3-node deployment of CF MySQL (e.g. v25), follow the below steps to upgrade to the new configuration as a rolling deploy (the commands below apply to testing on a bosh-lite deployment. For other environments, the same steps are to be followed, except that stubs are different, as explained in the README linked above.).
+
+1. Generate a 3 node + arbitrator manifest:
+ ./scripts/generate-deployment-manifest -c /path/to/your-cf-stub.yml -p manifest-generation/bosh-lite-stubs/property-overrides.yml -i manifest-generation/bosh-lite-stubs/iaas-settings.yml -n manifest-generation/examples/upgrade-to-arbitrator/deploy-arbitrator/instance-count-overrides.yml > [manifest export path].yml
+1. `bosh deployment [manifest export path].yml`
+1. `bosh deploy`
+1. Upon successful deployment, generate the 2 node + arbitrator manifest:
+ ./scripts/generate-deployment-manifest -c /path/to/your-cf-stub.yml -p manifest-generation/bosh-lite-stubs/property-overrides.yml -i manifest-generation/bosh-lite-stubs/iaas-settings.yml -n manifest-generation/examples/upgrade-to-arbitrator/remove-mysql-node/instance-count-overrides.yml > [manifest export path].yml
+1. `bosh deployment [manifest export path].yml`
+1. `bosh deploy`
+
+### Rolling from 2-node-plus-arbitrator back to 3-node deployment
+
+If you wish to go back to a 3-node deployment from a 2-node-plus-arbitrator deployment, follow the steps below to perform the downgrade:
+
+1. Generate a 3-node + arbitrator manifest:
+ ./scripts/generate-deployment-manifest -c /path/to/your-cf-stub.yml -p manifest-generation/bosh-lite-stubs/property-overrides.yml -i manifest-generation/bosh-lite-stubs/iaas-settings.yml -n manifest-generation/examples/upgrade-to-arbitrator/deploy-arbitrator/instance-count-overrides.yml > [manifest export path].yml
+1. `bosh deployment [manifest export path].yml`
+1. `bosh deploy`
+1. Upon successful deployment, generate the 3 node manifest:
+ ./scripts/generate-deployment-manifest -c /path/to/your-cf-stub.yml -p manifest-generation/bosh-lite-stubs/property-overrides.yml -i manifest-generation/bosh-lite-stubs/iaas-settings.yml -n manifest-generation/examples/no-arbitrator/instance-count-overrides.yml > [manifest export path].yml
+1. `bosh deployment [manifest export path].yml`
+1. `bosh deploy`
diff --git a/docs/bootstrapping.md b/docs/bootstrapping.md
index 304fd187..693180d7 100644
--- a/docs/bootstrapping.md
+++ b/docs/bootstrapping.md
@@ -1,6 +1,6 @@
# Bootstrapping a Galera Cluster
-Bootstrapping is the process of (re)starting a Galera cluster.
+Bootstrapping is the process of (re)starting a Galera cluster.
## When to Bootstrap
@@ -23,6 +23,7 @@ If quorum has *not* been lost, individual unhealthy nodes should automatically r
| wsrep_cluster_status | non-Primary |
+----------------------+-------------+
```
+
- All responsive nodes respond with `ERROR 1047` when queried with most statement types.
```sh
@@ -38,24 +39,110 @@ As part of cf-mysql-release v25, we provide an auto-bootstrap feature which runs
#### How to run
-Run ```bosh run errand bootstrap``` from the terminal. When done, this should successfully bootstrap the cluster, and all jobs should report as ```running```. Note that:
-
-1. If the cluster was already healthy to begin with (i.e. quorum was never lost), the errand will error out saying ```bootstrap is not required```.
-1. If one or more nodes are not reachable (i.e. the VM exists but in an unknown state), it will error out saying ```nodes are not reachable```. In this situation, follow the steps below:
- 1. ```bosh -n stop mysql_z1 && bosh -n stop mysql_z2 && bosh -n stop mysql_z3```
- 1. ```bosh edit deployment```
- 1. Set ```update.canaries``` to 0, ```update.max_in_flight``` to 3, and ```update.serial``` to false.
- 1. ```bosh deploy```
- 1. ```bosh -n start mysql_z1 || bosh -n start mysql_z2 || bosh -n start mysql_z3``` (This will throw several errors, but it ensures that all the jobs are present on the VM)
- 1. ```bosh instances``` to verify that all jobs report as failing.
- 1. Try running the errand again using ```bosh run errand bootstrap``` as above.
- 1. Once the errand succeeds, the cluster is synced, although some jobs might still report as failing.
- 1. ```bosh edit deployment```
- 1. Set ```update.canaries``` to 1, ```update.max_in_flight``` to 1, and ```update.serial``` to true.
- 1. Verify that deployment succeeds and all jobs are healthy.
-
+Run `bosh run errand bootstrap` from the terminal. When done, this should successfully bootstrap the cluster, and all jobs should report as `running`. Note that:
+
+If the cluster was already healthy to begin with (i.e. quorum was never lost), the errand will error out saying `bootstrap is not required`.
+
+If one or more nodes are not reachable (i.e. the VM exists but in an unknown state), it will error out saying `nodes are not reachable`. In this situation, follow the steps below:
+
+1. `bosh -n stop mysql_z1 && bosh -n stop mysql_z2 && bosh -n stop _z3`
+1. `bosh edit deployment`
+1. Set `update.canaries` to 0, `update.max_in_flight` to 3, and `update.serial` to false.
+1. `bosh deploy`
+ - Note, if you get a 503 error (like `Sending stop request to monit: Request failed, response: Response{ StatusCode: 503, Status: '503 Service Unavailable' }`), it means that monit is still trying to stop the vms. Please wait a few minutes and try this step again.
+1. `bosh -n start mysql_z1 ; bosh -n start mysql_z2 ; bosh -n start _z3`
+ - This will throw several errors, but it ensures that all the jobs are present on the VM.
+1. `bosh instances` to verify that all jobs report as failing.
+1. Try running the errand again using `bosh -n run errand bootstrap` as above.
+ - Once the errand succeeds, the cluster is synced, although some jobs might still report as failing.
+1. `bosh edit deployment`
+1. Set `update.canaries` to 1, `update.max_in_flight` to 1, and `update.serial` to true.
+1. Verify that deployment succeeds and all jobs are healthy. A healthy deployment should look like this:
+
+```
+$ bosh vms cf-warden-mysql'
+Acting as user 'admin' on deployment 'cf-warden-mysql' on 'Bosh Lite Director'
+| mysql_z1/0 | running | mysql_z1 | 10.244.7.2 |
+| mysql_z2/0 | running | mysql_z2 | 10.244.8.2 |
+| arbitrator_z3/0 | running | arbitrator_z3 | 10.244.9.6 |
+...
+```
+
+If these steps did not work for you, please refer to the [Manual Bootstrap Process](#manual-bootstrap-process) below.
+
## How it works
-The bootstrap errand simply automates the steps in the manual bootstrapping process documented in previous releases of cf-mysql. It finds the node with the highest transaction sequence number, and asks it to start up by itself (i.e. in bootstrap mode), then asks the remaining nodes to join the cluster.
+The bootstrap errand simply automates the steps in the manual bootstrapping process documented below. It finds the node with the highest transaction sequence number, and asks it to start up by itself (i.e. in bootstrap mode), then asks the remaining nodes to join the cluster.
+
+The sequence number of a stopped node can be retained by either reading the node's state file under `/var/vcap/store/mysql/grastate.dat`, or by running a mysqld command with a WSREP flag, like `mysqld --wsrep-recover`.
+
+## Manual Bootstrap Process
+
+The following steps are prone to user-error and can result in lost data if followed incorrectly.
+Please follow the [Auto-bootstrap](#auto-bootstrap-errand) instructions above first, and only resort to the manual process if the errand fails to repair the cluster.
+
+1. SSH to each node in the cluster and, as root, shut down the mariadb process.
+
+ ```sh
+ $ monit stop mariadb_ctrl
+ ```
+
+ Re-bootstrapping the cluster will not be successful unless all other nodes have been shut down.
+
+1. Choose a node to bootstrap.
+
+ Find the node with the highest transaction sequence number (seqno):
+
+ - If a node shutdown gracefully, the seqno should be in the galera state file.
+
+ ```sh
+ $ cat /var/vcap/store/mysql/grastate.dat | grep 'seqno:'
+ ```
+
+ - If the node crashed or was killed, the seqno in the galera state file should be `-1`. In this case, the seqno may be recoverable from the database. The following command will cause the database to start up, log the recovered sequence number, and then exit.
+
+ ```sh
+ $ /var/vcap/packages/mariadb/bin/mysqld --wsrep-recover
+ ```
+
+ Scan the error log for the recovered sequence number (the last number after the group id (uuid) is the recovered seqno):
+
+ ```sh
+ $ grep "Recovered position" /var/vcap/sys/log/mysql/mysql.err.log | tail -1
+ 150225 18:09:42 mysqld_safe WSREP: Recovered position e93955c7-b797-11e4-9faa-9a6f0b73eb46:15
+ ```
+
+ Note: The galera state file will still say `seqno: -1` afterward.
+
+ - If the node never connected to the cluster before crashing, it may not even have a group id (uuid in grastate.dat). In this case there's nothing to recover. Unless all nodes crashed this way, don't choose this node for bootstrapping.
+
+ Use the node with the highest `seqno` value as the new bootstrap node. If all nodes have the same `seqno`, you can choose any node as the new bootstrap node.
+
+ **Important:** Only perform these bootstrap commands on the node with the highest `seqno`. Otherwise the node with the highest `seqno` will be unable to join the new cluster (unless its data is abandoned). Its mariadb process will exit with an error. See [cluster behavior](cluster-behavior.md) for more details on intentionally abandoning data.
+
+1. On the new bootstrap node, update state file and restart the mariadb process:
+
+ ```sh
+ $ echo -n "NEEDS_BOOTSTRAP" > /var/vcap/store/mysql/state.txt
+ $ monit start mariadb_ctrl
+ ```
+
+ You can check that the mariadb process has started successfully by running:
+
+ ```sh
+ $ watch monit summary
+ ```
+
+ It can take up to 10 minutes for monit to start the mariadb process.
+
+1. Once the bootstrapped node is running, start the mariadb process on the remaining nodes via monit.
+
+ ```sh
+ $ monit start mariadb_ctrl
+ ```
+
+1. Verify that the new nodes have successfully joined the cluster. The following command should output the total number of nodes in the cluster:
-The sequence number of a stopped node can be retained by either reading the node's state file under ```/var/vcap/store/mysql/grastate.dat```, or by running a mysqld command with a WSREP flag, like ```mysqld --wsrep-recover```.
+ ```sh
+ mysql> SHOW STATUS LIKE 'wsrep_cluster_size';
+ ```
diff --git a/docs/configuration.md b/docs/configuration.md
new file mode 100644
index 00000000..c750058d
--- /dev/null
+++ b/docs/configuration.md
@@ -0,0 +1,57 @@
+# Configuration Options
+
+## Updating Service Plans
+
+Updating the service instances is supported; see [Service plans and instances](docs/service-plans-instances.md) for details.
+
+## Read-Only Administrator User
+
+The manifest optionally allows the user to specify a password for the `roadmin` user. By supplying this password, the service will automatically create a user that has access to read all databases, but permission to write to none of them.
+
+This parameter is defined in the [spec file](../jobs/mysql/spec).
+
+## Pre-seeding Databases
+
+Normally databases are created via the `cf create-service` command, and
+a MySQL user is created and given access to that database when an app is bound to that service instance.
+However, it is sometimes useful to have databases and users already available when the service is deployed,
+without having to run `cf create-service` or bind an app.
+To specify any preseeded databases, add the following to the deployment manifest:
+
+```
+jobs:
+- name: mysql_z1
+ properties:
+ seeded_databases:
+ - name: db1
+ username: user1
+ password: pw1
+ - name: db2
+ username: user2
+ password: pw2
+```
+
+Note: If all you need is a database deployment, it is possible to deploy this
+release with zero broker instances and completely remove any dependencies on Cloud Foundry.
+See the [proxy](jobs/proxy/spec) and [acceptance-tests](jobs/acceptance-tests/spec) spec files for standalone configuration options.
+
+## Configuring how long the startup script waits for the database to come online
+
+On larger databases, the default database startup timeout may be too low.
+This would result in the job reporting as failing, while MySQL continues to bootstrap in the background (see [Known Issues > Long SST Transfers](docs/Known-Issues.md#long-sst-transfers)).
+To increase the duration that the startup script waits for MySQL to start, add the following to your deployment stub:
+
+```yaml
+jobs:
+- name: mysql_z1
+ properties:
+ database_startup_timeout: 360
+```
+
+Note: This is independent of the overall BOSH timeout which is also configurable in the manifest. The BOSH timeout should always be higher than the database startup timeout:
+
+```yaml
+update:
+ canary_watch_time: 30000-600000
+ update_watch_time: 30000-600000
+```
diff --git a/docs/proxy.md b/docs/proxy.md
index 69d7b345..801a74f7 100644
--- a/docs/proxy.md
+++ b/docs/proxy.md
@@ -55,25 +55,31 @@ Bound applications are provided with a hostname or IP address to reach a databas
### Configuring load balancer
-Configure the load balancer to route traffic for TCP port 3306 to the IPs of all proxy instances on TCP port 3306. Next, configure the load balancer's healthcheck to use the proxy health port. This is TCP port 1936 by default to maintain backwards compatibility with previous releases, but this port can be configured by changing the following manifest property:
+Configure the load balancer to route traffic for TCP port 3306 to the IPs of all proxy instances on TCP port 3306.
+Next, configure the load balancer's healthcheck to use the proxy health port.
+This is TCP port 1936 by default to maintain backwards compatibility with previous releases, but this port can be configured by changing the following manifest property in the `property-overrides` stub:
```
-jobs:
-- name: proxy_z1
- properties:
- proxy:
- health_port:
+property_overrides:
+ proxy:
+ health_port:
```
### Configuring cf-mysql-release to give applications the address of the load balancer
-To ensure that bound applications will use the load balancer to reach bound databases, the manifest property `properties.mysql_node.host` must be updated for the cf-mysql-broker job:
+To ensure that bound applications will use the load balancer to reach bound databases, the set `property_overrides.host` in the `property-overrides` stub:
```
-jobs:
-- name: cf-mysql-broker_z1
- properties:
- mysql_node:
- host:
+property_overrides:
+ host:
+```
+
+If deploying on AWS, also add the ELB name (not the address) in the `iaas-settings` stub:
+
+```
+properties:
+ template_only:
+ aws:
+ mysql_elb_names: []
```
### AWS Route 53
diff --git a/generate_deployment_manifest b/generate_deployment_manifest
deleted file mode 100755
index 4cc89f84..00000000
--- a/generate_deployment_manifest
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/bash
-
-MY_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
-
-templates="${MY_DIR}/templates"
-
-infrastructure="$1"
-
-if [ "$infrastructure" != "aws" ] && \
- [ "$infrastructure" != "warden" ] && \
- [ "$infrastructure" != "vsphere" ] ; then
- echo "usage: ./generate_deployment_manifest [stubs...]"
- exit 1
-fi
-
-shift
-
-spiff merge \
- "$templates/cf-mysql-template.yml" \
- "$templates/cf-infrastructure-${infrastructure}.yml" \
- $*
diff --git a/jobs/acceptance-tests/spec b/jobs/acceptance-tests/spec
index fec8c560..c1c3a39e 100644
--- a/jobs/acceptance-tests/spec
+++ b/jobs/acceptance-tests/spec
@@ -15,63 +15,51 @@ properties:
description: 'Username of the admin user'
cf.admin_password:
description: 'Password of the admin user'
- cf.apps_domain:
- description: 'Shared domain for pushed apps'
+ cf.app_domains:
+ description: 'List of shared domains for pushed apps (tests will use the first domain)'
cf.skip_ssl_validation:
description: 'Whether to add --skip-ssl-validation for cf cli'
default: false
-
- broker.host:
- description: 'Host for the broker. Should be the same as jobs.cf-mysql-broker.properties.external_host'
-
- service.name:
- description: 'Name of the MySQL service'
- service.plans:
- description: 'Array of MySQL plans'
-
- service.max_user_connections_default:
- description: 'number of user connections to allow in a plan if not specified'
- default: 40
-
- org_name:
+ cf.smoke_tests.use_existing_org:
+ description: 'Runs smoke test errand as an existing org. Creates a new org if false'
+ default: false
+ cf.smoke_tests.org:
description: 'The name of the Org to run acceptance tests against'
default: ''
- smoke_tests_only:
+ cf_mysql.acceptance_tests.smoke_tests_only:
description: 'Instead of running the full acceptance test suite, only run a shorter smoke test'
default: true
- smoke_test_password:
- description: 'Password for smoke tests to comply with CF password policy, if exists.'
- default: '@Ma8rtj2vu'
-
- proxy.external_host:
- description: 'Proxy external host (e.g. p-mysql.example.com => proxy-0-p-mysql.example.com)'
- proxy.api_username:
- description: 'Proxy API username'
- proxy.api_password:
- description: 'Proxy API password'
- proxy.api_force_https:
- description: 'Expect proxy to force redirect to HTTPS'
- default: true
- proxy.skip_ssl_validation:
- description: 'Tests will skip validation of SSL certificates'
- default: true
- proxy.proxy_count:
- description: 'Number of proxy instances. Use to construct an array of proxy dashboard url (e.g. https://proxy-INDEX-EXTERNAL_HOST)'
- standalone_tests_only:
+ cf_mysql.acceptance_tests.standalone_tests_only:
description: 'Instead of running the full acceptance test suite, only run a minimal set of tests that do not require a running CF deployment'
default: false
- standalone.host:
- description: 'Hostname of proxy or load balancer used to communicate with MySQL nodes in a standalone deployment'
- standalone.port:
- description: 'Port used to communicate with MySQL nodes'
+ cf_mysql.acceptance_tests.timeout_scale:
+ description: 'scaling multiplier used to determine command timeouts'
+ default: 1
+
+ cf_mysql.host:
+ description: 'Hostname given to apps by the broker, usually a Load Balancer address or the IP of the first proxy'
+ cf_mysql.external_host:
+ description: 'Hostname given for dashboard URLs (e.g. p-mysql.example.com)'
+
+ cf_mysql.mysql.port:
+ description: 'Port used to access MySQL'
default: 3306
- standalone.username:
- description: 'MySQL admin username'
+ cf_mysql.mysql.admin_username:
+ description: 'Admin username used to access MySQL'
default: 'root'
- standalone.password:
- description: 'MySQL admin password'
+ cf_mysql.mysql.admin_password:
+ description: 'Admin password used to access MySQL'
- timeout_scale:
- description: 'scaling multiplier used to determine command timeouts'
- default: 1
+ cf_mysql.broker.services:
+ description: 'Array of Services the broker provides'
+
+ cf_mysql.proxy.api_username:
+ description: 'Proxy API username'
+ cf_mysql.proxy.api_password:
+ description: 'Proxy API password'
+ cf_mysql.proxy.api_force_https:
+ description: 'Expect proxy to force redirect to HTTPS'
+ default: true
+ cf_mysql.proxy.proxy_ips:
+ description: 'Use to construct an array of proxy dashboard url (e.g. https://proxy-INDEX-EXTERNAL_HOST)'
diff --git a/jobs/acceptance-tests/templates/errand.sh.erb b/jobs/acceptance-tests/templates/errand.sh.erb
index 3c1ce8fe..3adca9d7 100644
--- a/jobs/acceptance-tests/templates/errand.sh.erb
+++ b/jobs/acceptance-tests/templates/errand.sh.erb
@@ -3,25 +3,34 @@ set -e -x
cd /var/vcap/packages/acceptance-tests/src/github.com/cloudfoundry-incubator/cf-mysql-acceptance-tests
+<%
+mysql_service = p('cf_mysql.broker.services').first
+default_max_user_connections = mysql_service['max_user_connections_default'] || 40
+
+# proxy_ips may contain nil values due to lack of flexibility in spiff
+proxy_ips = p('cf_mysql.proxy.proxy_ips').compact
+%>
+
cat > integration_config.json <",
- "apps_domain": "<%= p('cf.apps_domain') %>",
+ "apps_domain": "<%= p('cf.app_domains').first %>",
"admin_user": "<%= p('cf.admin_username') %>",
- "broker_host": "<%= p('broker.host') %>",
- "service_name": "<%= p('service.name') %>",
- "test_password": "<%= p('smoke_test_password') %>",
- <% if p('org_name') %>
- "org_name": "<%= p('org_name') %>",
+ "admin_password": "<%= p('cf.admin_password') %>",
+ "test_password": "@Ma8rtj2vu",
+ "broker_host": "<%= p('cf_mysql.external_host') %>",
+ "service_name": "<%= mysql_service['name'] %>",
+ <% if p('cf.smoke_tests.use_existing_org') %>
+ "org_name": "<%= p('cf.smoke_tests.org') %>",
<% end %>
"plans": [
- <% plans = p('service.plans')
+ <% plans = mysql_service['plans']
plans.each do |plan| %>
{
"plan_name": "<%= plan['name'] %>",
"private": <%= !plan.has_key?('private') ? false : plan['private'] %>,
"max_storage_mb": <%= plan['max_storage_mb'] %>,
- "max_user_connections": <%= plan['max_user_connections'] || p('service.max_user_connections_default')%>
+ "max_user_connections": <%= plan['max_user_connections'] || default_max_user_connections %>
<% if plan != plans.last %>
},
<% else %>
@@ -31,52 +40,42 @@ cat > integration_config.json <,
"proxy": {
- "dashboard_urls": [
- <% p('proxy.proxy_count').times do |index| %>
- <% proxy_url = "\"https://proxy-#{index}-#{p('proxy.external_host')}\"" %>
- <% proxy_url += "," unless index == p('proxy.proxy_count') - 1 %>
- <%= proxy_url %>
- <% end %>
- ],
- "api_username": "<%= p('proxy.api_username') %>",
- "api_password": "<%= p('proxy.api_password') %>",
- "api_force_https": <%= p('proxy.api_force_https') %>,
- "skip_ssl_validation": <%= p('proxy.skip_ssl_validation') %>
+ <% urls = proxy_ips.each_with_index.map do |_, index|
+ "\"https://proxy-#{index}-#{p('cf_mysql.external_host')}\""
+ end %>
+ "dashboard_urls": [<%= urls.join(",") %>],
+ "api_username": "<%= p('cf_mysql.proxy.api_username') %>",
+ "api_password": "<%= p('cf_mysql.proxy.api_password') %>",
+ "api_force_https": <%= p('cf_mysql.proxy.api_force_https') %>,
+ "skip_ssl_validation": <%= p('cf.skip_ssl_validation') %>
},
- "timeout_scale": <%= p('timeout_scale') %>,
EOF
-<% if p('standalone_tests_only') %>
+<% if p('cf_mysql.acceptance_tests.standalone_tests_only') %>
cat >> integration_config.json <",
- "port": <%= p('standalone.port') %>,
- "username": "<%= p('standalone.username') %>",
- "password": "<%= p('standalone.password') %>"
+ "host": "<%= p('cf_mysql.host') %>",
+ "port": <%= p('cf_mysql.mysql.port') %>,
+ "username": "<%= p('cf_mysql.mysql.admin_username') %>",
+ "password": "<%= p('cf_mysql.mysql.admin_password') %>"
},
EOF
<% end %>
-# don't expose passwords
-set +x
-
cat >> integration_config.json <"
+ "timeout_scale": <%= p('cf_mysql.acceptance_tests.timeout_scale') %>
}
EOF
-# set -x
-
export GOPATH=/var/vcap/packages/acceptance-tests
export GOROOT=/var/vcap/packages/golang
export PATH=/var/vcap/packages/cli/bin:$GOPATH/bin:$GOROOT/bin:$PWD/bin:$PATH
export CONFIG=$PWD/integration_config.json
-
-<% if p('standalone_tests_only') %>
+<% if p('cf_mysql.acceptance_tests.standalone_tests_only') %>
bin/test-standalone --noColor
-<% elsif p('smoke_tests_only') %>
+<% elsif p('cf_mysql.acceptance_tests.smoke_tests_only') %>
bin/test-smoke --noColor
<% else %>
bin/test-acceptance --noColor
diff --git a/jobs/arbitrator/monit b/jobs/arbitrator/monit
new file mode 100644
index 00000000..5732425b
--- /dev/null
+++ b/jobs/arbitrator/monit
@@ -0,0 +1,11 @@
+check process garbd
+ with pidfile /var/vcap/sys/run/garbd/garbd.pid
+ start program "/var/vcap/jobs/arbitrator/bin/garbd_ctl start" with timeout 60 seconds
+ stop program "/var/vcap/jobs/arbitrator/bin/garbd_ctl stop" with timeout 10 seconds
+ group vcap
+
+check process galera-healthcheck
+ with pidfile /var/vcap/sys/run/galera-healthcheck/galera-healthcheck.pid
+ start program "/var/vcap/jobs/arbitrator/bin/galera-healthcheck_ctl start" with timeout 60 seconds
+ stop program "/var/vcap/jobs/arbitrator/bin/galera-healthcheck_ctl stop" with timeout 10 seconds
+ group vcap
diff --git a/jobs/arbitrator/spec b/jobs/arbitrator/spec
new file mode 100644
index 00000000..93ca6f85
--- /dev/null
+++ b/jobs/arbitrator/spec
@@ -0,0 +1,35 @@
+---
+name: arbitrator
+
+templates:
+ garbd_ctl.erb: bin/garbd_ctl
+ garbd_config.erb: config/garbd_config
+ galera-healthcheck_ctl.erb: bin/galera-healthcheck_ctl
+ galera_healthcheck_config.yaml.erb: config/galera_healthcheck_config.yaml
+
+packages:
+- mariadb
+- galera-healthcheck
+- common
+
+properties:
+ cf_mysql.mysql.admin_username:
+ description: 'Username for the MySQL server admin user'
+ default: 'root'
+ cf_mysql.mysql.admin_password:
+ description: 'Password for the MySQL server admin user'
+ cf_mysql.mysql.port:
+ description: 'Port the mysql server should bind to'
+ default: 3306
+ cf_mysql.mysql.galera_port:
+ description: 'Port which garbd listens on'
+ default: 4567
+ cf_mysql.mysql.healthcheck_port:
+ description: 'Port used by healthcheck process to listen on'
+ default: 9200
+ cf_mysql.mysql.cluster_ips:
+ description: 'List of nodes. Must have the same number of ips as there are nodes in the cluster'
+ cf_mysql.mysql.bootstrap_endpoint.username:
+ description: 'Username used by the bootstrap endpoints for Basic Auth'
+ cf_mysql.mysql.bootstrap_endpoint.password:
+ description: 'Password used by the bootstrap endpoints for Basic Auth'
diff --git a/jobs/arbitrator/templates/galera-healthcheck_ctl.erb b/jobs/arbitrator/templates/galera-healthcheck_ctl.erb
new file mode 100755
index 00000000..2bca3c15
--- /dev/null
+++ b/jobs/arbitrator/templates/galera-healthcheck_ctl.erb
@@ -0,0 +1,42 @@
+#!/bin/bash -e
+
+job_dir=/var/vcap/jobs/arbitrator
+run_dir=/var/vcap/sys/run/galera-healthcheck
+log_dir=/var/vcap/sys/log/galera-healthcheck
+package_dir=/var/vcap/packages/galera-healthcheck
+pidfile=$run_dir/galera-healthcheck.pid
+
+export GOROOT=/var/vcap/packages/golang
+export PATH=$GOROOT/bin:$PWD/bin:$PATH
+
+source /var/vcap/packages/common/utils.sh
+
+case $1 in
+
+ start)
+ log "Starting galera-healthcheck..."
+ pid_guard $pidfile "Galera Healthcheck"
+
+ mkdir -p $run_dir
+ mkdir -p $log_dir
+
+ cd $package_dir
+
+ $package_dir/bin/galera-healthcheck \
+ -configPath=$job_dir/config/galera_healthcheck_config.yaml \
+ >>$log_dir/galera-healthcheck.stdout.log 2>>$log_dir/galera-healthcheck.stderr.log &
+
+ log "Starting galera-healthcheck... done"
+ ;;
+
+ stop)
+ log "Stopping galera-healthcheck..."
+ kill_and_wait $pidfile
+ log "Stopping galera-healthcheck... done"
+ ;;
+
+ *)
+ echo "Usage: galera-healthcheck_ctl {start|stop}"
+ ;;
+
+esac
diff --git a/jobs/arbitrator/templates/galera_healthcheck_config.yaml.erb b/jobs/arbitrator/templates/galera_healthcheck_config.yaml.erb
new file mode 100644
index 00000000..690dc9f4
--- /dev/null
+++ b/jobs/arbitrator/templates/galera_healthcheck_config.yaml.erb
@@ -0,0 +1,17 @@
+---
+Port: <%= p('cf_mysql.mysql.healthcheck_port') %>
+PidFile: '/var/vcap/sys/run/galera-healthcheck/galera-healthcheck.pid'
+MysqldPath: '/var/vcap/packages/mariadb/bin/mysqld'
+DB:
+ User: <%= p('cf_mysql.mysql.admin_username') %>
+ Password: <%= p('cf_mysql.mysql.admin_password') %>
+# This is the config that bosh sets up by default for monit.
+Monit:
+ User: 'vcap'
+ Password: 'random-password'
+ Host: 'localhost'
+ Port: 2822
+ ServiceName: 'garbd'
+BootstrapEndpoint:
+ Username: <%= p('cf_mysql.mysql.bootstrap_endpoint.username') %>
+ Password: <%= p('cf_mysql.mysql.bootstrap_endpoint.password') %>
diff --git a/jobs/arbitrator/templates/garbd_config.erb b/jobs/arbitrator/templates/garbd_config.erb
new file mode 100644
index 00000000..62d58ad5
--- /dev/null
+++ b/jobs/arbitrator/templates/garbd_config.erb
@@ -0,0 +1,9 @@
+<%
+# cluster_ips may contain nil values due to lack of flexibility in spiff
+cluster_ips = p('cf_mysql.mysql.cluster_ips').compact
+%>
+
+group = cf-mariadb-galera-cluster
+<% galera_port = p('cf_mysql.mysql.galera_port') %>
+<% node_addresses = cluster_ips.map { |ip| "#{ip}:#{galera_port}" } %>
+address = gcomm://<%= node_addresses.join(',') %>
diff --git a/jobs/arbitrator/templates/garbd_ctl.erb b/jobs/arbitrator/templates/garbd_ctl.erb
new file mode 100644
index 00000000..44501025
--- /dev/null
+++ b/jobs/arbitrator/templates/garbd_ctl.erb
@@ -0,0 +1,41 @@
+#!/bin/bash -e
+
+job_dir=/var/vcap/jobs/arbitrator
+run_dir=/var/vcap/sys/run/garbd
+log_dir=/var/vcap/sys/log/garbd
+package_dir=/var/vcap/packages/mariadb
+pidfile=$run_dir/garbd.pid
+
+source /var/vcap/packages/common/utils.sh
+
+case $1 in
+
+start)
+ log "Starting Galera Arbitrator..."
+ pid_guard $pidfile "Galera Arbitrator"
+
+ mkdir -p $run_dir
+ mkdir -p $log_dir
+
+ echo $$ > $pidfile
+ chown vcap:vcap $pidfile
+
+ exec chpst -u vcap:vcap $package_dir/bin/garbd \
+ --cfg $job_dir/config/garbd_config \
+ >>$log_dir/garbd.stdout.log \
+ 2>>$log_dir/garbd.stderr.log
+
+ log "Starting garbd... done"
+;;
+
+stop)
+ log "Stopping garbd..."
+ kill_and_wait $pidfile
+ log "Stopping garbd... done"
+;;
+
+*)
+ echo "Usage: garbd_ctl {start|stop}"
+;;
+
+esac
diff --git a/jobs/bootstrap/spec b/jobs/bootstrap/spec
index f3380dff..8fad76c7 100644
--- a/jobs/bootstrap/spec
+++ b/jobs/bootstrap/spec
@@ -6,14 +6,14 @@ templates:
errand.sh.erb: bin/run
config.yml.erb: config/config.yml
properties:
- healthcheck_port:
+ cf_mysql.mysql.healthcheck_port:
description: 'Port used by healthcheck process to listen on'
default: 9200
- cluster_ips:
+ cf_mysql.mysql.cluster_ips:
description: 'IP addresses of all MySQL nodes'
- database_startup_timeout:
+ cf_mysql.mysql.database_startup_timeout:
description: 'Maximum time to transition to or from a stopped or started state before we timeout.'
- bootstrap_endpoint.username:
+ cf_mysql.mysql.bootstrap_endpoint.username:
description: 'Username used to contact the bootstrap endpoints via Basic Auth'
- bootstrap_endpoint.password:
+ cf_mysql.mysql.bootstrap_endpoint.password:
description: 'Password used to contact the bootstrap endpoints via Basic Auth'
diff --git a/jobs/bootstrap/templates/config.yml.erb b/jobs/bootstrap/templates/config.yml.erb
index 2898401c..1ff378a4 100644
--- a/jobs/bootstrap/templates/config.yml.erb
+++ b/jobs/bootstrap/templates/config.yml.erb
@@ -1,7 +1,12 @@
+<%
+# cluster_ips may contain nil values due to lack of flexibility in spiff
+cluster_ips = p('cf_mysql.mysql.cluster_ips').compact
+%>
+
HealthcheckURLs:
- <% p('cluster_ips').each do |ip| %>
- - http://<%= ip %>:<%= p('healthcheck_port') %>
+ <% cluster_ips.each do |ip| %>
+ - http://<%= ip %>:<%= p('cf_mysql.mysql.healthcheck_port') %>
<% end %>
-DatabaseStartupTimeout: <%= p('database_startup_timeout') %>
-Username: <%= p('bootstrap_endpoint.username') %>
-Password: <%= p('bootstrap_endpoint.password') %>
+DatabaseStartupTimeout: <%= p('cf_mysql.mysql.database_startup_timeout') %>
+Username: <%= p('cf_mysql.mysql.bootstrap_endpoint.username') %>
+Password: <%= p('cf_mysql.mysql.bootstrap_endpoint.password') %>
diff --git a/jobs/broker-deregistrar/spec b/jobs/broker-deregistrar/spec
index 6b8bf6be..d89f2545 100644
--- a/jobs/broker-deregistrar/spec
+++ b/jobs/broker-deregistrar/spec
@@ -14,5 +14,5 @@ properties:
description: 'Username of the admin user'
cf.admin_password:
description: 'Password of the admin user'
- broker.name:
- description: 'Name of the service broker'
+ cf_mysql.broker.services:
+ description: 'List of services the broker provides'
diff --git a/jobs/broker-deregistrar/templates/errand.sh.erb b/jobs/broker-deregistrar/templates/errand.sh.erb
index 41ab0b12..3bb8dde5 100644
--- a/jobs/broker-deregistrar/templates/errand.sh.erb
+++ b/jobs/broker-deregistrar/templates/errand.sh.erb
@@ -6,7 +6,7 @@ CF_API_URL='<%= p("cf.api_url") %>'
CF_ADMIN_USERNAME='<%= p("cf.admin_username") %>'
CF_ADMIN_PASSWORD='<%= p("cf.admin_password") %>'
-BROKER_NAME='<%= p("broker.name") %>'
+BROKER_NAME='<%= p("cf_mysql.broker.services").first["name"] %>'
export PATH=/var/vcap/packages/cli/bin
diff --git a/jobs/broker-registrar/spec b/jobs/broker-registrar/spec
index ded099fd..0370a065 100644
--- a/jobs/broker-registrar/spec
+++ b/jobs/broker-registrar/spec
@@ -14,19 +14,19 @@ properties:
description: 'Username of the admin user'
cf.admin_password:
description: 'Password of the admin user'
- broker.name:
- description: 'Name of the service broker'
- broker.protocol:
+
+ cf_mysql.external_host:
+ description: 'Host address of the service broker'
+
+ cf_mysql.broker.services:
+ description: 'List of services the broker provides'
+ cf_mysql.broker.protocol:
description: 'Protocol (http/https) provided to the Cloud Controller when registering/deregistering the broker'
default: https
- broker.host:
- description: 'Host address of the service broker'
- broker.port:
+ cf_mysql.broker.port:
description: 'Port for the service broker'
default: 443
- broker.username:
+ cf_mysql.broker.auth_username:
description: 'Basic Auth username for the service broker'
- broker.password:
+ cf_mysql.broker.auth_password:
description: 'Basic Auth password for the service broker'
- broker.services:
- description: 'Basic plans object for registering'
\ No newline at end of file
diff --git a/jobs/broker-registrar/templates/errand.sh.erb b/jobs/broker-registrar/templates/errand.sh.erb
index e3bfe0ea..41977089 100644
--- a/jobs/broker-registrar/templates/errand.sh.erb
+++ b/jobs/broker-registrar/templates/errand.sh.erb
@@ -7,10 +7,10 @@ CF_ADMIN_USERNAME='<%= p("cf.admin_username") %>'
CF_ADMIN_PASSWORD='<%= p("cf.admin_password") %>'
CF_SKIP_SSL_VALIDATION='<%= p("cf.skip_ssl_validation") %>'
-BROKER_NAME='<%= p("broker.name") %>'
-BROKER_URL='<%= p("broker.protocol") %>://<%= p("broker.host") %>:<%= p("broker.port") %>'
-BROKER_USERNAME='<%= p("broker.username") %>'
-BROKER_PASSWORD='<%= p("broker.password") %>'
+BROKER_NAME='<%= p("cf_mysql.broker.services").first["name"] %>'
+BROKER_URL='<%= p("cf_mysql.broker.protocol") %>://<%= p("cf_mysql.external_host") %>:<%= p("cf_mysql.broker.port") %>'
+BROKER_USERNAME='<%= p("cf_mysql.broker.auth_username") %>'
+BROKER_PASSWORD='<%= p("cf_mysql.broker.auth_password") %>'
function updateServiceBroker() {
echo "Service broker already exists - updating broker"
@@ -45,11 +45,11 @@ cf auth \
createServiceBroker || updateServiceBroker
# Loop over plans for p-mysql broker and enable if is public
-<% service = p('broker.services').first %>
+<% service = p('cf_mysql.broker.services').first %>
<% service['plans'].each do |plan| %>
# Default plan to public if not specified in manifest
<% is_private = ( !plan.has_key?('private') ? false : plan['private'] ) %>
<% unless is_private %>
cf enable-service-access ${BROKER_NAME} -p '<%= plan['name'] %>'
<% end %>
-<% end %>
\ No newline at end of file
+<% end %>
diff --git a/jobs/cf-mysql-broker/spec b/jobs/cf-mysql-broker/spec
index b613bf08..ede93ea4 100644
--- a/jobs/cf-mysql-broker/spec
+++ b/jobs/cf-mysql-broker/spec
@@ -24,75 +24,80 @@ packages:
- quota-enforcer
properties:
- auth_username:
- description: "Broker's basic auth username"
- auth_password:
- description: "Broker's basic auth password"
+ nats.user:
+ description: 'Username for broker to register a route with NATS'
+ nats.password:
+ description: 'Password for broker to register a route with NATS'
+ nats.port:
+ description: 'IP port of Cloud Foundry NATS server'
+ nats.machines:
+ description: 'IP of each NATS cluster member.'
- cookie_secret:
- description: 'A unique secret key, used to sign sessions'
+ cf.api_url:
+ description: 'URL of the CloudFoundry Cloud Controller'
+ cf.skip_ssl_validation:
+ description: 'Determines whether dashboard verifies SSL certificates when communicating with Cloud Controller and UAA'
+ default: false
+
+ syslog_aggregator.address:
+ description: "IP address for syslog aggregator"
+ syslog_aggregator.port:
+ description: "TCP port of syslog aggregator"
+ syslog_aggregator.all:
+ description: "Define whether forwarders should also send non-mysql syslog activity to the aggregator."
+ default: false
+ syslog_aggregator.transport:
+ description: "Transport to be used when forwarding logs (tcp|udp|relp)."
+ default: "tcp"
- mysql_node.host:
+ cf_mysql.host:
description: 'Host (DNS) or IP address used by the broker and bound applications to reach the service'
- mysql_node.port:
+ cf_mysql.external_host:
+ description: 'Host used to register a route for the broker with the router in cf-release via NATS. By registering the broker with Cloud Foundry using this route, and using the router for load balancing, the broker can be horizontally scaled. Domain is typically the same as system domain in cf-release.'
+
+ cf_mysql.mysql.port:
description: 'Port used by the broker and bound applications to reach the service'
default: 3306
- mysql_node.admin_username:
+ cf_mysql.mysql.admin_username:
description: 'Username for the admin MySQL account'
default: 'root'
- mysql_node.admin_password:
+ cf_mysql.mysql.admin_password:
description: 'Password for the admin MySQL account'
- mysql_node.persistent_disk:
+ cf_mysql.mysql.persistent_disk:
description: 'Size of the persistent disk allocated to the MySQL node for storage'
- mysql_node.gcache_size:
+ cf_mysql.mysql.gcache_size:
description: 'Cache size used by galera (maximum amount of data possible in an IST), in MB'
default: 512
- mysql_node.ib_log_file_size:
+ cf_mysql.mysql.ib_log_file_size:
description: 'Size of the ib_log_file used by innodb, in MB'
default: 1024
- max_user_connections_default:
+ cf_mysql.broker.auth_username:
+ description: "Broker's basic auth username"
+ cf_mysql.broker.auth_password:
+ description: "Broker's basic auth password"
+ cf_mysql.broker.cookie_secret:
+ description: 'A unique secret key, used to sign sessions'
+ cf_mysql.broker.max_user_connections_default:
description: 'number of user connections to allow in a plan if not specified'
default: 40
-
- services:
+ cf_mysql.broker.services:
description: 'Services and plans offered by the broker'
-
- cc_api_uri:
- description: 'URL of the CloudFoundry Cloud Controller'
-
- external_host:
- description: 'Host used to register a route for the broker with the router in cf-release via NATS. By registering the broker with Cloud Foundry using this route, and using the router for load balancing, the broker can be horizontally scaled. Domain is typically the same as system domain in cf-release.'
-
- ssl_enabled:
+ example: |
+ plans:
+ - name: 100mb
+ id: REPLACE-WITH-A-UNIQUE-GUID
+ description: Shared MySQL Server
+ max_storage_mb: 100
+ max_user_connections: 20
+ - name: 1gb
+ id: REPLACE-WITH-A-UNIQUE-GUID
+ description: Shared MySQL Server
+ max_storage_mb: 1000
+ max_user_connections: 40
+ cf_mysql.broker.ssl_enabled:
description: 'Determines use of https in dashboard url and in callback uri for calls to UAA'
default: true
-
- skip_ssl_validation:
- description: 'Determines whether dashboard verifies SSL certificates when communicating with Cloud Controller and UAA'
- default: false
-
- nats.user:
- description: 'Username for broker to register a route with NATS'
- nats.password:
- description: 'Password for broker to register a route with NATS'
- nats.port:
- description: 'IP port of Cloud Foundry NATS server'
- nats.machines:
- description: 'IP of each NATS cluster member.'
-
- networks.broker_network:
- description: 'Name of the network the broker will get its IP address from'
-
+
network_name:
description: "The name of the network (needed for the syslog aggregator)"
- syslog_aggregator.address:
- description: "IP address for syslog aggregator"
- syslog_aggregator.port:
- description: "TCP port of syslog aggregator"
- syslog_aggregator.all:
- description: "Define whether forwarders should also send non-mysql syslog activity to the aggregator."
- default: false
- syslog_aggregator.transport:
- description: "Transport to be used when forwarding logs (tcp|udp|relp)."
- default: "tcp"
diff --git a/jobs/cf-mysql-broker/templates/database.yml.erb b/jobs/cf-mysql-broker/templates/database.yml.erb
index 7faecd83..38092ba4 100644
--- a/jobs/cf-mysql-broker/templates/database.yml.erb
+++ b/jobs/cf-mysql-broker/templates/database.yml.erb
@@ -17,7 +17,7 @@ production:
connect_timeout: 20
read_timeout: 20
reconnect: true
- host: <%= p('mysql_node.host') %>
- port: <%= p('mysql_node.port') %>
- username: <%= p('mysql_node.admin_username') %>
- password: <%= p('mysql_node.admin_password') %>
+ host: <%= p('cf_mysql.host') %>
+ port: <%= p('cf_mysql.mysql.port') %>
+ username: <%= p('cf_mysql.mysql.admin_username') %>
+ password: <%= p('cf_mysql.mysql.admin_password') %>
diff --git a/jobs/cf-mysql-broker/templates/quota_enforcer_config.yml.erb b/jobs/cf-mysql-broker/templates/quota_enforcer_config.yml.erb
index e3c7cf0d..be556a45 100644
--- a/jobs/cf-mysql-broker/templates/quota_enforcer_config.yml.erb
+++ b/jobs/cf-mysql-broker/templates/quota_enforcer_config.yml.erb
@@ -1,6 +1,7 @@
---
-Host: <%= p('mysql_node.host') %>
-Port: <%= p('mysql_node.port') %>
-User: <%= p('mysql_node.admin_username') %>
-Password: <%= p('mysql_node.admin_password') %>
+Host: <%= p('cf_mysql.host') %>
+Port: <%= p('cf_mysql.mysql.port') %>
+User: <%= p('cf_mysql.mysql.admin_username') %>
+Password: <%= p('cf_mysql.mysql.admin_password') %>
DBName: mysql_broker
+ReadOnlyUser: roadmin
diff --git a/jobs/cf-mysql-broker/templates/registrar_settings.yml.erb b/jobs/cf-mysql-broker/templates/registrar_settings.yml.erb
index 877e3eb9..5490f222 100644
--- a/jobs/cf-mysql-broker/templates/registrar_settings.yml.erb
+++ b/jobs/cf-mysql-broker/templates/registrar_settings.yml.erb
@@ -1,13 +1,16 @@
message_bus_servers:
<% p('nats.machines').each do |ip| %>
- - host: <%= ip %>:<%= p('nats.port') %>
- user: <%= p('nats.user') %>
- password: <%= p('nats.password') %>
+- host: <%= ip %>:<%= p('nats.port') %>
+ user: <%= p('nats.user') %>
+ password: <%= p('nats.password') %>
<% end %>
-external_host: <%= p('external_host') %>
-external_ip: <%= spec.networks.send(p('network_name')).ip %>
-port: 80
-health_checker:
+host: <%= spec.networks.send(p('network_name')).ip %>
+routes:
+- name: "broker_<%= index %>"
+ port: 80
+ uris:
+ - <%= p('cf_mysql.external_host') %>
+ registration_interval: 10
+ health_check:
name: script
- interval_in_seconds: 10
- healthcheck_script_path: /var/vcap/jobs/cf-mysql-broker/bin/healthcheck.sh
+ script_path: /var/vcap/jobs/cf-mysql-broker/bin/healthcheck.sh
diff --git a/jobs/cf-mysql-broker/templates/settings.yml.erb b/jobs/cf-mysql-broker/templates/settings.yml.erb
index 6c0e101c..afcd98cb 100644
--- a/jobs/cf-mysql-broker/templates/settings.yml.erb
+++ b/jobs/cf-mysql-broker/templates/settings.yml.erb
@@ -1,65 +1,65 @@
production:
database_config_path: '/var/vcap/jobs/cf-mysql-broker/config/database.yml'
- auth_username: '<%= p('auth_username') %>'
- auth_password: '<%= p('auth_password') %>'
- cookie_secret: <%= p('cookie_secret') %>
+ auth_username: '<%= p('cf_mysql.broker.auth_username') %>'
+ auth_password: '<%= p('cf_mysql.broker.auth_password') %>'
+ cookie_secret: <%= p('cf_mysql.broker.cookie_secret') %>
session_expiry: 86400
- external_host: <%= p('external_host') %>
+ external_host: <%= p('cf_mysql.external_host') %>
- ssl_enabled: <%= p('ssl_enabled') %>
- skip_ssl_validation: <%= p('skip_ssl_validation') %>
+ ssl_enabled: <%= p('cf_mysql.broker.ssl_enabled') %>
+ skip_ssl_validation: <%= p('cf.skip_ssl_validation') %>
- cc_api_uri: <%= p('cc_api_uri') %>
+ cc_api_uri: <%= p('cf.api_url') %>
- persistent_disk: <%= p('mysql_node.persistent_disk') %>
- ib_log_file_size: <%= p('mysql_node.ib_log_file_size')%>
- gcache_size: <%= p('mysql_node.gcache_size')%>
+ persistent_disk: <%= p('cf_mysql.mysql.persistent_disk') %>
+ ib_log_file_size: <%= p('cf_mysql.mysql.ib_log_file_size')%>
+ gcache_size: <%= p('cf_mysql.mysql.gcache_size')%>
services:
- <% (properties.services || []).each do |service| %>
- - id: <%= service.id %>
- name: <%= service.name %>
- plan_updateable: <%= service.plan_updateable %>
- description: <%= service.description %>
+ <% p('cf_mysql.broker.services').each do |service| %>
+ - id: <%= service['id'] %>
+ name: <%= service['name'] %>
+ plan_updateable: <%= service['plan_updateable'] %>
+ description: <%= service['description'] %>
tags:
- <% (service.tags || []).each do |tag| %>
+ <% (service['tags'] || []).each do |tag| %>
- <%= tag %>
<% end %>
metadata:
- displayName: <%= service.metadata.displayName %>
- imageUrl: <%= service.metadata.imageUrl %>
- longDescription: <%= service.metadata.longDescription %>
- providerDisplayName: <%= service.metadata.providerDisplayName %>
- documentationUrl: <%= service.metadata.documentationUrl %>
- supportUrl: <%= service.metadata.supportUrl %>
+ displayName: <%= service['metadata']['displayName'] %>
+ imageUrl: <%= service['metadata']['imageUrl'] %>
+ longDescription: <%= service['metadata']['longDescription'] %>
+ providerDisplayName: <%= service['metadata']['providerDisplayName'] %>
+ documentationUrl: <%= service['metadata']['documentationUrl'] %>
+ supportUrl: <%= service['metadata']['supportUrl'] %>
plans:
- <% (service.plans || []).each do |plan| %>
- - id: <%= plan.id || plan.guid %>
+ <% (service['plans'] || []).each do |plan| %>
+ - id: <%= plan['id'] || plan['guid'] %>
<%
- if plan.name !~ /^[a-z0-9\_\-]+$/
- raise "Plan name '#{plan.name}' must only contain lowercase letters, numbers, hyphen(-), or underscore(_)."
+ if plan['name'] !~ /^[a-z0-9\_\-]+$/
+ raise "Plan name '#{plan['name']}' must only contain lowercase letters, numbers, hyphen(-), or underscore(_)."
end
%>
- name: <%= plan.name %>
- description: <%= plan.description %>
- max_storage_mb: <%= plan.max_storage_mb %>
+ name: <%= plan['name'] %>
+ description: <%= plan['description'] %>
+ max_storage_mb: <%= plan['max_storage_mb'] %>
- <% max_user_connections = plan.max_user_connections || p('max_user_connections_default') %>
+ <% max_user_connections = plan['max_user_connections'] || p('cf_mysql.broker.max_user_connections_default') %>
max_user_connections: <%= max_user_connections %>
<%
- if !plan.metadata
+ if !plan['metadata']
costs = []
bullets = [
- "#{plan.description}",
- "#{plan.max_storage_mb} MB storage",
+ "#{plan['description']}",
+ "#{plan['max_storage_mb']} MB storage",
"#{max_user_connections} concurrent connections"
]
- display_name = plan.name
+ display_name = plan['name']
else
- costs = plan.metadata.costs || []
- bullets = plan.metadata.bullets || []
- display_name = plan.metadata.displayName
+ costs = plan['metadata']['costs'] || []
+ bullets = plan['metadata']['bullets'] || []
+ display_name = plan['metadata']['displayName']
end
%>
@@ -73,8 +73,8 @@ production:
costs:
<% costs.each do |cost| %>
- amount:
- usd: <%= cost.amount.usd %>
- unit: <%= cost.unit %>
+ usd: <%= cost['amount']['usd'] %>
+ unit: <%= cost['unit'] %>
<% end %>
<% end %>
@@ -90,7 +90,7 @@ production:
displayName: <%= display_name %>
<% end %>
dashboard_client:
- id: <%= service.dashboard_client.id %>
- secret: <%= service.dashboard_client.secret %>
- redirect_uri: <%= "#{p('ssl_enabled') ? 'https' : 'http'}://#{p('external_host')}/" %>
+ id: <%= service['dashboard_client']['id'] %>
+ secret: <%= service['dashboard_client']['secret'] %>
+ redirect_uri: <%= "#{p('cf_mysql.broker.ssl_enabled') ? 'https' : 'http'}://#{p('cf_mysql.external_host')}/" %>
<% end %>
diff --git a/jobs/mysql/monit b/jobs/mysql/monit
index 0dbc67de..0de1e944 100644
--- a/jobs/mysql/monit
+++ b/jobs/mysql/monit
@@ -1,4 +1,4 @@
-<% monit_db_timeout = (p('database_startup_timeout') * 0.9 ).round %>
+<% monit_db_timeout = ( p('cf_mysql.mysql.database_startup_timeout') * 0.9 ).round %>
check process mariadb_ctrl
with pidfile /var/vcap/sys/run/mariadb_ctl/mariadb_ctl.pid
start program "/var/vcap/jobs/mysql/bin/mariadb_ctl start" with timeout <%= monit_db_timeout %> seconds
@@ -18,5 +18,3 @@ check process gra-log-purger-executable
stop program "/var/vcap/jobs/mysql/bin/gra-log-purger_ctl stop" with timeout 10 seconds
group vcap
-
-
diff --git a/jobs/mysql/spec b/jobs/mysql/spec
index a4104106..1ba5874f 100644
--- a/jobs/mysql/spec
+++ b/jobs/mysql/spec
@@ -24,68 +24,72 @@ packages:
- syslog_aggregator
properties:
- admin_username:
+ syslog_aggregator.address:
+ description: "IP address for syslog aggregator"
+ syslog_aggregator.port:
+ description: "TCP port of syslog aggregator"
+ syslog_aggregator.all:
+ description: "Define whether forwarders should also send non-mysql syslog activity to the aggregator."
+ default: false
+ syslog_aggregator.transport:
+ description: "Transport to be used when forwarding logs (tcp|udp|relp)."
+ default: "tcp"
+
+ cf_mysql.mysql.admin_username:
description: 'Username for the MySQL server admin user'
default: 'root'
- admin_password:
+ cf_mysql.mysql.admin_password:
description: 'Password for the MySQL server admin user'
- port:
+ cf_mysql.mysql.port:
description: 'Port the mysql server should bind to'
default: 3306
- healthcheck_port:
+ cf_mysql.mysql.healthcheck_port:
description: 'Port used by healthcheck process to listen on'
default: 9200
- max_connections:
+ cf_mysql.mysql.max_connections:
description: 'Maximum total number of database connections for the node'
default: 1500
- innodb_buffer_pool_size:
- description: 'The size in bytes of the memory buffer InnoDB uses to cache data and indexes of its tables'
- cluster_ips:
+ cf_mysql.mysql.innodb_buffer_pool_size:
+ description: 'Optional, the size in bytes of the memory buffer InnoDB uses to cache data and indexes of its tables'
+ cf_mysql.mysql.cluster_ips:
description: 'List of nodes. Must have the same number of ips as there are nodes in the cluster'
- max_heap_table_size:
+ cf_mysql.mysql.max_heap_table_size:
description: 'The maximum size (in rows) to which user-created MEMORY tables are permitted to grow'
default: 16777216
- tmp_table_size:
+ cf_mysql.mysql.tmp_table_size:
description: 'The maximum size (in bytes) of internal in-memory temporary tables'
default: 33554432
- wsrep_max_ws_rows:
+ cf_mysql.mysql.wsrep_max_ws_rows:
description: 'Maximum permitted number of rows per writeset.'
default: 131072
- wsrep_max_ws_size:
+ cf_mysql.mysql.wsrep_max_ws_size:
description: 'Maximum permitted size in bytes per writeset.'
default: 1073741824
- skip_name_resolve:
+ cf_mysql.mysql.skip_name_resolve:
description: 'Do not restrict connections to database based on hostname'
- default: false
-
+ default: true
#these two properties are also used by the Broker
- gcache_size:
+ cf_mysql.mysql.gcache_size:
description: 'Cache size used by galera (maximum amount of data possible in an IST), in MB'
default: 512
- ib_log_file_size:
+ cf_mysql.mysql.ib_log_file_size:
description: 'Size of the ib_log_file used by innodb, in MB'
default: 1024
- seeded_databases:
+ cf_mysql.mysql.seeded_databases:
description: 'Set of databases to seed'
default: {}
-
- network_name:
- description: "The name of the network (needed for the syslog aggregator)"
- syslog_aggregator.address:
- description: "IP address for syslog aggregator"
- syslog_aggregator.port:
- description: "TCP port of syslog aggregator"
- syslog_aggregator.all:
- description: "Define whether forwarders should also send non-mysql syslog activity to the aggregator."
+ cf_mysql.mysql.roadmin_enabled:
+ description: 'Whether read only user is enabled'
default: false
- syslog_aggregator.transport:
- description: "Transport to be used when forwarding logs (tcp|udp|relp)."
- default: "tcp"
-
- database_startup_timeout:
+ cf_mysql.mysql.roadmin_password:
+ description: 'Password for the MySQL server read-only admin user'
+ cf_mysql.mysql.database_startup_timeout:
description: 'How long the startup script waits for the database to come online (in seconds)'
-
- bootstrap_endpoint.username:
+ cf_mysql.mysql.bootstrap_endpoint.username:
description: 'Username used by the bootstrap endpoints for Basic Auth'
- bootstrap_endpoint.password:
+ cf_mysql.mysql.bootstrap_endpoint.password:
description: 'Password used by the bootstrap endpoints for Basic Auth'
+
+ network_name:
+ description: "The name of the network (needed for the syslog aggregator)"
+
diff --git a/jobs/mysql/templates/galera_healthcheck_config.yaml.erb b/jobs/mysql/templates/galera_healthcheck_config.yaml.erb
index 6f1cffd5..654e7b31 100644
--- a/jobs/mysql/templates/galera_healthcheck_config.yaml.erb
+++ b/jobs/mysql/templates/galera_healthcheck_config.yaml.erb
@@ -1,10 +1,10 @@
---
-Port: <%= p('healthcheck_port') %>
+Port: <%= p('cf_mysql.mysql.healthcheck_port') %>
PidFile: '/var/vcap/sys/run/galera-healthcheck/galera-healthcheck.pid'
MysqldPath: '/var/vcap/packages/mariadb/bin/mysqld'
DB:
- User: <%= p('admin_username') %>
- Password: <%= p('admin_password') %>
+ User: <%= p('cf_mysql.mysql.admin_username') %>
+ Password: <%= p('cf_mysql.mysql.admin_password') %>
# This is the config that bosh sets up by default for monit.
Monit:
User: 'vcap'
@@ -14,5 +14,5 @@ Monit:
MysqlStateFilePath: '/var/vcap/store/mysql/state.txt'
ServiceName: 'mariadb_ctrl'
BootstrapEndpoint:
- Username: <%= p('bootstrap_endpoint.username') %>
- Password: <%= p('bootstrap_endpoint.password') %>
+ Username: <%= p('cf_mysql.mysql.bootstrap_endpoint.username') %>
+ Password: <%= p('cf_mysql.mysql.bootstrap_endpoint.password') %>
diff --git a/jobs/mysql/templates/mariadb_ctl_config.yml.erb b/jobs/mysql/templates/mariadb_ctl_config.yml.erb
index c33a21eb..7f606163 100644
--- a/jobs/mysql/templates/mariadb_ctl_config.yml.erb
+++ b/jobs/mysql/templates/mariadb_ctl_config.yml.erb
@@ -1,13 +1,23 @@
---
+<%
+# cluster_ips may contain nil values due to lack of flexibility in spiff
+cluster_ips = p('cf_mysql.mysql.cluster_ips').compact
+%>
+
LogFileLocation: /var/vcap/sys/log/mysql/mariadb_ctrl.combined.log
PidFile: /var/vcap/sys/run/mariadb_ctl/mariadb_ctl.pid
Db:
DaemonPath: /var/vcap/packages/mariadb_ctrl/bin/mysql_daemon.sh
UpgradePath: /var/vcap/packages/mariadb/bin/mysql_upgrade
- User: <%= p('admin_username')%>
- Password: <%= p('admin_password')%>
+ User: <%= p('cf_mysql.mysql.admin_username')%>
+ Password: <%= p('cf_mysql.mysql.admin_password')%>
+ ReadOnlyUserEnabled: <%= p('cf_mysql.mysql.roadmin_enabled')%>
+ ReadOnlyUser: roadmin
+<% if_p('cf_mysql.mysql.roadmin_password') do |rpwd| %>
+ ReadOnlyPassword: <%= rpwd %>
+<% end %>
PreseededDatabases:
- <% p("seeded_databases").each do |seed| %>
+ <% p("cf_mysql.mysql.seeded_databases").each do |seed| %>
- DBName: <%= seed["name"] %>
User: <%= seed["username"]%>
Password: <%= seed["password"] %>
@@ -18,8 +28,8 @@ Upgrader:
Manager:
StateFileLocation: /var/vcap/store/mysql/state.txt
ClusterIps:
- <% p('cluster_ips').each do |ip| %>
+ <% cluster_ips.each do |ip| %>
- <%= ip %>
<% end %>
MyIP: <%= spec.networks.send(p('network_name')).ip %>
- DatabaseStartupTimeout: <%= (p('database_startup_timeout') * 0.8).round %>
+ DatabaseStartupTimeout: <%= (p('cf_mysql.mysql.database_startup_timeout') * 0.8).round %>
diff --git a/jobs/mysql/templates/mariadb_init.erb b/jobs/mysql/templates/mariadb_init.erb
index 08a18996..a5a4759e 100644
--- a/jobs/mysql/templates/mariadb_init.erb
+++ b/jobs/mysql/templates/mariadb_init.erb
@@ -1,5 +1,5 @@
-GRANT ALL PRIVILEGES ON *.* TO '<%= properties.admin_username %>'@'%' WITH GRANT OPTION;
-UPDATE mysql.user SET Password=PASSWORD('<%= properties.admin_password %>') WHERE User='<%= properties.admin_username %>';
+GRANT ALL PRIVILEGES ON *.* TO '<%= p('cf_mysql.mysql.admin_username') %>'@'%' WITH GRANT OPTION;
+UPDATE mysql.user SET Password=PASSWORD('<%= p('cf_mysql.mysql.admin_password') %>') WHERE User='<%= p('cf_mysql.mysql.admin_username') %>';
DELETE FROM mysql.user WHERE User='';
FLUSH PRIVILEGES;
DROP DATABASE IF EXISTS test;
diff --git a/jobs/mysql/templates/my.cnf.erb b/jobs/mysql/templates/my.cnf.erb
index d30e37e2..9239a022 100644
--- a/jobs/mysql/templates/my.cnf.erb
+++ b/jobs/mysql/templates/my.cnf.erb
@@ -1,5 +1,8 @@
<%
base_folder = '/var/vcap/sys/run/mysql'
+
+# cluster_ips may contain nil values due to lack of flexibility in spiff
+cluster_ips = p('cf_mysql.mysql.cluster_ips').compact
%>
<%
@@ -13,7 +16,7 @@ base_folder = '/var/vcap/sys/run/mysql'
%>
[client]
-port = <%= p('port') %>
+port = <%= p('cf_mysql.mysql.port') %>
socket = <%= "#{base_folder}/mysqld.sock" %>
[mysqld_safe]
@@ -23,15 +26,16 @@ nice = 0
[mysqld]
# GALERA options:
wsrep_provider=/var/vcap/packages/mariadb/lib/plugin/libgalera_smm.so
-wsrep_provider_options="gcache.size=<%= p('gcache_size') %>M;pc.recovery=TRUE"
-wsrep_cluster_address="gcomm://<%= p('cluster_ips').join(",") %>"
+wsrep_provider_options="gcache.size=<%= p('cf_mysql.mysql.gcache_size') %>M;pc.recovery=TRUE"
+wsrep_cluster_address="gcomm://<%= cluster_ips.join(",") %>"
wsrep_node_address='<%= spec.networks.send(p('network_name')).ip %>'
-wsrep_node_name='mysql/<%= index %>'
+wsrep_node_name='<%= name %>/<%= index %>'
wsrep_cluster_name='cf-mariadb-galera-cluster'
wsrep_sst_method=xtrabackup-v2
-wsrep_sst_auth=<%= p('admin_username')%>:<%= p('admin_password')%>
-wsrep_max_ws_rows=<%= p('wsrep_max_ws_rows') %>
-wsrep_max_ws_size=<%= p('wsrep_max_ws_size') %>
+wsrep_sst_auth=<%= p('cf_mysql.mysql.admin_username')%>:<%= p('cf_mysql.mysql.admin_password')%>
+wsrep_max_ws_rows=<%= p('cf_mysql.mysql.wsrep_max_ws_rows') %>
+wsrep_max_ws_size=<%= p('cf_mysql.mysql.wsrep_max_ws_size') %>
+wsrep_load_data_splitting='ON'
#wsrep_on='OFF'
#wsrep_desync='ON'
#wsrep_OSU_method='RSU'
@@ -41,28 +45,26 @@ collation_server = utf8_unicode_ci
character_set_server = utf8
user = vcap
socket = <%= "#{base_folder}/mysqld.sock" %>
-port = <%= p('port') %>
+port = <%= p('cf_mysql.mysql.port') %>
basedir = /var/vcap/packages/mariadb
datadir = /var/vcap/store/mysql
tmpdir = /var/vcap/data/mysql/tmp
language = /var/vcap/packages/mariadb/share/english
pid-file = /var/vcap/sys/run/mysql/mysql.pid
-<% unless use_syslog%>log-error = /var/vcap/sys/log/mysql/mysql.err.log<%end%>
+log-error = /var/vcap/sys/log/mysql/mysql.err.log
init-file = /var/vcap/jobs/mysql/config/mariadb_init
skip-external-locking = TRUE
max_allowed_packet = 256M
-<% if p('skip_name_resolve') %>
-skip_name_resolve = 1
-<% else %>
-skip_name_resolve = 0
+<% if_p('cf_mysql.mysql.skip_name_resolve') do |disable_dns| %>
+<%= "skip_name_resolve" if disable_dns %>
<% end %>
innodb_file_per_table = ON
innodb_file_format = Barracuda
-innodb_log_file_size = "<%= p('ib_log_file_size')%>MB"
+innodb_log_file_size = "<%= p('cf_mysql.mysql.ib_log_file_size')%>MB"
-max_heap_table_size = <%= p('max_heap_table_size') %>
-tmp_table_size = <%= p('tmp_table_size') %>
+max_heap_table_size = <%= p('cf_mysql.mysql.max_heap_table_size') %>
+tmp_table_size = <%= p('cf_mysql.mysql.tmp_table_size') %>
# These are mandatory MySQL settings for MariaDB Galera to work
binlog_format = ROW
@@ -75,11 +77,11 @@ query_cache_size = 0
innodb_stats_on_metadata = ON
innodb_stats_persistent = OFF
-<% if_p('innodb_buffer_pool_size') do |innodb_buffer_pool_size| %>
+<% if_p('cf_mysql.mysql.innodb_buffer_pool_size') do |innodb_buffer_pool_size| %>
innodb_buffer_pool_size = <%= innodb_buffer_pool_size %>
<% end %>
-<% if_p('max_connections') do |max_connections| %>
+<% if_p('cf_mysql.mysql.max_connections') do |max_connections| %>
max_connections = <%= max_connections %>
<% end %>
diff --git a/jobs/proxy/monit b/jobs/proxy/monit
index 92b74b86..6c748bc9 100644
--- a/jobs/proxy/monit
+++ b/jobs/proxy/monit
@@ -4,10 +4,10 @@ check process switchboard
stop program "/var/vcap/jobs/proxy/bin/switchboard_ctl stop" with timeout 10 seconds
group vcap
-<% if p("standalone") == false %>
+<% if p("cf_mysql.standalone") == false %>
check process route-registrar
with pidfile /var/vcap/sys/run/route-registrar/route-registrar.pid
start program "/var/vcap/jobs/proxy/bin/route-registrar_ctl start"
stop program "/var/vcap/jobs/proxy/bin/route-registrar_ctl stop"
group vcap
-<% end %>
\ No newline at end of file
+<% end %>
diff --git a/jobs/proxy/spec b/jobs/proxy/spec
index 9c5b347e..1910e8d4 100644
--- a/jobs/proxy/spec
+++ b/jobs/proxy/spec
@@ -16,29 +16,10 @@ packages:
- route-registrar
properties:
- proxy.port:
- description: "Port for the proxy to listen on"
- default: 3306
- proxy.healthcheck_timeout_millis:
- description: "Timeout (milliseconds) before assuming a backend is unhealthy"
- default: 5000
- proxy.api_force_https:
- description: "Redirect all HTTP requests to the API to HTTPS"
- default: true
- proxy.api_port:
- description: "Port for the proxy API to listen on"
- default: 80
- proxy.api_username:
- description: "Username for Basic Auth used to secure API"
- proxy.api_password:
- description: "Password for Basic Auth used to secure API"
- proxy.health_port:
- description: "Port for checking the health of the proxy process"
- default: 1936
- proxy.proxy_ips:
- description: "List of IP addresses for all proxy jobs"
- external_host:
- description: 'Domain of the route registered for the UI via NATS (with the router in cf-release)'
+
+ network_name:
+ description: "The name of the network (needed for the syslog aggregator)"
+
nats.user:
description: 'Username to register a route via NATS'
nats.password:
@@ -47,8 +28,7 @@ properties:
description: 'IP port of Cloud Foundry NATS server'
nats.machines:
description: 'IP of each NATS cluster member.'
- network_name:
- description: "The name of the network (needed for the syslog aggregator)"
+
syslog_aggregator.address:
description: "IP address for syslog aggregator"
syslog_aggregator.port:
@@ -59,8 +39,37 @@ properties:
syslog_aggregator.transport:
description: "Transport to be used when forwarding logs (tcp|udp|relp)."
default: "tcp"
- cluster_ips:
- description: "List of nodes. Must have the same number of ips as there are nodes in the cluster"
- standalone:
+
+ cf_mysql.external_host:
+ description: 'Domain of the route registered for the UI via NATS (with the router in cf-release)'
+
+ cf_mysql.standalone:
description: "Standalone Mode: Are you deploying MySQL without a CloudFoundry deployment?"
default: false
+
+ cf_mysql.mysql.cluster_ips:
+ description: "List of nodes. Must have the same number of ips as there are nodes in the cluster"
+ cf_mysql.proxy.port:
+ description: "Port for the proxy to listen on"
+ default: 3306
+ cf_mysql.proxy.healthcheck_timeout_millis:
+ description: "Timeout (milliseconds) before assuming a backend is unhealthy"
+ default: 5000
+ cf_mysql.proxy.api_port:
+ description: "Port for the proxy API to listen on"
+ default: 80
+ cf_mysql.proxy.api_force_https:
+ description: "Redirect all HTTP requests to the API to HTTPS"
+ default: true
+ cf_mysql.proxy.api_username:
+ description: "Username for Basic Auth used to secure API"
+ cf_mysql.proxy.api_password:
+ description: "Password for Basic Auth used to secure API"
+ cf_mysql.proxy.health_port:
+ description: "Port for checking the health of the proxy process"
+ default: 1936
+ cf_mysql.proxy.proxy_ips:
+ description: "List of IP addresses for all proxy jobs"
+ cf_mysql.proxy.arbitrator_ip:
+ description: "List of IP addresses for the arbitrator nodes of the MySQL cluster"
+ default: "no-arbitrator-ip"
diff --git a/jobs/proxy/templates/route-registrar.yml.erb b/jobs/proxy/templates/route-registrar.yml.erb
index e97f0fcd..8aa3fdf1 100644
--- a/jobs/proxy/templates/route-registrar.yml.erb
+++ b/jobs/proxy/templates/route-registrar.yml.erb
@@ -1,11 +1,15 @@
message_bus_servers:
<% p('nats.machines').each do |ip| %>
- - host: <%= ip %>:<%= p('nats.port') %>
- user: <%= p('nats.user') %>
- password: <%= p('nats.password') %>
+- host: <%= ip %>:<%= p('nats.port') %>
+ user: <%= p('nats.user') %>
+ password: <%= p('nats.password') %>
<% end %>
<% my_ip = spec.networks.send(p('network_name')).ip %>
-<% proxy_index = p('proxy.proxy_ips').index(my_ip) %>
-external_host: proxy-<%= proxy_index %>-<%= p('external_host') %>
-external_ip: <%= my_ip %>
-port: <%= p('proxy.api_port') %>
+<% proxy_index = p('cf_mysql.proxy.proxy_ips').index(my_ip) %>
+host: <%= my_ip %>
+routes:
+- name: "proxy_<%= index %>"
+ port: <%= p('cf_mysql.proxy.api_port') %>
+ uris:
+ - proxy-<%= proxy_index %>-<%= p('cf_mysql.external_host') %>
+ registration_interval: 10
diff --git a/jobs/proxy/templates/switchboard.yml.erb b/jobs/proxy/templates/switchboard.yml.erb
index 548d58bb..91ba6c89 100644
--- a/jobs/proxy/templates/switchboard.yml.erb
+++ b/jobs/proxy/templates/switchboard.yml.erb
@@ -1,20 +1,28 @@
+<%
+# cluster_ips may contain nil values due to lack of flexibility in spiff
+cluster_ips = p('cf_mysql.mysql.cluster_ips').compact
+
+# do not route traffic to arbitrator
+cluster_ips.delete(p('cf_mysql.proxy.arbitrator_ip'))
+%>
+
"API":
- "Port": <%= p('proxy.api_port') %>
- "ForceHttps": <%= p('proxy.api_force_https') %>
- "Username": <%= p('proxy.api_username') %>
- "Password": <%= p('proxy.api_password') %>
+ "Port": <%= p('cf_mysql.proxy.api_port') %>
+ "ForceHttps": <%= p('cf_mysql.proxy.api_force_https') %>
+ "Username": <%= p('cf_mysql.proxy.api_username') %>
+ "Password": <%= p('cf_mysql.proxy.api_password') %>
"Proxy":
- "Port": <%= p('proxy.port') %>
- "HealthcheckTimeoutMillis": <%= p("proxy.healthcheck_timeout_millis") %>
+ "Port": <%= p('cf_mysql.proxy.port') %>
+ "HealthcheckTimeoutMillis": <%= p("cf_mysql.proxy.healthcheck_timeout_millis") %>
"Backends":
- <% p('cluster_ips').each_with_index do |ip, n| %>
+ <% cluster_ips.each_with_index do |ip, n| %>
- "Host": <%= ip %>
"Port": 3306
"StatusPort": 9200
"StatusEndpoint": "galera_status"
"Name": "backend-<%= n %>"
<% end %>
-"HealthPort": <%= p('proxy.health_port') %>
+"HealthPort": <%= p('cf_mysql.proxy.health_port') %>
"ProfilerPort": 6060
"StaticDir": "/var/vcap/packages/switchboard/static"
"PidFile": "/var/vcap/sys/run/proxy/switchboard.pid"
diff --git a/manifest-generation/bosh-lite-stubs/cf-manifest.yml b/manifest-generation/bosh-lite-stubs/cf-manifest.yml
new file mode 100644
index 00000000..031d5e75
--- /dev/null
+++ b/manifest-generation/bosh-lite-stubs/cf-manifest.yml
@@ -0,0 +1,15 @@
+name: cf-warden
+director_uuid: REPLACE_WITH_DIRECTOR_UUID
+properties:
+ admin_username: admin
+ admin_password: admin
+ nats:
+ machines: [10.244.0.6]
+ password: nats
+ port: 4222
+ user: nats
+ system_domain: bosh-lite.com
+ app_domains:
+ - bosh-lite.com
+ domain: bosh-lite.com
+ skip_ssl_validation: true
diff --git a/manifest-generation/bosh-lite-stubs/iaas-settings.yml b/manifest-generation/bosh-lite-stubs/iaas-settings.yml
new file mode 100644
index 00000000..89815b9a
--- /dev/null
+++ b/manifest-generation/bosh-lite-stubs/iaas-settings.yml
@@ -0,0 +1,1291 @@
+iaas_settings:
+
+ stemcell:
+ name: bosh-warden-boshlite-ubuntu-trusty-go_agent
+ version: latest
+
+ compilation_cloud_properties: {}
+
+ resource_pool_cloud_properties:
+ - name: mysql_z1
+ cloud_properties: {}
+ - name: mysql_z2
+ cloud_properties: {}
+ - name: mysql_z3
+ cloud_properties: {}
+ - name: arbitrator_z3
+ cloud_properties: {}
+ - name: proxy_z1
+ cloud_properties: {}
+ - name: proxy_z2
+ cloud_properties: {}
+ - name: cf-mysql-broker_z1
+ cloud_properties: {}
+ - name: cf-mysql-broker_z2
+ cloud_properties: {}
+ - name: errands_z1
+ cloud_properties: {}
+
+ disk_pools:
+ - name: mysql-persistent-disk
+ disk_size: 100000
+ cloud_properties: {}
+
+ subnet_configs:
+ - name: mysql1
+ subnets:
+ - cloud_properties:
+ name: random
+ range: 10.244.7.0/30
+ reserved:
+ - 10.244.7.1
+ static:
+ - 10.244.7.2
+ - cloud_properties:
+ name: random
+ range: 10.244.7.4/30
+ reserved:
+ - 10.244.7.5
+ static:
+ - 10.244.7.6
+ - cloud_properties:
+ name: random
+ range: 10.244.7.8/30
+ reserved:
+ - 10.244.7.9
+ static:
+ - 10.244.7.10
+ - cloud_properties:
+ name: random
+ range: 10.244.7.12/30
+ reserved:
+ - 10.244.7.13
+ static:
+ - 10.244.7.14
+ - cloud_properties:
+ name: random
+ range: 10.244.7.16/30
+ reserved:
+ - 10.244.7.17
+ static:
+ - 10.244.7.18
+ - cloud_properties:
+ name: random
+ range: 10.244.7.20/30
+ reserved:
+ - 10.244.7.21
+ static:
+ - 10.244.7.22
+ - cloud_properties:
+ name: random
+ range: 10.244.7.24/30
+ reserved:
+ - 10.244.7.25
+ static:
+ - 10.244.7.26
+ - cloud_properties:
+ name: random
+ range: 10.244.7.28/30
+ reserved:
+ - 10.244.7.29
+ static:
+ - 10.244.7.30
+ - cloud_properties:
+ name: random
+ range: 10.244.7.32/30
+ reserved:
+ - 10.244.7.33
+ static:
+ - 10.244.7.34
+ - cloud_properties:
+ name: random
+ range: 10.244.7.36/30
+ reserved:
+ - 10.244.7.37
+ static:
+ - 10.244.7.38
+ - cloud_properties:
+ name: random
+ range: 10.244.7.40/30
+ reserved:
+ - 10.244.7.41
+ static:
+ - 10.244.7.42
+ - cloud_properties:
+ name: random
+ range: 10.244.7.44/30
+ reserved:
+ - 10.244.7.45
+ static:
+ - 10.244.7.46
+ - cloud_properties:
+ name: random
+ range: 10.244.7.48/30
+ reserved:
+ - 10.244.7.49
+ static:
+ - 10.244.7.50
+ - cloud_properties:
+ name: random
+ range: 10.244.7.52/30
+ reserved:
+ - 10.244.7.53
+ static:
+ - 10.244.7.54
+ - cloud_properties:
+ name: random
+ range: 10.244.7.56/30
+ reserved:
+ - 10.244.7.57
+ static:
+ - 10.244.7.58
+ - cloud_properties:
+ name: random
+ range: 10.244.7.60/30
+ reserved:
+ - 10.244.7.61
+ static:
+ - 10.244.7.62
+ - cloud_properties:
+ name: random
+ range: 10.244.7.64/30
+ reserved:
+ - 10.244.7.65
+ static:
+ - 10.244.7.66
+ - cloud_properties:
+ name: random
+ range: 10.244.7.68/30
+ reserved:
+ - 10.244.7.69
+ static:
+ - 10.244.7.70
+ - cloud_properties:
+ name: random
+ range: 10.244.7.72/30
+ reserved:
+ - 10.244.7.73
+ static:
+ - 10.244.7.74
+ - cloud_properties:
+ name: random
+ range: 10.244.7.76/30
+ reserved:
+ - 10.244.7.77
+ static:
+ - 10.244.7.78
+ - cloud_properties:
+ name: random
+ range: 10.244.7.80/30
+ reserved:
+ - 10.244.7.81
+ static:
+ - 10.244.7.82
+ - cloud_properties:
+ name: random
+ range: 10.244.7.84/30
+ reserved:
+ - 10.244.7.85
+ static:
+ - 10.244.7.86
+ - cloud_properties:
+ name: random
+ range: 10.244.7.88/30
+ reserved:
+ - 10.244.7.89
+ static:
+ - 10.244.7.90
+ - cloud_properties:
+ name: random
+ range: 10.244.7.92/30
+ reserved:
+ - 10.244.7.93
+ static:
+ - 10.244.7.94
+ - cloud_properties:
+ name: random
+ range: 10.244.7.96/30
+ reserved:
+ - 10.244.7.97
+ static:
+ - 10.244.7.98
+ - cloud_properties:
+ name: random
+ range: 10.244.7.100/30
+ reserved:
+ - 10.244.7.101
+ static:
+ - 10.244.7.102
+ - cloud_properties:
+ name: random
+ range: 10.244.7.104/30
+ reserved:
+ - 10.244.7.105
+ static:
+ - 10.244.7.106
+ - cloud_properties:
+ name: random
+ range: 10.244.7.108/30
+ reserved:
+ - 10.244.7.109
+ static:
+ - 10.244.7.110
+ - cloud_properties:
+ name: random
+ range: 10.244.7.112/30
+ reserved:
+ - 10.244.7.113
+ static:
+ - 10.244.7.114
+ - cloud_properties:
+ name: random
+ range: 10.244.7.116/30
+ reserved:
+ - 10.244.7.117
+ static:
+ - 10.244.7.118
+ - cloud_properties:
+ name: random
+ range: 10.244.7.120/30
+ reserved:
+ - 10.244.7.121
+ static:
+ - 10.244.7.122
+ - cloud_properties:
+ name: random
+ range: 10.244.7.124/30
+ reserved:
+ - 10.244.7.125
+ static:
+ - 10.244.7.126
+ - cloud_properties:
+ name: random
+ range: 10.244.7.128/30
+ reserved:
+ - 10.244.7.129
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.7.132/30
+ reserved:
+ - 10.244.7.133
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.7.136/30
+ reserved:
+ - 10.244.7.137
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.7.140/30
+ reserved:
+ - 10.244.7.141
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.7.144/30
+ reserved:
+ - 10.244.7.145
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.7.148/30
+ reserved:
+ - 10.244.7.149
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.7.152/30
+ reserved:
+ - 10.244.7.153
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.7.156/30
+ reserved:
+ - 10.244.7.157
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.7.160/30
+ reserved:
+ - 10.244.7.161
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.7.164/30
+ reserved:
+ - 10.244.7.165
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.7.168/30
+ reserved:
+ - 10.244.7.169
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.7.172/30
+ reserved:
+ - 10.244.7.173
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.7.176/30
+ reserved:
+ - 10.244.7.177
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.7.180/30
+ reserved:
+ - 10.244.7.181
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.7.184/30
+ reserved:
+ - 10.244.7.185
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.7.188/30
+ reserved:
+ - 10.244.7.189
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.7.192/30
+ reserved:
+ - 10.244.7.193
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.7.196/30
+ reserved:
+ - 10.244.7.197
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.7.200/30
+ reserved:
+ - 10.244.7.201
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.7.204/30
+ reserved:
+ - 10.244.7.205
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.7.208/30
+ reserved:
+ - 10.244.7.209
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.7.212/30
+ reserved:
+ - 10.244.7.213
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.7.216/30
+ reserved:
+ - 10.244.7.217
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.7.220/30
+ reserved:
+ - 10.244.7.221
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.7.224/30
+ reserved:
+ - 10.244.7.225
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.7.228/30
+ reserved:
+ - 10.244.7.229
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.7.232/30
+ reserved:
+ - 10.244.7.233
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.7.236/30
+ reserved:
+ - 10.244.7.237
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.7.240/30
+ reserved:
+ - 10.244.7.241
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.7.244/30
+ reserved:
+ - 10.244.7.245
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.7.248/30
+ reserved:
+ - 10.244.7.249
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.7.252/30
+ reserved:
+ - 10.244.7.253
+ static: []
+
+ - name: mysql2
+ subnets:
+ - cloud_properties:
+ name: random
+ range: 10.244.8.0/30
+ reserved:
+ - 10.244.8.1
+ static:
+ - 10.244.8.2
+ - cloud_properties:
+ name: random
+ range: 10.244.8.4/30
+ reserved:
+ - 10.244.8.5
+ static:
+ - 10.244.8.6
+ - cloud_properties:
+ name: random
+ range: 10.244.8.8/30
+ reserved:
+ - 10.244.8.9
+ static:
+ - 10.244.8.10
+ - cloud_properties:
+ name: random
+ range: 10.244.8.12/30
+ reserved:
+ - 10.244.8.13
+ static:
+ - 10.244.8.14
+ - cloud_properties:
+ name: random
+ range: 10.244.8.16/30
+ reserved:
+ - 10.244.8.17
+ static:
+ - 10.244.8.18
+ - cloud_properties:
+ name: random
+ range: 10.244.8.20/30
+ reserved:
+ - 10.244.8.21
+ static:
+ - 10.244.8.22
+ - cloud_properties:
+ name: random
+ range: 10.244.8.24/30
+ reserved:
+ - 10.244.8.25
+ static:
+ - 10.244.8.26
+ - cloud_properties:
+ name: random
+ range: 10.244.8.28/30
+ reserved:
+ - 10.244.8.29
+ static:
+ - 10.244.8.30
+ - cloud_properties:
+ name: random
+ range: 10.244.8.32/30
+ reserved:
+ - 10.244.8.33
+ static:
+ - 10.244.8.34
+ - cloud_properties:
+ name: random
+ range: 10.244.8.36/30
+ reserved:
+ - 10.244.8.37
+ static:
+ - 10.244.8.38
+ - cloud_properties:
+ name: random
+ range: 10.244.8.40/30
+ reserved:
+ - 10.244.8.41
+ static:
+ - 10.244.8.42
+ - cloud_properties:
+ name: random
+ range: 10.244.8.44/30
+ reserved:
+ - 10.244.8.45
+ static:
+ - 10.244.8.46
+ - cloud_properties:
+ name: random
+ range: 10.244.8.48/30
+ reserved:
+ - 10.244.8.49
+ static:
+ - 10.244.8.50
+ - cloud_properties:
+ name: random
+ range: 10.244.8.52/30
+ reserved:
+ - 10.244.8.53
+ static:
+ - 10.244.8.54
+ - cloud_properties:
+ name: random
+ range: 10.244.8.56/30
+ reserved:
+ - 10.244.8.57
+ static:
+ - 10.244.8.58
+ - cloud_properties:
+ name: random
+ range: 10.244.8.60/30
+ reserved:
+ - 10.244.8.61
+ static:
+ - 10.244.8.62
+ - cloud_properties:
+ name: random
+ range: 10.244.8.64/30
+ reserved:
+ - 10.244.8.65
+ static:
+ - 10.244.8.66
+ - cloud_properties:
+ name: random
+ range: 10.244.8.68/30
+ reserved:
+ - 10.244.8.69
+ static:
+ - 10.244.8.70
+ - cloud_properties:
+ name: random
+ range: 10.244.8.72/30
+ reserved:
+ - 10.244.8.73
+ static:
+ - 10.244.8.74
+ - cloud_properties:
+ name: random
+ range: 10.244.8.76/30
+ reserved:
+ - 10.244.8.77
+ static:
+ - 10.244.8.78
+ - cloud_properties:
+ name: random
+ range: 10.244.8.80/30
+ reserved:
+ - 10.244.8.81
+ static:
+ - 10.244.8.82
+ - cloud_properties:
+ name: random
+ range: 10.244.8.84/30
+ reserved:
+ - 10.244.8.85
+ static:
+ - 10.244.8.86
+ - cloud_properties:
+ name: random
+ range: 10.244.8.88/30
+ reserved:
+ - 10.244.8.89
+ static:
+ - 10.244.8.90
+ - cloud_properties:
+ name: random
+ range: 10.244.8.92/30
+ reserved:
+ - 10.244.8.93
+ static:
+ - 10.244.8.94
+ - cloud_properties:
+ name: random
+ range: 10.244.8.96/30
+ reserved:
+ - 10.244.8.97
+ static:
+ - 10.244.8.98
+ - cloud_properties:
+ name: random
+ range: 10.244.8.100/30
+ reserved:
+ - 10.244.8.101
+ static:
+ - 10.244.8.102
+ - cloud_properties:
+ name: random
+ range: 10.244.8.104/30
+ reserved:
+ - 10.244.8.105
+ static:
+ - 10.244.8.106
+ - cloud_properties:
+ name: random
+ range: 10.244.8.108/30
+ reserved:
+ - 10.244.8.109
+ static:
+ - 10.244.8.110
+ - cloud_properties:
+ name: random
+ range: 10.244.8.112/30
+ reserved:
+ - 10.244.8.113
+ static:
+ - 10.244.8.114
+ - cloud_properties:
+ name: random
+ range: 10.244.8.116/30
+ reserved:
+ - 10.244.8.117
+ static:
+ - 10.244.8.118
+ - cloud_properties:
+ name: random
+ range: 10.244.8.120/30
+ reserved:
+ - 10.244.8.121
+ static:
+ - 10.244.8.122
+ - cloud_properties:
+ name: random
+ range: 10.244.8.124/30
+ reserved:
+ - 10.244.8.125
+ static:
+ - 10.244.8.126
+ - cloud_properties:
+ name: random
+ range: 10.244.8.128/30
+ reserved:
+ - 10.244.8.129
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.8.132/30
+ reserved:
+ - 10.244.8.133
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.8.136/30
+ reserved:
+ - 10.244.8.137
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.8.140/30
+ reserved:
+ - 10.244.8.141
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.8.144/30
+ reserved:
+ - 10.244.8.145
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.8.148/30
+ reserved:
+ - 10.244.8.149
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.8.152/30
+ reserved:
+ - 10.244.8.153
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.8.156/30
+ reserved:
+ - 10.244.8.157
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.8.160/30
+ reserved:
+ - 10.244.8.161
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.8.164/30
+ reserved:
+ - 10.244.8.165
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.8.168/30
+ reserved:
+ - 10.244.8.169
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.8.172/30
+ reserved:
+ - 10.244.8.173
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.8.176/30
+ reserved:
+ - 10.244.8.177
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.8.180/30
+ reserved:
+ - 10.244.8.181
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.8.184/30
+ reserved:
+ - 10.244.8.185
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.8.188/30
+ reserved:
+ - 10.244.8.189
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.8.192/30
+ reserved:
+ - 10.244.8.193
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.8.196/30
+ reserved:
+ - 10.244.8.197
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.8.200/30
+ reserved:
+ - 10.244.8.201
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.8.204/30
+ reserved:
+ - 10.244.8.205
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.8.208/30
+ reserved:
+ - 10.244.8.209
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.8.212/30
+ reserved:
+ - 10.244.8.213
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.8.216/30
+ reserved:
+ - 10.244.8.217
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.8.220/30
+ reserved:
+ - 10.244.8.221
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.8.224/30
+ reserved:
+ - 10.244.8.225
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.8.228/30
+ reserved:
+ - 10.244.8.229
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.8.232/30
+ reserved:
+ - 10.244.8.233
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.8.236/30
+ reserved:
+ - 10.244.8.237
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.8.240/30
+ reserved:
+ - 10.244.8.241
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.8.244/30
+ reserved:
+ - 10.244.8.245
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.8.248/30
+ reserved:
+ - 10.244.8.249
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.8.252/30
+ reserved:
+ - 10.244.8.253
+ static: []
+
+ - name: mysql3
+ subnets:
+ - cloud_properties:
+ name: random
+ range: 10.244.9.0/30
+ reserved:
+ - 10.244.9.1
+ static:
+ - 10.244.9.2
+ - cloud_properties:
+ name: random
+ range: 10.244.9.4/30
+ reserved:
+ - 10.244.9.5
+ static:
+ - 10.244.9.6
+ - cloud_properties:
+ name: random
+ range: 10.244.9.8/30
+ reserved:
+ - 10.244.9.9
+ static:
+ - 10.244.9.10
+ - cloud_properties:
+ name: random
+ range: 10.244.9.12/30
+ reserved:
+ - 10.244.9.13
+ static:
+ - 10.244.9.14
+ - cloud_properties:
+ name: random
+ range: 10.244.9.16/30
+ reserved:
+ - 10.244.9.17
+ static:
+ - 10.244.9.18
+ - cloud_properties:
+ name: random
+ range: 10.244.9.20/30
+ reserved:
+ - 10.244.9.21
+ static:
+ - 10.244.9.22
+ - cloud_properties:
+ name: random
+ range: 10.244.9.24/30
+ reserved:
+ - 10.244.9.25
+ static:
+ - 10.244.9.26
+ - cloud_properties:
+ name: random
+ range: 10.244.9.28/30
+ reserved:
+ - 10.244.9.29
+ static:
+ - 10.244.9.30
+ - cloud_properties:
+ name: random
+ range: 10.244.9.32/30
+ reserved:
+ - 10.244.9.33
+ static:
+ - 10.244.9.34
+ - cloud_properties:
+ name: random
+ range: 10.244.9.36/30
+ reserved:
+ - 10.244.9.37
+ static:
+ - 10.244.9.38
+ - cloud_properties:
+ name: random
+ range: 10.244.9.40/30
+ reserved:
+ - 10.244.9.41
+ static:
+ - 10.244.9.42
+ - cloud_properties:
+ name: random
+ range: 10.244.9.44/30
+ reserved:
+ - 10.244.9.45
+ static:
+ - 10.244.9.46
+ - cloud_properties:
+ name: random
+ range: 10.244.9.48/30
+ reserved:
+ - 10.244.9.49
+ static:
+ - 10.244.9.50
+ - cloud_properties:
+ name: random
+ range: 10.244.9.52/30
+ reserved:
+ - 10.244.9.53
+ static:
+ - 10.244.9.54
+ - cloud_properties:
+ name: random
+ range: 10.244.9.56/30
+ reserved:
+ - 10.244.9.57
+ static:
+ - 10.244.9.58
+ - cloud_properties:
+ name: random
+ range: 10.244.9.60/30
+ reserved:
+ - 10.244.9.61
+ static:
+ - 10.244.9.62
+ - cloud_properties:
+ name: random
+ range: 10.244.9.64/30
+ reserved:
+ - 10.244.9.65
+ static:
+ - 10.244.9.66
+ - cloud_properties:
+ name: random
+ range: 10.244.9.68/30
+ reserved:
+ - 10.244.9.69
+ static:
+ - 10.244.9.70
+ - cloud_properties:
+ name: random
+ range: 10.244.9.72/30
+ reserved:
+ - 10.244.9.73
+ static:
+ - 10.244.9.74
+ - cloud_properties:
+ name: random
+ range: 10.244.9.76/30
+ reserved:
+ - 10.244.9.77
+ static:
+ - 10.244.9.78
+ - cloud_properties:
+ name: random
+ range: 10.244.9.80/30
+ reserved:
+ - 10.244.9.81
+ static:
+ - 10.244.9.82
+ - cloud_properties:
+ name: random
+ range: 10.244.9.84/30
+ reserved:
+ - 10.244.9.85
+ static:
+ - 10.244.9.86
+ - cloud_properties:
+ name: random
+ range: 10.244.9.88/30
+ reserved:
+ - 10.244.9.89
+ static:
+ - 10.244.9.90
+ - cloud_properties:
+ name: random
+ range: 10.244.9.92/30
+ reserved:
+ - 10.244.9.93
+ static:
+ - 10.244.9.94
+ - cloud_properties:
+ name: random
+ range: 10.244.9.96/30
+ reserved:
+ - 10.244.9.97
+ static:
+ - 10.244.9.98
+ - cloud_properties:
+ name: random
+ range: 10.244.9.100/30
+ reserved:
+ - 10.244.9.101
+ static:
+ - 10.244.9.102
+ - cloud_properties:
+ name: random
+ range: 10.244.9.104/30
+ reserved:
+ - 10.244.9.105
+ static:
+ - 10.244.9.106
+ - cloud_properties:
+ name: random
+ range: 10.244.9.108/30
+ reserved:
+ - 10.244.9.109
+ static:
+ - 10.244.9.110
+ - cloud_properties:
+ name: random
+ range: 10.244.9.112/30
+ reserved:
+ - 10.244.9.113
+ static:
+ - 10.244.9.114
+ - cloud_properties:
+ name: random
+ range: 10.244.9.116/30
+ reserved:
+ - 10.244.9.117
+ static:
+ - 10.244.9.118
+ - cloud_properties:
+ name: random
+ range: 10.244.9.120/30
+ reserved:
+ - 10.244.9.121
+ static:
+ - 10.244.9.122
+ - cloud_properties:
+ name: random
+ range: 10.244.9.124/30
+ reserved:
+ - 10.244.9.125
+ static:
+ - 10.244.9.126
+ - cloud_properties:
+ name: random
+ range: 10.244.9.128/30
+ reserved:
+ - 10.244.9.129
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.9.132/30
+ reserved:
+ - 10.244.9.133
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.9.136/30
+ reserved:
+ - 10.244.9.137
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.9.140/30
+ reserved:
+ - 10.244.9.141
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.9.144/30
+ reserved:
+ - 10.244.9.145
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.9.148/30
+ reserved:
+ - 10.244.9.149
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.9.152/30
+ reserved:
+ - 10.244.9.153
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.9.156/30
+ reserved:
+ - 10.244.9.157
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.9.160/30
+ reserved:
+ - 10.244.9.161
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.9.164/30
+ reserved:
+ - 10.244.9.165
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.9.168/30
+ reserved:
+ - 10.244.9.169
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.9.172/30
+ reserved:
+ - 10.244.9.173
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.9.176/30
+ reserved:
+ - 10.244.9.177
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.9.180/30
+ reserved:
+ - 10.244.9.181
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.9.184/30
+ reserved:
+ - 10.244.9.185
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.9.188/30
+ reserved:
+ - 10.244.9.189
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.9.192/30
+ reserved:
+ - 10.244.9.193
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.9.196/30
+ reserved:
+ - 10.244.9.197
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.9.200/30
+ reserved:
+ - 10.244.9.201
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.9.204/30
+ reserved:
+ - 10.244.9.205
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.9.208/30
+ reserved:
+ - 10.244.9.209
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.9.212/30
+ reserved:
+ - 10.244.9.213
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.9.216/30
+ reserved:
+ - 10.244.9.217
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.9.220/30
+ reserved:
+ - 10.244.9.221
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.9.224/30
+ reserved:
+ - 10.244.9.225
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.9.228/30
+ reserved:
+ - 10.244.9.229
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.9.232/30
+ reserved:
+ - 10.244.9.233
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.9.236/30
+ reserved:
+ - 10.244.9.237
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.9.240/30
+ reserved:
+ - 10.244.9.241
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.9.244/30
+ reserved:
+ - 10.244.9.245
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.9.248/30
+ reserved:
+ - 10.244.9.249
+ static: []
+ - cloud_properties:
+ name: random
+ range: 10.244.9.252/30
+ reserved:
+ - 10.244.9.253
+ static: []
+
diff --git a/manifest-generation/bosh-lite-stubs/property-overrides-standalone.yml b/manifest-generation/bosh-lite-stubs/property-overrides-standalone.yml
new file mode 100644
index 00000000..522a24c1
--- /dev/null
+++ b/manifest-generation/bosh-lite-stubs/property-overrides-standalone.yml
@@ -0,0 +1,30 @@
+property_overrides:
+ standalone: true
+ mysql:
+ admin_password: password
+ roadmin_enabled: true
+ roadmin_password: password
+ bootstrap_endpoint:
+ username: username
+ password: password
+ proxy:
+ api_username: username
+ api_password: password
+ broker:
+ auth_username: admin
+ auth_password: password
+ cookie_secret: 94046872-2602-4ca6-8d07-8b0da9762477
+ dashboard_secret: p-mysql-secret
+ plans:
+ - name: 100mb
+ id: ab08f1bc-e6fc-4b56-a767-ee0fea6e3f20
+ description: Shared MySQL Server
+ max_storage_mb: 10
+ max_user_connections: 20
+ - name: 1gb
+ id: 11d0aa36-dcec-4021-85f5-ea4d9a5c8342
+ description: Shared MySQL Server
+ max_storage_mb: 20
+ max_user_connections: 40
+ acceptance_tests:
+ standalone_tests_only: true
diff --git a/manifest-generation/bosh-lite-stubs/property-overrides.yml b/manifest-generation/bosh-lite-stubs/property-overrides.yml
new file mode 100644
index 00000000..2f090cbd
--- /dev/null
+++ b/manifest-generation/bosh-lite-stubs/property-overrides.yml
@@ -0,0 +1,27 @@
+property_overrides:
+ mysql:
+ admin_password: password
+ roadmin_enabled: true
+ roadmin_password: password
+ bootstrap_endpoint:
+ username: username
+ password: password
+ proxy:
+ api_username: username
+ api_password: password
+ broker:
+ auth_username: admin
+ auth_password: password
+ cookie_secret: 94046872-2602-4ca6-8d07-8b0da9762477
+ dashboard_secret: p-mysql-secret
+ plans:
+ - name: 100mb
+ id: ab08f1bc-e6fc-4b56-a767-ee0fea6e3f20
+ description: Shared MySQL Server
+ max_storage_mb: 10
+ max_user_connections: 20
+ - name: 1gb
+ id: 11d0aa36-dcec-4021-85f5-ea4d9a5c8342
+ description: Shared MySQL Server
+ max_storage_mb: 20
+ max_user_connections: 40
diff --git a/manifest-generation/cf-mysql-template.yml b/manifest-generation/cf-mysql-template.yml
new file mode 100644
index 00000000..040a3ff0
--- /dev/null
+++ b/manifest-generation/cf-mysql-template.yml
@@ -0,0 +1,338 @@
+---
+name: (( config_from_cf.cf_deployment_name "-mysql" ))
+director_uuid: (( config_from_cf.cf_director_uuid ))
+
+releases: (( base_releases additional_releases ))
+
+compilation:
+ workers: 4
+ network: mysql1
+ reuse_compilation_vms: true
+ cloud_properties: (( iaas_settings.compilation_cloud_properties ))
+
+update:
+ canaries: 1
+ canary_watch_time: (( merge || "30000-" canary_end_in_sec ))
+ update_watch_time: (( merge || "30000-" canary_end_in_sec ))
+ max_in_flight: 1
+ serial: true
+
+networks:
+ - name: mysql1
+ type: manual
+ subnets: (( iaas_settings.subnet_configs.mysql1.subnets ))
+ - name: mysql2
+ type: manual
+ subnets: (( iaas_settings.subnet_configs.mysql2.subnets ))
+ - name: mysql3
+ type: manual
+ subnets: (( iaas_settings.subnet_configs.mysql3.subnets ))
+
+disk_pools: (( base_disk_pools additional_disk_pools ))
+
+resource_pools: (( base_resource_pools additional_resource_pools ))
+
+jobs: (( base_jobs additional_jobs ))
+
+properties:
+ <<: (( merge || nil ))
+ nats:
+ machines: (( config_from_cf.nats.machines ))
+ user: (( config_from_cf.nats.user ))
+ password: (( config_from_cf.nats.password ))
+ port: (( config_from_cf.nats.port ))
+ app_domains: (( config_from_cf.app_domains ))
+ domain: (( config_from_cf.domain ))
+ cf:
+ api_url: (( config_from_cf.api_url ))
+ app_domains: (( config_from_cf.app_domains ))
+ admin_username: (( config_from_cf.admin_username ))
+ admin_password: (( config_from_cf.admin_password ))
+ skip_ssl_validation: (( config_from_cf.skip_ssl_validation || nil ))
+ smoke_tests:
+ use_existing_org: (( config_from_cf.smoke_tests.use_existing_org || nil ))
+ org: (( config_from_cf.smoke_tests.org || nil ))
+ syslog_aggregator: (( property_overrides.syslog_aggregator || nil ))
+ cf_mysql:
+ standalone: (( property_overrides.standalone || false ))
+ external_host: (( "p-mysql." .properties.domain ))
+ host: (( property_overrides.host || jobs.proxy_z1.networks.mysql1.static_ips.[0] ))
+ mysql:
+ admin_username: (( property_overrides.mysql.admin_username || nil ))
+ admin_password: (( property_overrides.mysql.admin_password ))
+ port: (( property_overrides.mysql.port || nil ))
+ galera_port: (( property_overrides.mysql.galera_port || nil ))
+ healthcheck_port: (( property_overrides.mysql.healthcheck_port || nil ))
+ bootstrap_endpoint: (( property_overrides.mysql.bootstrap_endpoint ))
+ cluster_ips: (( property_overrides.mysql.cluster_ips || default_mysql_cluster_ips ))
+ roadmin_enabled: (( property_overrides.mysql.roadmin_enabled || false ))
+ roadmin_password: (( property_overrides.mysql.roadmin_password ))
+ seeded_databases: (( property_overrides.mysql.seeded_databases || nil ))
+ database_startup_timeout: (( property_overrides.mysql.database_startup_timeout || 600 ))
+ max_heap_table_size: (( property_overrides.mysql.max_heap_table_size || nil ))
+ tmp_table_size: (( property_overrides.mysql.tmp_table_size || nil ))
+ wsrep_max_ws_rows: (( property_overrides.mysql.wsrep_max_ws_rows || nil ))
+ wsrep_max_ws_size: (( property_overrides.mysql.wsrep_max_ws_size || nil ))
+ skip_name_resolve: (( property_overrides.mysql.skip_name_resolve || nil ))
+ gcache_size: (( property_overrides.mysql.gcache_size || nil ))
+ ib_log_file_size: (( property_overrides.mysql.ib_log_file_size || nil ))
+ innodb_buffer_pool_size: (( property_overrides.mysql.innodb_buffer_pool_size || nil ))
+ max_connections: (( property_overrides.mysql.max_connections || nil ))
+ persistent_disk: (( disk_pools.mysql-persistent-disk.disk_size ))
+ proxy:
+ api_username: (( property_overrides.proxy.api_username ))
+ api_password: (( property_overrides.proxy.api_password ))
+ health_port: (( property_overrides.proxy.health_port || nil ))
+ api_force_https: (( property_overrides.proxy.api_force_https || nil ))
+ proxy_ips: (( property_overrides.proxy.proxy_ips || default_proxy_ips ))
+ arbitrator_ip: (( jobs.arbitrator_z3.networks.mysql3.static_ips.[0] || nil ))
+ port: (( property_overrides.proxy.port || nil ))
+ healthcheck_timeout_millis: (( property_overrides.proxy.healthcheck_timeout_millis || nil ))
+ api_port: (( property_overrides.proxy.api_port || nil ))
+ broker:
+ max_user_connections_default: (( property_overrides.broker.max_user_connections_default || nil ))
+ ssl_enabled: (( property_overrides.broker.ssl_enabled || nil ))
+ auth_username: (( property_overrides.broker.auth_username ))
+ auth_password: (( property_overrides.broker.auth_password ))
+ cookie_secret: (( property_overrides.broker.cookie_secret ))
+ external_host: (( property_overrides.broker.external_domain || .properties.cf_mysql.external_host ))
+ protocol: (( property_overrides.broker.protocol || nil ))
+ port: (( property_overrides.broker.port || nil ))
+ services:
+ - name: p-mysql
+ plan_updateable: true
+ id: (( property_overrides.broker.service_id || "44b26033-1f54-4087-b7bc-da9652c2a539" ))
+ description: MySQL databases on demand
+ tags:
+ - mysql
+ metadata:
+ displayName: "MySQL for Pivotal Cloud Foundry"
+ imageUrl: "data:image/png;base64,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"
+ longDescription: "Creating a service instance provisions a database. Binding applications provisions unique credentials for each application to access the database."
+ providerDisplayName: "Pivotal Software"
+ documentationUrl: "https://github.com/cloudfoundry/cf-mysql-release/blob/master/README.md"
+ supportUrl: "https://support.pivotal.io"
+ dashboard_client:
+ id: p-mysql
+ secret: (( property_overrides.broker.dashboard_secret ))
+ plans: (( property_overrides.broker.plans ))
+ acceptance_tests:
+ smoke_tests_only: (( property_overrides.acceptance_tests.smoke_tests_only || nil ))
+ standalone_tests_only: (( property_overrides.acceptance_tests.standalone_tests_only || nil ))
+ timeout_scale: (( property_overrides.acceptance_tests.timeout_scale || nil ))
+ cf-mysql-backup:
+ symmetric_key: (( property_overrides.cf-mysql-backup.symmetric_key || nil ))
+ endpoint_credentials:
+ username: (( property_overrides.cf-mysql-backup.endpoint_credentials.username || nil ))
+ password: (( property_overrides.cf-mysql-backup.endpoint_credentials.password || nil ))
+ service-backup:
+ cron_schedule: (( property_overrides.service-backup.cron_schedule || nil ))
+ blobstore:
+ bucket_name: (( property_overrides.service-backup.blobstore.bucket_name || nil ))
+ bucket_path: (( property_overrides.service-backup.blobstore.bucket_path || nil ))
+ access_key_id: (( property_overrides.service-backup.blobstore.access_key_id || nil ))
+ secret_access_key: (( property_overrides.service-backup.blobstore.secret_access_key || nil ))
+ source_folder: (( property_overrides.service-backup.source_folder || nil ))
+ source_executable: (( property_overrides.service-backup.source_executable || nil ))
+ cleanup_executable: (( property_overrides.service-backup.cleanup_executable || nil ))
+
+base_releases:
+- name: cf-mysql
+ version: (( release_versions.cf-mysql.version || "latest" ))
+base_disk_pools:
+- name: mysql-persistent-disk
+ disk_size: (( iaas_settings.disk_pools.mysql-persistent-disk.disk_size || 100000 ))
+ cloud_properties: (( iaas_settings.disk_pools.mysql-persistent-disk.cloud_properties || empty_hash ))
+base_resource_pools:
+- name: mysql_z1
+ network: mysql1
+ stemcell: (( iaas_settings.stemcell ))
+ cloud_properties: (( iaas_settings.resource_pool_cloud_properties.mysql_z1.cloud_properties ))
+- name: mysql_z2
+ network: mysql2
+ stemcell: (( iaas_settings.stemcell ))
+ cloud_properties: (( iaas_settings.resource_pool_cloud_properties.mysql_z2.cloud_properties ))
+- name: mysql_z3
+ network: mysql3
+ stemcell: (( iaas_settings.stemcell ))
+ cloud_properties: (( iaas_settings.resource_pool_cloud_properties.mysql_z3.cloud_properties ))
+- name: arbitrator_z3
+ network: mysql3
+ stemcell: (( iaas_settings.stemcell ))
+ cloud_properties: (( iaas_settings.resource_pool_cloud_properties.arbitrator_z3.cloud_properties ))
+- name: proxy_z1
+ network: mysql1
+ stemcell: (( iaas_settings.stemcell ))
+ cloud_properties: (( iaas_settings.resource_pool_cloud_properties.proxy_z1.cloud_properties ))
+- name: proxy_z2
+ network: mysql2
+ stemcell: (( iaas_settings.stemcell ))
+ cloud_properties: (( iaas_settings.resource_pool_cloud_properties.proxy_z2.cloud_properties ))
+- name: cf-mysql-broker_z1
+ network: mysql1
+ stemcell: (( iaas_settings.stemcell ))
+ cloud_properties: (( iaas_settings.resource_pool_cloud_properties.cf-mysql-broker_z1.cloud_properties ))
+- name: cf-mysql-broker_z2
+ network: mysql2
+ stemcell: (( iaas_settings.stemcell ))
+ cloud_properties: (( iaas_settings.resource_pool_cloud_properties.cf-mysql-broker_z2.cloud_properties ))
+- name: errands_z1
+ network: mysql1
+ stemcell: (( iaas_settings.stemcell ))
+ cloud_properties: (( iaas_settings.resource_pool_cloud_properties.errands_z1.cloud_properties ))
+base_templates:
+ mysql:
+ - {release: cf-mysql, name: mysql}
+ proxy:
+ - {release: cf-mysql, name: proxy}
+ arbitrator:
+ - {release: cf-mysql, name: arbitrator}
+ broker:
+ - {release: cf-mysql, name: cf-mysql-broker}
+colocated_jobs:
+ mysql_z1: (( job_overrides.colocated_jobs.mysql_z1.additional_templates || empty_list ))
+ mysql_z2: (( job_overrides.colocated_jobs.mysql_z2.additional_templates || empty_list ))
+ mysql_z3: (( job_overrides.colocated_jobs.mysql_z3.additional_templates || empty_list ))
+ arbitrator_z3: (( job_overrides.colocated_jobs.arbitrator_z3.additional_templates || empty_list ))
+ proxy_z1: (( job_overrides.colocated_jobs.proxy_z1.additional_templates || empty_list ))
+ proxy_z2: (( job_overrides.colocated_jobs.proxy_z2.additional_templates || empty_list ))
+ cf-mysql-broker_z1: (( job_overrides.colocated_jobs.cf-mysql-broker_z1.additional_templates || empty_list ))
+ cf-mysql-broker_z2: (( job_overrides.colocated_jobs.cf-mysql-broker_z2.additional_templates || empty_list ))
+
+base_jobs:
+- name: mysql_z1
+ templates: (( base_templates.mysql colocated_jobs.mysql_z1 ))
+ instances: (( instance_count_overrides.mysql_z1.instances || 1 ))
+ resource_pool: mysql_z1
+ persistent_disk_pool: mysql-persistent-disk
+ networks:
+ - name: mysql1
+ static_ips: (( static_ips(0) ))
+ properties:
+ network_name: mysql1
+- name: mysql_z2
+ templates: (( base_templates.mysql colocated_jobs.mysql_z2 ))
+ instances: (( instance_count_overrides.mysql_z2.instances || 1 ))
+ resource_pool: mysql_z2
+ persistent_disk_pool: mysql-persistent-disk
+ networks:
+ - name: mysql2
+ static_ips: (( static_ips(0) ))
+ properties:
+ network_name: mysql2
+- name: mysql_z3
+ templates: (( base_templates.mysql colocated_jobs.mysql_z3 ))
+ # defaults to using an arbitrator in place of mysql node in z3
+ instances: (( instance_count_overrides.mysql_z3.instances || 0 ))
+ resource_pool: mysql_z3
+ persistent_disk_pool: mysql-persistent-disk
+ networks:
+ - name: mysql3
+ static_ips: (( static_ips(0) ))
+ properties:
+ network_name: mysql3
+- name: arbitrator_z3
+ templates: (( base_templates.arbitrator colocated_jobs.arbitrator_z3 ))
+ instances: (( instance_count_overrides.arbitrator_z3.instances || 1 ))
+ resource_pool: arbitrator_z3
+ networks:
+ - name: mysql3
+ static_ips: (( static_ips(1) ))
+ properties:
+ network_name: mysql3
+- name: proxy_z1
+ templates: (( base_templates.proxy colocated_jobs.proxy_z1 ))
+ instances: (( instance_count_overrides.proxy_z1.instances || 1 ))
+ resource_pool: proxy_z1
+ networks:
+ - name: mysql1
+ static_ips: (( static_ips(1) ))
+ properties:
+ network_name: mysql1
+- name: proxy_z2
+ templates: (( base_templates.proxy colocated_jobs.proxy_z2 ))
+ instances: (( instance_count_overrides.proxy_z2.instances || 1 ))
+ resource_pool: proxy_z2
+ networks:
+ - name: mysql2
+ static_ips: (( static_ips(1) ))
+ properties:
+ network_name: mysql2
+- name: cf-mysql-broker_z1
+ templates: (( base_templates.broker colocated_jobs.cf-mysql-broker_z1 ))
+ instances: (( instance_count_overrides.cf-mysql-broker_z1.instances || 1 ))
+ resource_pool: cf-mysql-broker_z1
+ networks:
+ - name: mysql1
+ properties:
+ network_name: mysql1
+- name: cf-mysql-broker_z2
+ templates: (( base_templates.broker colocated_jobs.cf-mysql-broker_z2 ))
+ instances: (( instance_count_overrides.cf-mysql-broker_z2.instances || 1 ))
+ resource_pool: cf-mysql-broker_z2
+ networks:
+ - name: mysql2
+ properties:
+ network_name: mysql2
+- name: broker-registrar
+ template: broker-registrar
+ release: cf-mysql
+ instances: 1
+ resource_pool: errands_z1
+ lifecycle: errand
+ networks:
+ - name: mysql1
+ properties: {}
+- name: broker-deregistrar
+ template: broker-deregistrar
+ release: cf-mysql
+ instances: 1
+ resource_pool: errands_z1
+ lifecycle: errand
+ networks:
+ - name: mysql1
+ properties: {}
+- name: acceptance-tests
+ template: acceptance-tests
+ release: cf-mysql
+ instances: 1
+ resource_pool: errands_z1
+ lifecycle: errand
+ networks:
+ - name: mysql1
+ properties: {}
+- name: bootstrap
+ template: bootstrap
+ release: cf-mysql
+ instances: 1
+ resource_pool: errands_z1
+ lifecycle: errand
+ networks:
+ - name: mysql1
+ properties: {}
+
+# The keys below should not be included in the final stub
+config_from_cf: (( merge ))
+iaas_settings: (( merge ))
+instance_count_overrides: (( merge || nil ))
+property_overrides: (( merge ))
+release_versions: (( merge || nil ))
+job_overrides: (( merge || nil ))
+default_mysql_cluster_ips:
+- (( jobs.mysql_z1.networks.mysql1.static_ips.[0] ))
+- (( jobs.mysql_z2.networks.mysql2.static_ips.[0] || nil ))
+- (( jobs.mysql_z3.networks.mysql3.static_ips.[0] || nil ))
+- (( jobs.arbitrator_z3.networks.mysql3.static_ips.[0] || nil ))
+default_proxy_ips:
+- (( jobs.proxy_z1.networks.mysql1.static_ips.[0] || nil ))
+- (( jobs.proxy_z2.networks.mysql2.static_ips.[0] || nil ))
+# spiff does not allow concating multiple fields of different types
+# without adding new temporary properties
+database_startup_timeout_str: (( "" .properties.cf_mysql.mysql.database_startup_timeout ))
+canary_end_in_sec: (( database_startup_timeout_str "000" ))
+additional_disk_pools: (( iaas_settings.additional_disk_pools || empty_list ))
+additional_releases: (( job_overrides.additional_releases || empty_list ))
+additional_resource_pools: (( iaas_settings.additional_resource_pools || empty_list))
+additional_jobs: (( job_overrides.additional_jobs || empty_list ))
+empty_hash: {}
+empty_list: []
diff --git a/manifest-generation/examples/aws/iaas-settings.yml b/manifest-generation/examples/aws/iaas-settings.yml
new file mode 100644
index 00000000..7c1051fc
--- /dev/null
+++ b/manifest-generation/examples/aws/iaas-settings.yml
@@ -0,0 +1,124 @@
+properties:
+ template_only:
+ aws:
+ mysql_elb_names: [REPLACE_WITH_ELB_NAME_NOT_DNS_HOSTNAME] # optional, remove this line to skip binding an ELB
+ availability_zone: REPLACE_WITH_AZ_1 # e.g. us-east-1a
+ availability_zone2: REPLACE_WITH_AZ_2
+ availability_zone3: REPLACE_WITH_AZ_3
+ subnet_ids:
+ mysql1: REPLACE_WITH_YOUR_SUBNET_ID_1
+ mysql2: REPLACE_WITH_YOUR_SUBNET_ID_2
+ mysql3: REPLACE_WITH_YOUR_SUBNET_ID_3
+
+iaas_settings:
+ <<: (( merge || nil ))
+
+# NOTE:
+# Replace 10.0.{0,1,2} part of the octet
+# with your network configuration
+ subnet_configs:
+ - name: mysql1
+ type: manual
+ subnets:
+ - range: 10.10.32.0/24
+ reserved:
+ - 10.10.32.2 - 10.10.32.9
+ - 10.10.32.130 - 10.10.32.254
+ static:
+ - 10.10.32.10 - 10.10.32.14
+ gateway: 10.10.32.1
+ dns:
+ - 10.10.0.2 # amazon has only 1 DNS server for the whole VPC at x.x.0.2
+ cloud_properties:
+ subnet: (( properties.template_only.aws.subnet_ids.mysql1 ))
+ - name: mysql2
+ type: manual
+ subnets:
+ - range: 10.10.33.0/24
+ reserved:
+ - 10.10.33.2 - 10.10.33.9
+ - 10.10.33.130 - 10.10.33.254
+ static:
+ - 10.10.33.10 - 10.10.33.14
+ gateway: 10.10.33.1
+ dns:
+ - 10.10.0.2 # amazon has only 1 DNS server for the whole VPC at x.x.0.2
+ cloud_properties:
+ subnet: (( properties.template_only.aws.subnet_ids.mysql2 ))
+ - name: mysql3
+ type: manual
+ subnets:
+ - range: 10.10.34.0/24
+ reserved:
+ - 10.10.34.2 - 10.10.34.9
+ - 10.10.34.130 - 10.10.34.254
+ static:
+ - 10.10.34.10 - 10.10.34.14
+ gateway: 10.10.34.1
+ dns:
+ - 10.10.0.2 # amazon has only 1 DNS server for the whole VPC at x.x.0.2
+ cloud_properties:
+ subnet: (( properties.template_only.aws.subnet_ids.mysql3 ))
+
+ stemcell: &stemcell
+ name: bosh-aws-xen-hvm-ubuntu-trusty-go_agent
+ version: latest
+ compilation_cloud_properties:
+ instance_type: c4.large
+ availability_zone: (( properties.template_only.aws.availability_zone ))
+ ephemeral_disk:
+ size: 30000 # in MB
+ type: gp2
+ resource_pool_cloud_properties:
+ - name: mysql_z1
+ cloud_properties:
+ instance_type: m3.large
+ availability_zone: (( properties.template_only.aws.availability_zone ))
+
+ - name: mysql_z2
+ cloud_properties:
+ instance_type: m3.large
+ availability_zone: (( properties.template_only.aws.availability_zone2 ))
+
+ - name: mysql_z3
+ cloud_properties:
+ instance_type: m3.large
+ availability_zone: (( properties.template_only.aws.availability_zone3 ))
+
+ - name: arbitrator_z3
+ cloud_properties:
+ instance_type: t2.small
+ availability_zone: (( properties.template_only.aws.availability_zone3 ))
+
+ - name: proxy_z1
+ cloud_properties:
+ instance_type: m3.medium
+ availability_zone: (( properties.template_only.aws.availability_zone ))
+ elbs: (( properties.template_only.aws.mysql_elb_names || nil ))
+
+ - name: proxy_z2
+ cloud_properties:
+ instance_type: m3.medium
+ availability_zone: (( properties.template_only.aws.availability_zone2 ))
+ elbs: (( properties.template_only.aws.mysql_elb_names || nil ))
+
+ - name: cf-mysql-broker_z1
+ cloud_properties:
+ instance_type: m3.medium
+ availability_zone: (( properties.template_only.aws.availability_zone ))
+
+ - name: cf-mysql-broker_z2
+ cloud_properties:
+ instance_type: m3.medium
+ availability_zone: (( properties.template_only.aws.availability_zone2 ))
+
+ - name: errands_z1
+ cloud_properties:
+ instance_type: m3.medium
+ availability_zone: (( properties.template_only.aws.availability_zone ))
+
+ disk_pools:
+ - name: mysql-persistent-disk
+ disk_size: 100000
+ cloud_properties:
+ type: gp2
diff --git a/manifest-generation/examples/cf-stub.yml b/manifest-generation/examples/cf-stub.yml
new file mode 100644
index 00000000..8c5dc11c
--- /dev/null
+++ b/manifest-generation/examples/cf-stub.yml
@@ -0,0 +1,19 @@
+# Standalone deployments have no CF, but these fields are required
+# for all deployments.
+name: REPLACE_WITH_CF_DEPLOYMENT_NAME
+director_uuid: REPLACE_WITH_DIRECTOR_UUID
+properties:
+ admin_username: REPLACE_WITH_ADMIN_USERNAME
+ admin_password: REPLACE_WITH_ADMIN_PASSWORD
+ skip_ssl_validation: false # Optional, change to `true` in envs with self-signed SSL certs
+ nats:
+ machines:
+ - REPLACE_WITH_FIRST_NATS_IP
+ - REPLACE_WITH_SECOND_NATS_IP
+ user: REPLACE_WITH_NATS_USER
+ password: REPLACE_WITH_NATS_PASSWORD
+ port: REPLACE_WITH_NATS_PORT
+ system_domain: REPLACE_WITH_SYSTEM_DOMAIN
+ app_domains:
+ - REPLACE_WITH_APP_DOMAIN
+ domain: REPLACE_WITH_DOMAIN
diff --git a/manifest-generation/examples/instance-count-overrides.yml b/manifest-generation/examples/instance-count-overrides.yml
new file mode 100644
index 00000000..f969f03e
--- /dev/null
+++ b/manifest-generation/examples/instance-count-overrides.yml
@@ -0,0 +1 @@
+instance_count_overrides: []
diff --git a/manifest-generation/examples/minimal/instance-count-overrides.yml b/manifest-generation/examples/minimal/instance-count-overrides.yml
new file mode 100644
index 00000000..b5e65431
--- /dev/null
+++ b/manifest-generation/examples/minimal/instance-count-overrides.yml
@@ -0,0 +1,11 @@
+instance_count_overrides:
+ - name: mysql_z2
+ instances: 0
+ - name: mysql_z3
+ instances: 0
+ - name: arbitrator_z3
+ instances: 0
+ - name: proxy_z2
+ instances: 0
+ - name: cf-mysql-broker_z2
+ instances: 0
diff --git a/manifest-generation/examples/no-arbitrator/instance-count-overrides.yml b/manifest-generation/examples/no-arbitrator/instance-count-overrides.yml
new file mode 100644
index 00000000..6489fabc
--- /dev/null
+++ b/manifest-generation/examples/no-arbitrator/instance-count-overrides.yml
@@ -0,0 +1,5 @@
+instance_count_overrides:
+ - name: mysql_z3
+ instances: 1
+ - name: arbitrator_z3
+ instances: 0
diff --git a/manifest-generation/examples/property-overrides.yml b/manifest-generation/examples/property-overrides.yml
new file mode 100644
index 00000000..c19c6ecc
--- /dev/null
+++ b/manifest-generation/examples/property-overrides.yml
@@ -0,0 +1,51 @@
+property_overrides:
+ <<: (( merge || nil ))
+ syslog_aggregator: ~
+ standalone: false
+ host: REPLACE_WITH_LB_HOSTNAME # Optional, set to your Load Balancer address if configured; delete this line otherwise
+ mysql:
+ admin_password: REPLACE_WITH_A_PASSWORD_YOU_MAKE_UP #The admin password for the MySQL server process
+ roadmin_enabled: true
+ roadmin_password: REPLACE_WITH_A_PASSWORD_YOU_MAKE_UP
+ bootstrap_endpoint:
+ username: REPLACE_WITH_A_USERNAME_YOU_MAKE_UP
+ password: REPLACE_WITH_A_PASSWORD_YOU_MAKE_UP
+ proxy:
+ api_username: REPLACE_WITH_A_USERNAME_YOU_MAKE_UP
+ api_password: REPLACE_WITH_A_PASSWORD_YOU_MAKE_UP
+ broker:
+ auth_username: REPLACE_WITH_A_USERNAME_YOU_MAKE_UP # eg. cc
+ auth_password: REPLACE_WITH_A_PASSWORD_YOU_MAKE_UP
+ cookie_secret: REPLACE_WITH_A_PASSWORD_YOU_MAKE_UP
+ dashboard_secret: REPLACE_WITH_PASSWORD_YOU_MAKE_UP #Secret used by MySQL dashboard to fetch an OAuth token from UAA
+ plans:
+ - name: 100mb
+ id: ab08f1bc-e6fc-4b56-a767-ee0fea6e3f20
+ description: Shared MySQL Server
+ max_storage_mb: 100
+ max_user_connections: 20
+ metadata:
+ costs:
+ - amount:
+ usd: 0.0
+ unit: MONTH
+ bullets:
+ - Shared MySQL server
+ - 100 MB storage
+ - 20 concurrent connections
+ displayName: "100 MB"
+ - name: 1gb
+ id: 11d0aa36-dcec-4021-85f5-ea4d9a5c8342
+ description: Shared MySQL Server
+ max_storage_mb: 1000
+ max_user_connections: 40
+ metadata:
+ costs:
+ - amount:
+ usd: 0.0
+ unit: MONTH
+ bullets:
+ - Shared MySQL server
+ - 1000 MB storage
+ - 40 concurrent connections
+ displayName: "1 GB"
diff --git a/manifest-generation/examples/release-versions.yml b/manifest-generation/examples/release-versions.yml
new file mode 100644
index 00000000..c588da05
--- /dev/null
+++ b/manifest-generation/examples/release-versions.yml
@@ -0,0 +1 @@
+release_versions: {}
diff --git a/manifest-generation/examples/standalone/instance-count-overrides.yml b/manifest-generation/examples/standalone/instance-count-overrides.yml
new file mode 100644
index 00000000..526a511c
--- /dev/null
+++ b/manifest-generation/examples/standalone/instance-count-overrides.yml
@@ -0,0 +1,5 @@
+instance_count_overrides:
+ - name: cf-mysql-broker_z1
+ instances: 0
+ - name: cf-mysql-broker_z2
+ instances: 0
diff --git a/manifest-generation/examples/standalone/property-overrides.yml b/manifest-generation/examples/standalone/property-overrides.yml
new file mode 100644
index 00000000..006ea717
--- /dev/null
+++ b/manifest-generation/examples/standalone/property-overrides.yml
@@ -0,0 +1,26 @@
+property_overrides:
+ <<: (( merge || nil ))
+ standalone: true
+ host: YOUR_LOAD_BALANCER_ADDRESS # Optional, set to your Load Balancer address if configured
+ mysql:
+ admin_password: REPLACE_WITH_A_PASSWORD_YOU_MAKE_UP #The admin password for the MySQL server process
+ roadmin_password: REPLACE_WITH_A_PASSWORD_YOU_MAKE_UP
+ bootstrap_endpoint:
+ username: REPLACE_WITH_A_USERNAME_YOU_MAKE_UP
+ password: REPLACE_WITH_A_PASSWORD_YOU_MAKE_UP
+ proxy:
+ api_username: REPLACE_WITH_A_USERNAME_YOU_MAKE_UP
+ api_password: REPLACE_WITH_A_PASSWORD_YOU_MAKE_UP
+ acceptance_tests:
+ standalone_tests_only: true
+ broker:
+ auth_username: UNUSED_VALUE
+ auth_password: UNUSED_VALUE
+ cookie_secret: UNUSED_VALUE
+ auth_password: UNUSED_VALUE
+ dashboard_secret: UNUSED_VALUE
+ plans:
+ - name: UNUSED_VALUE
+ id: UNUSED_VALUE
+ description: UNUSED_VALUE
+ max_storage_mb: 100
diff --git a/manifest-generation/examples/standalone/standalone-cf-manifest.yml b/manifest-generation/examples/standalone/standalone-cf-manifest.yml
new file mode 100644
index 00000000..75b8986c
--- /dev/null
+++ b/manifest-generation/examples/standalone/standalone-cf-manifest.yml
@@ -0,0 +1,15 @@
+# Standalone deployments have no CF, but these fields are required
+# for all deployments.
+name: REPLACE_WITH_CF_DEPLOYMENT_NAME
+director_uuid: REPLACE_WITH_DIRECTOR_UUID
+properties:
+ admin_username: UNUSED_VALUE
+ admin_password: UNUSED_VALUE
+ nats:
+ machines: []
+ user: UNUSED_VALUE
+ password: UNUSED_VALUE
+ port: 0
+ system_domain: UNUSED_VALUE
+ app_domains: [UNUSED_VALUE]
+ domain: UNUSED_VALUE
diff --git a/manifest-generation/examples/upgrade-to-arbitrator/deploy-arbitrator/instance-count-overrides.yml b/manifest-generation/examples/upgrade-to-arbitrator/deploy-arbitrator/instance-count-overrides.yml
new file mode 100644
index 00000000..8dccb1a5
--- /dev/null
+++ b/manifest-generation/examples/upgrade-to-arbitrator/deploy-arbitrator/instance-count-overrides.yml
@@ -0,0 +1,5 @@
+instance_count_overrides:
+ - name: mysql_z3
+ instances: 1
+ - name: arbitrator_z3
+ instances: 1
diff --git a/manifest-generation/examples/upgrade-to-arbitrator/remove-mysql-node/instance-count-overrides.yml b/manifest-generation/examples/upgrade-to-arbitrator/remove-mysql-node/instance-count-overrides.yml
new file mode 100644
index 00000000..1e9fd192
--- /dev/null
+++ b/manifest-generation/examples/upgrade-to-arbitrator/remove-mysql-node/instance-count-overrides.yml
@@ -0,0 +1,3 @@
+instance_count_overrides:
+ - name: mysql_z3
+ instances: 0
diff --git a/manifest-generation/examples/vsphere/iaas-settings.yml b/manifest-generation/examples/vsphere/iaas-settings.yml
new file mode 100644
index 00000000..62d3815a
--- /dev/null
+++ b/manifest-generation/examples/vsphere/iaas-settings.yml
@@ -0,0 +1,168 @@
+properties:
+ vsphere:
+ datacenters:
+ - name: z1
+ datacenter_name: REPLACE_WITH_YOUR_FIRST_DATACENTER
+ clusters:
+ - REPLACE_WITH_YOUR_FIRST_CLUSTER:
+ resource_pool: REPLACE_WITH_YOUR_FIRST_RESOURCE_POOL
+ - name: z2
+ datacenter_name: REPLACE_WITH_YOUR_SECOND_DATACENTER
+ clusters:
+ - REPLACE_WITH_YOUR_SECOND_CLUSTER:
+ resource_pool: REPLACE_WITH_YOUR_SECOND_RESOURCE_POOL
+ - name: z3
+ datacenter_name: REPLACE_WITH_YOUR_THIRD_DATACENTER
+ clusters:
+ - REPLACE_WITH_YOUR_THIRD_CLUSTER:
+ resource_pool: REPLACE_WITH_YOUR_THIRD_RESOURCE_POOL
+ subnet_names:
+ mysql1: REPLACE_WITH_YOUR_SUBNET_NAME_1 #This should match your vSphere network name, e.g. "VM Network".
+ mysql2: REPLACE_WITH_YOUR_SUBNET_NAME_2
+ mysql3: REPLACE_WITH_YOUR_SUBNET_NAME_3
+
+iaas_settings:
+ <<: (( merge || nil ))
+
+# NOTE:
+# Replace 10.0.{0,1,2} part of the octet
+# with your network configuration
+ subnet_configs:
+ - name: mysql1
+ subnets:
+ - range: 10.0.0.0/24
+ gateway: 10.0.0.1
+ reserved:
+ - 10.0.0.2-10.0.0.109
+ - 10.0.0.130-10.0.0.254
+ static:
+ - 10.0.0.120-10.0.0.124
+ dns:
+ - 10.0.0.3
+ - 8.8.8.8
+ cloud_properties:
+ name: (( properties.vsphere.subnet_names.mysql1 ))
+ - name: mysql2
+ subnets:
+ - range: 10.0.1.0/24
+ gateway: 10.0.1.1
+ reserved:
+ - 10.0.1.2-10.0.1.109
+ - 10.0.1.130-10.0.1.254
+ static:
+ - 10.0.1.120-10.0.1.124
+ dns:
+ - 10.0.1.3
+ - 8.8.8.8
+ cloud_properties:
+ name: (( properties.vsphere.subnet_names.mysql2 ))
+ - name: mysql3
+ subnets:
+ - range: 10.0.2.0/24
+ gateway: 10.0.2.1
+ reserved:
+ - 10.0.2.2-10.0.2.109
+ - 10.0.2.130-10.0.2.254
+ static:
+ - 10.0.2.120-10.0.2.124
+ dns:
+ - 10.0.2.3
+ - 8.8.8.8
+ cloud_properties:
+ name: (( properties.vsphere.subnet_names.mysql3 ))
+
+ stemcell: &stemcell
+ name: bosh-vsphere-esxi-ubuntu-trusty-go_agent
+ version: latest
+ compilation_cloud_properties:
+ ram: 4096
+ disk: 20480
+ cpu: 4
+ datacenters:
+ - name: (( .properties.vsphere.datacenters.z1.datacenter_name ))
+ clusters: (( .properties.vsphere.datacenters.z1.clusters ))
+ resource_pool_cloud_properties:
+ - name: mysql_z1
+ cloud_properties:
+ ram: 4096
+ disk: 10480
+ cpu: 2
+ datacenters:
+ - name: (( .properties.vsphere.datacenters.z1.datacenter_name ))
+ clusters: (( .properties.vsphere.datacenters.z1.clusters ))
+
+ - name: mysql_z2
+ cloud_properties:
+ ram: (( iaas_settings.resource_pool_cloud_properties.mysql_z1.cloud_properties.ram ))
+ disk: (( iaas_settings.resource_pool_cloud_properties.mysql_z1.cloud_properties.disk ))
+ cpu: (( iaas_settings.resource_pool_cloud_properties.mysql_z1.cloud_properties.cpu ))
+ datacenters:
+ - name: (( .properties.vsphere.datacenters.z2.datacenter_name ))
+ clusters: (( .properties.vsphere.datacenters.z2.clusters ))
+
+ - name: mysql_z3
+ cloud_properties:
+ ram: (( iaas_settings.resource_pool_cloud_properties.mysql_z1.cloud_properties.ram ))
+ disk: (( iaas_settings.resource_pool_cloud_properties.mysql_z1.cloud_properties.disk ))
+ cpu: (( iaas_settings.resource_pool_cloud_properties.mysql_z1.cloud_properties.cpu ))
+ datacenters:
+ - name: (( .properties.vsphere.datacenters.z3.datacenter_name ))
+ clusters: (( .properties.vsphere.datacenters.z3.clusters ))
+
+ - name: arbitrator_z3
+ cloud_properties:
+ ram: 2048
+ disk: 4096
+ cpu: 1
+ datacenters:
+ - name: (( .properties.vsphere.datacenters.z3.datacenter_name ))
+ clusters: (( .properties.vsphere.datacenters.z3.clusters ))
+
+ - name: proxy_z1
+ cloud_properties:
+ ram: 2048
+ disk: 4096
+ cpu: 2
+ datacenters:
+ - name: (( .properties.vsphere.datacenters.z1.datacenter_name ))
+ clusters: (( .properties.vsphere.datacenters.z1.clusters ))
+
+ - name: proxy_z2
+ cloud_properties:
+ ram: (( iaas_settings.resource_pool_cloud_properties.proxy_z1.cloud_properties.ram ))
+ disk: (( iaas_settings.resource_pool_cloud_properties.proxy_z1.cloud_properties.disk ))
+ cpu: (( iaas_settings.resource_pool_cloud_properties.proxy_z1.cloud_properties.cpu ))
+ datacenters:
+ - name: (( .properties.vsphere.datacenters.z2.datacenter_name ))
+ clusters: (( .properties.vsphere.datacenters.z2.clusters ))
+
+ - name: cf-mysql-broker_z1
+ cloud_properties:
+ ram: 2048
+ disk: 4096
+ cpu: 1
+ datacenters:
+ - name: (( .properties.vsphere.datacenters.z1.datacenter_name ))
+ clusters: (( .properties.vsphere.datacenters.z1.clusters ))
+
+ - name: cf-mysql-broker_z2
+ cloud_properties:
+ ram: (( iaas_settings.resource_pool_cloud_properties.cf-mysql-broker_z1.cloud_properties.ram ))
+ disk: (( iaas_settings.resource_pool_cloud_properties.cf-mysql-broker_z1.cloud_properties.disk ))
+ cpu: (( iaas_settings.resource_pool_cloud_properties.cf-mysql-broker_z1.cloud_properties.cpu ))
+ datacenters:
+ - name: (( .properties.vsphere.datacenters.z2.datacenter_name ))
+ clusters: (( .properties.vsphere.datacenters.z2.clusters ))
+
+ - name: errands_z1
+ cloud_properties:
+ ram: 2048
+ disk: 4096
+ cpu: 1
+ datacenters:
+ - name: (( .properties.vsphere.datacenters.z1.datacenter_name ))
+ clusters: (( .properties.vsphere.datacenters.z1.clusters ))
+
+ disk_pools:
+ - name: mysql-persistent-disk
+ disk_size: 100000
diff --git a/manifest-generation/misc-templates/bosh.yml b/manifest-generation/misc-templates/bosh.yml
new file mode 100644
index 00000000..b0d81704
--- /dev/null
+++ b/manifest-generation/misc-templates/bosh.yml
@@ -0,0 +1,19 @@
+director_uuid: (( merge ))
+
+name: (( merge ))
+
+releases: (( merge ))
+
+compilation: (( merge ))
+
+update: (( merge ))
+
+networks: (( merge ))
+
+disk_pools: (( merge || [] ))
+
+resource_pools: (( merge ))
+
+jobs: (( merge ))
+
+properties: (( merge ))
diff --git a/manifest-generation/misc-templates/config-from-cf-internal.yml b/manifest-generation/misc-templates/config-from-cf-internal.yml
new file mode 100644
index 00000000..6c34e246
--- /dev/null
+++ b/manifest-generation/misc-templates/config-from-cf-internal.yml
@@ -0,0 +1,37 @@
+config_from_cf:
+ cf_deployment_name: (( name ))
+ cf_director_uuid: (( director_uuid ))
+ nats:
+ user: (( properties.nats.user ))
+ password: (( properties.nats.password ))
+ port: (( properties.nats.port ))
+ machines: (( properties.nats.machines ))
+ domain: (( properties.domain ))
+ system_domain: (( properties.system_domain ))
+ app_domains: (( properties.app_domains ))
+ api_url: (( "https://api." properties.domain ))
+ skip_ssl_validation: (( properties.skip_ssl_validation ))
+ admin_username: (( properties.admin_username ))
+ admin_password: (( properties.admin_password ))
+ smoke_tests:
+ use_existing_org: (( properties.smoke_tests.use_existing_org ))
+ org: (( properties.smoke_tests.org ))
+
+# The keys below should not be included in the final stub
+name: (( merge ))
+director_uuid: (( merge ))
+properties:
+ nats:
+ user: (( merge ))
+ password: (( merge ))
+ machines: (( merge ))
+ port: (( merge ))
+ domain: (( merge ))
+ system_domain: (( merge ))
+ app_domains: (( merge ))
+ admin_username: (( merge ))
+ admin_password: (( merge ))
+ skip_ssl_validation: (( merge || nil ))
+ smoke_tests:
+ use_existing_org: (( merge || nil ))
+ org: (( merge || nil ))
diff --git a/manifest-generation/misc-templates/config-from-cf.yml b/manifest-generation/misc-templates/config-from-cf.yml
new file mode 100644
index 00000000..a7414a53
--- /dev/null
+++ b/manifest-generation/misc-templates/config-from-cf.yml
@@ -0,0 +1,18 @@
+config_from_cf:
+ cf_deployment_name: (( merge ))
+ cf_director_uuid: (( merge ))
+ nats:
+ user: (( merge ))
+ password: (( merge ))
+ port: (( merge ))
+ machines: (( merge ))
+ domain: (( merge ))
+ system_domain: (( merge ))
+ app_domains: (( merge ))
+ api_url: (( merge ))
+ skip_ssl_validation: (( merge ))
+ admin_username: (( merge ))
+ admin_password: (( merge ))
+ smoke_tests:
+ use_existing_org: (( merge ))
+ org: (( merge ))
diff --git a/packages/bootstrap/spec b/packages/bootstrap/spec
index 816d1f72..018b7ddb 100644
--- a/packages/bootstrap/spec
+++ b/packages/bootstrap/spec
@@ -13,8 +13,8 @@ files:
- github.com/cloudfoundry-incubator/cf-mysql-bootstrap/config/*.go # gosub
- github.com/cloudfoundry-incubator/cf-mysql-bootstrap/fakes/*.go # gosub
- github.com/cloudfoundry-incubator/cf-mysql-bootstrap/test_helpers/*.go # gosub
- - github.com/fraenkel/candiedyaml/*.go # gosub
- github.com/imdario/mergo/*.go # gosub
- github.com/pivotal-cf-experimental/service-config/*.go # gosub
- github.com/pivotal-golang/lager/*.go # gosub
- gopkg.in/validator.v2/*.go # gosub
+ - gopkg.in/yaml.v2/*.go # gosub
diff --git a/packages/galera-healthcheck/spec b/packages/galera-healthcheck/spec
index d9e3595e..d9a56e8c 100644
--- a/packages/galera-healthcheck/spec
+++ b/packages/galera-healthcheck/spec
@@ -19,7 +19,6 @@ files:
- github.com/cloudfoundry-incubator/galera-healthcheck/mysqld_cmd/fakes/*.go # gosub
- github.com/cloudfoundry-incubator/galera-healthcheck/sequence_number/*.go # gosub
- github.com/cloudfoundry-incubator/galera-healthcheck/sequence_number/fakes/*.go # gosub
- - github.com/fraenkel/candiedyaml/*.go # gosub
- github.com/go-sql-driver/mysql/*.go # gosub
- github.com/imdario/mergo/*.go # gosub
- github.com/pivotal-cf-experimental/service-config/*.go # gosub
@@ -39,3 +38,4 @@ files:
- golang.org/x/text/encoding/unicode/*.go # gosub
- golang.org/x/text/transform/*.go # gosub
- gopkg.in/validator.v2/*.go # gosub
+ - gopkg.in/yaml.v2/*.go # gosub
diff --git a/packages/mariadb/packaging b/packages/mariadb/packaging
index 60d8e5b4..a2c26bf9 100644
--- a/packages/mariadb/packaging
+++ b/packages/mariadb/packaging
@@ -1,7 +1,7 @@
# abort script on any command that exits with a non zero value
set -e
-MARIADB_VERSION=10.0.22
+MARIADB_VERSION=10.0.23
tar xzf mariadb/mariadb-galera-${MARIADB_VERSION}.tar.gz
(
diff --git a/packages/mariadb_ctrl/spec b/packages/mariadb_ctrl/spec
index 7246f631..11d01dcc 100644
--- a/packages/mariadb_ctrl/spec
+++ b/packages/mariadb_ctrl/spec
@@ -12,13 +12,16 @@ files:
- github.com/cloudfoundry/mariadb_ctrl/integration_test/*.go # gosub
- github.com/cloudfoundry/mariadb_ctrl/mariadb_helper/*.go # gosub
- github.com/cloudfoundry/mariadb_ctrl/mariadb_helper/fakes/*.go # gosub
+ - github.com/cloudfoundry/mariadb_ctrl/mariadb_helper/seeder/*.go # gosub
+ - github.com/cloudfoundry/mariadb_ctrl/mariadb_helper/seeder/fakes/*.go # gosub
- github.com/cloudfoundry/mariadb_ctrl/os_helper/*.go # gosub
- github.com/cloudfoundry/mariadb_ctrl/os_helper/fakes/*.go # gosub
- github.com/cloudfoundry/mariadb_ctrl/start_manager/*.go # gosub
- github.com/cloudfoundry/mariadb_ctrl/start_manager/fakes/*.go # gosub
+ - github.com/cloudfoundry/mariadb_ctrl/start_manager/node_starter/*.go # gosub
+ - github.com/cloudfoundry/mariadb_ctrl/start_manager/node_starter/fakes/*.go # gosub
- github.com/cloudfoundry/mariadb_ctrl/upgrader/*.go # gosub
- github.com/cloudfoundry/mariadb_ctrl/upgrader/fakes/*.go # gosub
- - github.com/fraenkel/candiedyaml/*.go # gosub
- github.com/go-sql-driver/mysql/*.go # gosub
- github.com/imdario/mergo/*.go # gosub
- github.com/pivotal-cf-experimental/service-config/*.go # gosub
@@ -26,3 +29,4 @@ files:
- github.com/tedsuo/ifrit/*.go # gosub
- github.com/tedsuo/ifrit/sigmon/*.go # gosub
- gopkg.in/validator.v2/*.go # gosub
+ - gopkg.in/yaml.v2/*.go # gosub
diff --git a/packages/quota-enforcer/spec b/packages/quota-enforcer/spec
index 797524ff..59d084c4 100644
--- a/packages/quota-enforcer/spec
+++ b/packages/quota-enforcer/spec
@@ -4,7 +4,6 @@ dependencies:
- golang
files:
- github.com/cloudfoundry-incubator/cf-lager/*.go # gosub
- - github.com/fraenkel/candiedyaml/*.go # gosub
- github.com/go-sql-driver/mysql/*.go # gosub
- github.com/imdario/mergo/*.go # gosub
- github.com/pivotal-cf-experimental/cf-mysql-quota-enforcer/*.go # gosub
@@ -17,3 +16,4 @@ files:
- github.com/pivotal-golang/lager/*.go # gosub
- github.com/tedsuo/ifrit/*.go # gosub
- gopkg.in/validator.v2/*.go # gosub
+ - gopkg.in/yaml.v2/*.go # gosub
diff --git a/packages/route-registrar/spec b/packages/route-registrar/spec
index c589eccd..9e0a5505 100644
--- a/packages/route-registrar/spec
+++ b/packages/route-registrar/spec
@@ -8,12 +8,14 @@ files:
- github.com/cloudfoundry-incubator/route-registrar/config/*.go # gosub
- github.com/cloudfoundry-incubator/route-registrar/healthchecker/*.go # gosub
- github.com/cloudfoundry-incubator/route-registrar/healthchecker/fakes/*.go # gosub
+ - github.com/cloudfoundry-incubator/route-registrar/messagebus/*.go # gosub
+ - github.com/cloudfoundry-incubator/route-registrar/messagebus/fakes/*.go # gosub
- github.com/cloudfoundry-incubator/route-registrar/registrar/*.go # gosub
- - github.com/cloudfoundry-incubator/route-registrar/test_helpers/*.go # gosub
- - github.com/cloudfoundry-incubator/route-registrar/Godeps/_workspace/src/github.com/cloudfoundry/gibson/*.go # gosub
- - github.com/cloudfoundry-incubator/route-registrar/Godeps/_workspace/src/github.com/cloudfoundry/yagnats/*.go # gosub
- - github.com/cloudfoundry-incubator/route-registrar/Godeps/_workspace/src/github.com/fraenkel/candiedyaml/*.go # gosub
- github.com/cloudfoundry-incubator/route-registrar/Godeps/_workspace/src/github.com/imdario/mergo/*.go # gosub
+ - github.com/cloudfoundry-incubator/route-registrar/Godeps/_workspace/src/github.com/nats-io/nats/*.go # gosub
+ - github.com/cloudfoundry-incubator/route-registrar/Godeps/_workspace/src/github.com/nats-io/nats/encoders/builtin/*.go # gosub
- github.com/cloudfoundry-incubator/route-registrar/Godeps/_workspace/src/github.com/nu7hatch/gouuid/*.go # gosub
- github.com/cloudfoundry-incubator/route-registrar/Godeps/_workspace/src/github.com/pivotal-cf-experimental/service-config/*.go # gosub
- github.com/cloudfoundry-incubator/route-registrar/Godeps/_workspace/src/github.com/pivotal-golang/lager/*.go # gosub
+ - github.com/cloudfoundry-incubator/route-registrar/Godeps/_workspace/src/github.com/tedsuo/ifrit/*.go # gosub
+ - github.com/cloudfoundry-incubator/route-registrar/Godeps/_workspace/src/gopkg.in/yaml.v2/*.go # gosub
diff --git a/packages/switchboard/spec b/packages/switchboard/spec
index 1366325f..c26aad86 100644
--- a/packages/switchboard/spec
+++ b/packages/switchboard/spec
@@ -16,7 +16,6 @@ files:
- github.com/cloudfoundry-incubator/switchboard/dummies/*.go # gosub
- github.com/cloudfoundry-incubator/switchboard/health/*.go # gosub
- github.com/cloudfoundry-incubator/switchboard/proxy/*.go # gosub
- - github.com/fraenkel/candiedyaml/*.go # gosub
- github.com/imdario/mergo/*.go # gosub
- github.com/onsi/ginkgo/*.go # gosub
- github.com/onsi/ginkgo/config/*.go # gosub
@@ -38,3 +37,4 @@ files:
- github.com/tedsuo/ifrit/*.go # gosub
- github.com/tedsuo/ifrit/grouper/*.go # gosub
- gopkg.in/validator.v2/*.go # gosub
+ - gopkg.in/yaml.v2/*.go # gosub
diff --git a/scripts/generate-bosh-lite-manifest b/scripts/generate-bosh-lite-manifest
new file mode 100755
index 00000000..49f44573
--- /dev/null
+++ b/scripts/generate-bosh-lite-manifest
@@ -0,0 +1,33 @@
+#!/bin/bash
+
+set -eu
+
+MY_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+RELEASE_DIR="$( cd "${MY_DIR}/.." && pwd )"
+
+DIRECTOR_IP=${DIRECTOR_IP:-192.168.50.4}
+BOSH_LITE_USERNAME=${BOSH_LITE_USERNAME:-admin}
+BOSH_LITE_PASSWORD=${BOSH_LITE_PASSWORD:-admin}
+
+tmpdir=$(mktemp -d /tmp/mysql_manifest.XXXXX)
+trap '{ rm -rf ${tmpdir}; }' EXIT
+
+pushd "${RELEASE_DIR}" > /dev/null
+
+ bosh -n target "${DIRECTOR_IP}"
+ bosh -n login "${BOSH_LITE_USERNAME}" "${BOSH_LITE_PASSWORD}"
+ DIRECTOR_UUID="$(bosh status --uuid)"
+ sed "s/REPLACE_WITH_DIRECTOR_UUID/$DIRECTOR_UUID/g" \
+ "${RELEASE_DIR}/manifest-generation/bosh-lite-stubs/cf-manifest.yml" \
+ > "${tmpdir}/bosh-lite-cf-manifest.yml"
+
+ ./scripts/generate-deployment-manifest \
+ -c "${tmpdir}/bosh-lite-cf-manifest.yml" \
+ -p ./manifest-generation/bosh-lite-stubs/property-overrides.yml \
+ -i ./manifest-generation/bosh-lite-stubs/iaas-settings.yml \
+ > cf-mysql.yml
+
+ bosh deployment cf-mysql.yml
+popd > /dev/null
+
+echo "CF-MySQL Manifest was generated at ${RELEASE_DIR}/cf-mysql.yml"
diff --git a/scripts/generate-deployment-manifest b/scripts/generate-deployment-manifest
new file mode 100755
index 00000000..e86b612f
--- /dev/null
+++ b/scripts/generate-deployment-manifest
@@ -0,0 +1,125 @@
+#!/bin/bash
+
+MY_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+RELEASE_DIR="$( cd "${MY_DIR}/.." && pwd )"
+MANIFEST_DIR="$( cd "${RELEASE_DIR}/manifest-generation" && pwd )"
+
+argument_error=false
+
+function usage(){
+ >&2 echo " Usage:
+ Mandatory arguments:
+ -c CF Manifest
+ -p Property overrides stub file
+ -i Infrastructure settings stub file
+ Optional arguments
+ -n Instance count overrides stub file (single node, 3 node)
+ -v Release versions stub file
+ -j Manifest stub file for additional jobs
+ "
+ exit 1
+}
+
+property_overrides=()
+iaas_settings=()
+
+while getopts "c:p:i:n:v:j:" opt; do
+ case $opt in
+ c)
+ cf_manifest=$OPTARG
+ ;;
+ p)
+ property_overrides+=($OPTARG)
+ ;;
+ i)
+ iaas_settings+=($OPTARG)
+ ;;
+ n)
+ instance_counts=$OPTARG
+ ;;
+ v)
+ release_versions=$OPTARG
+ ;;
+ j)
+ other_jobs_stub=$OPTARG
+ ;;
+ *)
+ echo "Unknown arguments"
+ usage
+ ;;
+ esac
+done
+
+if [ ${#iaas_settings[@]} == 0 ]; then
+ >&2 echo "iaas_settings stub file is missing"
+ argument_error=true
+else
+ for file in "${iaas_settings[@]}"; do
+ if [ ! -f "${file}" ]; then
+ >&2 echo "iaas_settings stub ${file} is not a regular file"
+ argument_error=true
+ fi
+ done
+fi
+
+if [ -z "${cf_manifest}" ]; then
+ >&2 echo "cf manifest file is missing"
+ argument_error=true
+elif [ ! -f "${cf_manifest}" ]; then
+ >&2 echo "cf manifest ${cf_manifest} is not a regular file"
+ argument_error=true
+fi
+
+if [ ${#property_overrides[@]} == 0 ]; then
+ >&2 echo "property-overrides stub file is missing"
+ argument_error=true
+else
+ for file in "${property_overrides[@]}"; do
+ if [ ! -f "${file}" ]; then
+ >&2 echo "Property Overrides stub '${file}' is not a regular file"
+ argument_error=true
+ fi
+ done
+fi
+
+if [[ ! -z "${instance_counts}" && ! -f "${instance_counts}" ]]; then
+ >&2 echo "Instance Count Overrides stub '${instance_counts}' is not a regular file"
+ argument_error=true
+fi
+
+if [[ ! -z "${release_versions}" && ! -f "${release_versions}" ]]; then
+ >&2 echo "Release versions stub '${release_versions}' is not a regular file"
+ argument_error=true
+fi
+
+if [[ ! -z "${other_jobs_stub}" && ! -f "${other_jobs_stub}" ]]; then
+ >&2 echo "Additional Job Stub file '${other_jobs_stub}' is not a regular file"
+ argument_error=true
+fi
+
+if [ "$argument_error" = "true" ]; then
+ usage
+fi
+
+tmpdir=$(mktemp -d /tmp/mysql_manifest.XXXXX)
+trap '{ rm -rf ${tmpdir}; }' EXIT
+
+spiff merge \
+ ${MANIFEST_DIR}/misc-templates/config-from-cf.yml \
+ ${MANIFEST_DIR}/misc-templates/config-from-cf-internal.yml \
+ ${cf_manifest} \
+ > ${tmpdir}/config-from-cf.yml
+
+spiff merge \
+ ${MANIFEST_DIR}/cf-mysql-template.yml \
+ ${other_jobs_stub} \
+ ${tmpdir}/config-from-cf.yml \
+ "${iaas_settings[@]}" \
+ ${instance_counts} \
+ "${property_overrides[@]}" \
+ ${release_versions} \
+ > ${tmpdir}/mysql-config.yml
+
+spiff merge \
+ ${MANIFEST_DIR}/misc-templates/bosh.yml \
+ ${tmpdir}/mysql-config.yml
diff --git a/scripts/test-sample-stubs b/scripts/test-sample-stubs
new file mode 100755
index 00000000..128051ff
--- /dev/null
+++ b/scripts/test-sample-stubs
@@ -0,0 +1,49 @@
+#!/bin/bash
+
+set -eux
+
+MY_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+
+# This script assumes that it lives one directory below the release directory.
+RELEASE_DIR="$( cd ${MY_DIR}/.. && pwd )"
+
+FAKE_CF_MANIFEST="${RELEASE_DIR}/manifest-generation/examples/standalone/standalone-cf-manifest.yml"
+
+# aws
+${RELEASE_DIR}/scripts/generate-deployment-manifest \
+ -c "${FAKE_CF_MANIFEST}" \
+ -p "${RELEASE_DIR}"/manifest-generation/examples/property-overrides.yml \
+ -i "${RELEASE_DIR}"/manifest-generation/examples/aws/iaas-settings.yml
+
+# vsphere
+${RELEASE_DIR}/scripts/generate-deployment-manifest \
+ -c "${FAKE_CF_MANIFEST}" \
+ -p "${RELEASE_DIR}"/manifest-generation/examples/property-overrides.yml \
+ -i "${RELEASE_DIR}"/manifest-generation/examples/vsphere/iaas-settings.yml
+
+# bosh-lite
+${RELEASE_DIR}/scripts/generate-deployment-manifest \
+ -c "${FAKE_CF_MANIFEST}" \
+ -p "${RELEASE_DIR}"/manifest-generation/bosh-lite-stubs/property-overrides.yml \
+ -i "${RELEASE_DIR}"/manifest-generation/bosh-lite-stubs/iaas-settings.yml
+
+# standalone
+${RELEASE_DIR}/scripts/generate-deployment-manifest \
+ -c "${FAKE_CF_MANIFEST}" \
+ -p "${RELEASE_DIR}"/manifest-generation/examples/standalone/property-overrides.yml \
+ -i "${RELEASE_DIR}"/manifest-generation/bosh-lite-stubs/iaas-settings.yml \
+ -n "${RELEASE_DIR}"/manifest-generation/examples/standalone/instance-count-overrides.yml
+
+# no arbitrator
+${RELEASE_DIR}/scripts/generate-deployment-manifest \
+ -c "${FAKE_CF_MANIFEST}" \
+ -p "${RELEASE_DIR}"/manifest-generation/examples/property-overrides.yml \
+ -i "${RELEASE_DIR}"/manifest-generation/bosh-lite-stubs/iaas-settings.yml \
+ -n "${RELEASE_DIR}"/manifest-generation/examples/no-arbitrator/instance-count-overrides.yml
+
+# minimal
+${RELEASE_DIR}/scripts/generate-deployment-manifest \
+ -c "${FAKE_CF_MANIFEST}" \
+ -p "${RELEASE_DIR}"/manifest-generation/examples/property-overrides.yml \
+ -i "${RELEASE_DIR}"/manifest-generation/bosh-lite-stubs/iaas-settings.yml \
+ -n "${RELEASE_DIR}"/manifest-generation/examples/minimal/instance-count-overrides.yml
diff --git a/scripts/test-unit b/scripts/test-unit
index f5ff6da1..0d7db9aa 100755
--- a/scripts/test-unit
+++ b/scripts/test-unit
@@ -13,6 +13,10 @@ source ${RELEASE_DIR}/.envrc
rm -rf ${RELEASE_DIR}/bin/ginkgo
go install -v github.com/onsi/ginkgo/ginkgo
+rm -rf ${RELEASE_DIR}/bin/godep
+go get -v github.com/tools/godep
+go install -v github.com/tools/godep
+
echo -e "\nTesting Switchboard..."
${RELEASE_DIR}/src/github.com/cloudfoundry-incubator/switchboard/bin/test "$@"
@@ -27,3 +31,6 @@ ${RELEASE_DIR}/src/github.com/pivotal-cf-experimental/cf-mysql-quota-enforcer/bi
echo -e "\nTesting Bootstrapper..."
${RELEASE_DIR}/src/github.com/cloudfoundry-incubator/cf-mysql-bootstrap/bin/test "$@"
+
+echo -e "\nTesting Route Registrar..."
+${RELEASE_DIR}/src/github.com/cloudfoundry-incubator/route-registrar/bin/test "$@"
diff --git a/scripts/test_sample_stubs b/scripts/test_sample_stubs
deleted file mode 100755
index 818bb508..00000000
--- a/scripts/test_sample_stubs
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/bash
-
-set -eux
-
-MY_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
-
-# This script assumes that it lives one directory below the release directory.
-RELEASE_DIR="$( cd ${MY_DIR}/.. && pwd )"
-
-${RELEASE_DIR}/generate_deployment_manifest \
- aws \
- ${RELEASE_DIR}/templates/sample_stubs/sample_plans_stub.yml \
- ${RELEASE_DIR}/templates/sample_stubs/sample_aws_stub.yml
-
-${RELEASE_DIR}/generate_deployment_manifest \
- vsphere \
- ${RELEASE_DIR}/templates/sample_stubs/sample_plans_stub.yml \
- ${RELEASE_DIR}/templates/sample_stubs/sample_vsphere_stub.yml
diff --git a/src/github.com/apcera/gnatsd b/src/github.com/apcera/gnatsd
new file mode 160000
index 00000000..ed3c20f1
--- /dev/null
+++ b/src/github.com/apcera/gnatsd
@@ -0,0 +1 @@
+Subproject commit ed3c20f13ec905cc19c139d2fe5cb090dd30e979
diff --git a/src/github.com/cloudfoundry-incubator/cf-mysql-acceptance-tests b/src/github.com/cloudfoundry-incubator/cf-mysql-acceptance-tests
index 86e4cfa3..532eca1f 160000
--- a/src/github.com/cloudfoundry-incubator/cf-mysql-acceptance-tests
+++ b/src/github.com/cloudfoundry-incubator/cf-mysql-acceptance-tests
@@ -1 +1 @@
-Subproject commit 86e4cfa30671904938b0951a8ad30203310ec72f
+Subproject commit 532eca1f72cf8683e5def78431047ccb46c36225
diff --git a/src/github.com/cloudfoundry-incubator/cf-mysql-bootstrap b/src/github.com/cloudfoundry-incubator/cf-mysql-bootstrap
index 851bbc6d..0418851b 160000
--- a/src/github.com/cloudfoundry-incubator/cf-mysql-bootstrap
+++ b/src/github.com/cloudfoundry-incubator/cf-mysql-bootstrap
@@ -1 +1 @@
-Subproject commit 851bbc6d8ee934b5f71735e93719091f3bf6a6d9
+Subproject commit 0418851b7f34c6ed615030c6ef5b60c1d64957b9
diff --git a/src/github.com/cloudfoundry-incubator/galera-healthcheck b/src/github.com/cloudfoundry-incubator/galera-healthcheck
index 3924873f..36468bae 160000
--- a/src/github.com/cloudfoundry-incubator/galera-healthcheck
+++ b/src/github.com/cloudfoundry-incubator/galera-healthcheck
@@ -1 +1 @@
-Subproject commit 3924873f2a44e8f23efc9aee0dc24f736294f093
+Subproject commit 36468bae0c77517fb05e1dc5ecdbe9aab3852ed8
diff --git a/src/github.com/cloudfoundry-incubator/route-registrar b/src/github.com/cloudfoundry-incubator/route-registrar
index 952d993c..7bf60c1d 160000
--- a/src/github.com/cloudfoundry-incubator/route-registrar
+++ b/src/github.com/cloudfoundry-incubator/route-registrar
@@ -1 +1 @@
-Subproject commit 952d993c4dd5db4a4e42307bc3498c970f1c0f9f
+Subproject commit 7bf60c1db84826d74d43cae1a61b7568b3959326
diff --git a/src/github.com/cloudfoundry-incubator/switchboard b/src/github.com/cloudfoundry-incubator/switchboard
index de8edb53..ea2daace 160000
--- a/src/github.com/cloudfoundry-incubator/switchboard
+++ b/src/github.com/cloudfoundry-incubator/switchboard
@@ -1 +1 @@
-Subproject commit de8edb53739129601339dfaf0736c018779969be
+Subproject commit ea2daaceb8217c88a45d7a18a90e677a53754a2a
diff --git a/src/github.com/cloudfoundry/mariadb_ctrl b/src/github.com/cloudfoundry/mariadb_ctrl
index fe7eaa82..562a5001 160000
--- a/src/github.com/cloudfoundry/mariadb_ctrl
+++ b/src/github.com/cloudfoundry/mariadb_ctrl
@@ -1 +1 @@
-Subproject commit fe7eaa822024504272a7847d8af7f1a981af3069
+Subproject commit 562a500116413034ad649387afcde537ff6f86ee
diff --git a/src/github.com/go-yaml/yaml b/src/github.com/go-yaml/yaml
new file mode 160000
index 00000000..bec87e43
--- /dev/null
+++ b/src/github.com/go-yaml/yaml
@@ -0,0 +1 @@
+Subproject commit bec87e4332aede01fb63a4ab299d8af28480cd96
diff --git a/src/github.com/nats-io/gnatsd b/src/github.com/nats-io/gnatsd
new file mode 160000
index 00000000..ed3c20f1
--- /dev/null
+++ b/src/github.com/nats-io/gnatsd
@@ -0,0 +1 @@
+Subproject commit ed3c20f13ec905cc19c139d2fe5cb090dd30e979
diff --git a/src/github.com/nats-io/nats b/src/github.com/nats-io/nats
new file mode 160000
index 00000000..355b5b97
--- /dev/null
+++ b/src/github.com/nats-io/nats
@@ -0,0 +1 @@
+Subproject commit 355b5b97e0842dc94f1106729aa88e33e06317ca
diff --git a/src/github.com/pivotal-cf-experimental/cf-mysql-quota-enforcer b/src/github.com/pivotal-cf-experimental/cf-mysql-quota-enforcer
index 6a74438a..a60f2f2d 160000
--- a/src/github.com/pivotal-cf-experimental/cf-mysql-quota-enforcer
+++ b/src/github.com/pivotal-cf-experimental/cf-mysql-quota-enforcer
@@ -1 +1 @@
-Subproject commit 6a74438a05c104a7dc113c523c8526488c874576
+Subproject commit a60f2f2d7d5a3cd5f5432a478a2c56916a9eb1c9
diff --git a/src/github.com/pivotal-cf-experimental/service-config b/src/github.com/pivotal-cf-experimental/service-config
index d1936ca6..b1dc94de 160000
--- a/src/github.com/pivotal-cf-experimental/service-config
+++ b/src/github.com/pivotal-cf-experimental/service-config
@@ -1 +1 @@
-Subproject commit d1936ca6555039c884eb26fabd3396a28e9c488d
+Subproject commit b1dc94de6ada8bfddf159ce2234958a8f02aec77
diff --git a/src/gopkg.in/yaml.v2 b/src/gopkg.in/yaml.v2
new file mode 160000
index 00000000..f7716cbe
--- /dev/null
+++ b/src/gopkg.in/yaml.v2
@@ -0,0 +1 @@
+Subproject commit f7716cbe52baa25d2e9b0d0da546fcf909fc16b4
diff --git a/templates/cf-infrastructure-aws.yml b/templates/cf-infrastructure-aws.yml
deleted file mode 100644
index 80f39ee9..00000000
--- a/templates/cf-infrastructure-aws.yml
+++ /dev/null
@@ -1,74 +0,0 @@
-meta: ~
-
-stemcell: &stemcell
- name: bosh-aws-xen-hvm-ubuntu-trusty-go_agent
- version: latest
-
-compilation:
- cloud_properties:
- instance_type: (( merge || "c4.large" ))
- availability_zone: (( properties.template_only.aws.availability_zone ))
- ephemeral_disk:
- size: 30000 # in MB
- type: gp2
-
-networks: (( merge ))
-
-resource_pools:
-- name: mysql_z1
- stemcell: *stemcell
- cloud_properties:
- instance_type: (( merge || "m3.large" ))
- availability_zone: (( properties.template_only.aws.availability_zone ))
-
-- name: mysql_z2
- stemcell: *stemcell
- cloud_properties:
- instance_type: (( merge || "m3.large" ))
- availability_zone: (( properties.template_only.aws.availability_zone2 ))
-
-- name: mysql_z3
- stemcell: *stemcell
- cloud_properties:
- instance_type: (( merge || "m3.large" ))
- availability_zone: (( properties.template_only.aws.availability_zone3 ))
-
-- name: proxy_z1
- stemcell: *stemcell
- cloud_properties:
- instance_type: (( merge || "m3.medium" ))
- availability_zone: (( properties.template_only.aws.availability_zone ))
- elbs: (( merge || nil ))
-
-- name: proxy_z2
- stemcell: *stemcell
- cloud_properties:
- instance_type: (( merge || "m3.medium" ))
- availability_zone: (( properties.template_only.aws.availability_zone2 ))
- elbs: (( merge || nil ))
-
-- name: cf-mysql-broker_z1
- stemcell: *stemcell
- cloud_properties:
- instance_type: (( merge || "m3.medium" ))
- availability_zone: (( properties.template_only.aws.availability_zone ))
-
-- name: cf-mysql-broker_z2
- stemcell: *stemcell
- cloud_properties:
- instance_type: (( merge || "m3.medium" ))
- availability_zone: (( properties.template_only.aws.availability_zone2 ))
-
-- name: errands_z1
- stemcell: *stemcell
- cloud_properties:
- instance_type: (( merge || "m3.medium" ))
- availability_zone: (( properties.template_only.aws.availability_zone ))
-
-disk_pools:
-- name: mysql-persistent-disk
- cloud_properties:
- type: gp2
-
-properties:
- template_only: (( merge ))
diff --git a/templates/cf-infrastructure-vsphere.yml b/templates/cf-infrastructure-vsphere.yml
deleted file mode 100644
index dc72bcb3..00000000
--- a/templates/cf-infrastructure-vsphere.yml
+++ /dev/null
@@ -1,109 +0,0 @@
-meta: ~
-
-stemcell: &stemcell
- name: bosh-vsphere-esxi-ubuntu-trusty-go_agent
- version: latest
-
-compilation:
- cloud_properties:
- ram: (( merge || 4096 ))
- disk: (( merge || 20480 ))
- cpu: (( merge || 4 ))
- datacenters:
- - name: (( .properties.datacenters.z1.datacenter_name ))
- clusters: (( .properties.datacenters.z1.clusters ))
-
-networks: (( merge ))
-
-properties:
- datacenters:
- - name: z1
- datacenter_name: (( merge ))
- clusters: (( merge ))
- - name: z2
- datacenter_name: (( merge ))
- clusters: (( merge ))
- - name: z3
- datacenter_name: (( merge ))
- clusters: (( merge ))
-
-resource_pools:
-- name: mysql_z1
- stemcell: *stemcell
- cloud_properties:
- ram: (( merge || 4096 ))
- disk: (( merge || 10480 ))
- cpu: (( merge || 2 ))
- datacenters:
- - name: (( .properties.datacenters.z1.datacenter_name ))
- clusters: (( .properties.datacenters.z1.clusters ))
-
-- name: mysql_z2
- stemcell: *stemcell
- cloud_properties:
- ram: (( resource_pools.mysql_z1.cloud_properties.ram ))
- disk: (( resource_pools.mysql_z1.cloud_properties.disk ))
- cpu: (( resource_pools.mysql_z1.cloud_properties.cpu ))
- datacenters:
- - name: (( .properties.datacenters.z2.datacenter_name ))
- clusters: (( .properties.datacenters.z2.clusters ))
-
-- name: mysql_z3
- stemcell: *stemcell
- cloud_properties:
- ram: (( resource_pools.mysql_z1.cloud_properties.ram ))
- disk: (( resource_pools.mysql_z1.cloud_properties.disk ))
- cpu: (( resource_pools.mysql_z1.cloud_properties.cpu ))
- datacenters:
- - name: (( .properties.datacenters.z3.datacenter_name ))
- clusters: (( .properties.datacenters.z3.clusters ))
-
-- name: proxy_z1
- stemcell: *stemcell
- cloud_properties:
- ram: (( merge || 2048 ))
- disk: (( merge || 4096 ))
- cpu: (( merge || 1 ))
- datacenters:
- - name: (( .properties.datacenters.z1.datacenter_name ))
- clusters: (( .properties.datacenters.z1.clusters ))
-
-- name: proxy_z2
- stemcell: *stemcell
- cloud_properties:
- ram: (( resource_pools.proxy_z1.cloud_properties.ram ))
- disk: (( resource_pools.proxy_z1.cloud_properties.disk ))
- cpu: (( resource_pools.proxy_z1.cloud_properties.cpu ))
- datacenters:
- - name: (( .properties.datacenters.z2.datacenter_name ))
- clusters: (( .properties.datacenters.z2.clusters ))
-
-- name: cf-mysql-broker_z1
- stemcell: *stemcell
- cloud_properties:
- ram: (( merge || 2048 ))
- disk: (( merge || 4096 ))
- cpu: (( merge || 1 ))
- datacenters:
- - name: (( .properties.datacenters.z1.datacenter_name ))
- clusters: (( .properties.datacenters.z1.clusters ))
-
-- name: cf-mysql-broker_z2
- stemcell: *stemcell
- cloud_properties:
- ram: (( resource_pools.cf-mysql-broker_z1.cloud_properties.ram ))
- disk: (( resource_pools.cf-mysql-broker_z1.cloud_properties.disk ))
- cpu: (( resource_pools.cf-mysql-broker_z1.cloud_properties.cpu ))
- datacenters:
- - name: (( .properties.datacenters.z2.datacenter_name ))
- clusters: (( .properties.datacenters.z2.clusters ))
-
-- name: errands_z1
- stemcell: *stemcell
- cloud_properties:
- ram: (( merge || 2048 ))
- disk: (( merge || 4096 ))
- cpu: (( merge || 1 ))
- datacenters:
- - name: (( .properties.datacenters.z1.datacenter_name ))
- clusters: (( .properties.datacenters.z1.clusters ))
\ No newline at end of file
diff --git a/templates/cf-infrastructure-warden.yml b/templates/cf-infrastructure-warden.yml
deleted file mode 100644
index 7aa3848a..00000000
--- a/templates/cf-infrastructure-warden.yml
+++ /dev/null
@@ -1,2141 +0,0 @@
-meta:
- fog_config:
- provider: Local
- local_root: /var/vcap/store
-
-compilation:
- workers: 6
- network: services1
- reuse_compilation_vms: true
- cloud_properties:
- name: random
-
-stemcell: &stemcell
- name: bosh-warden-boshlite-ubuntu-trusty-go_agent
- version: latest
-
-resource_pools:
-- name: mysql_z1
- network: mysql1
- stemcell: *stemcell
- cloud_properties: {name: random}
-- name: mysql_z2
- network: mysql1
- stemcell: *stemcell
- cloud_properties: {name: random}
-- name: mysql_z3
- network: mysql1
- stemcell: *stemcell
- cloud_properties: {name: random}
-- name: proxy_z1
- network: mysql1
- stemcell: *stemcell
- cloud_properties: {name: random}
-- name: proxy_z2
- network: mysql2
- stemcell: *stemcell
- cloud_properties: {name: random}
-- name: cf-mysql-broker_z1
- network: mysql1
- stemcell: *stemcell
- cloud_properties: {name: random}
-- name: cf-mysql-broker_z2
- network: mysql2
- stemcell: *stemcell
- cloud_properties: {name: random}
-
-networks:
-- name: services1
- subnets:
- - cloud_properties:
- name: random
- range: 10.244.1.0/30
- reserved:
- - 10.244.1.1
- static:
- - 10.244.1.2
- - cloud_properties:
- name: random
- range: 10.244.1.4/30
- reserved:
- - 10.244.1.5
- static:
- - 10.244.1.6
- - cloud_properties:
- name: random
- range: 10.244.1.8/30
- reserved:
- - 10.244.1.9
- static:
- - 10.244.1.10
- - cloud_properties:
- name: random
- range: 10.244.1.12/30
- reserved:
- - 10.244.1.13
- static:
- - 10.244.1.14
- - cloud_properties:
- name: random
- range: 10.244.1.16/30
- reserved:
- - 10.244.1.17
- static:
- - 10.244.1.18
- - cloud_properties:
- name: random
- range: 10.244.1.20/30
- reserved:
- - 10.244.1.21
- static:
- - 10.244.1.22
- - cloud_properties:
- name: random
- range: 10.244.1.24/30
- reserved:
- - 10.244.1.25
- static:
- - 10.244.1.26
- - cloud_properties:
- name: random
- range: 10.244.1.28/30
- reserved:
- - 10.244.1.29
- static:
- - 10.244.1.30
- - cloud_properties:
- name: random
- range: 10.244.1.32/30
- reserved:
- - 10.244.1.33
- static:
- - 10.244.1.34
- - cloud_properties:
- name: random
- range: 10.244.1.36/30
- reserved:
- - 10.244.1.37
- static:
- - 10.244.1.38
- - cloud_properties:
- name: random
- range: 10.244.1.40/30
- reserved:
- - 10.244.1.41
- static:
- - 10.244.1.42
- - cloud_properties:
- name: random
- range: 10.244.1.44/30
- reserved:
- - 10.244.1.45
- static:
- - 10.244.1.46
- - cloud_properties:
- name: random
- range: 10.244.1.48/30
- reserved:
- - 10.244.1.49
- static:
- - 10.244.1.50
- - cloud_properties:
- name: random
- range: 10.244.1.52/30
- reserved:
- - 10.244.1.53
- static:
- - 10.244.1.54
- - cloud_properties:
- name: random
- range: 10.244.1.56/30
- reserved:
- - 10.244.1.57
- static:
- - 10.244.1.58
- - cloud_properties:
- name: random
- range: 10.244.1.60/30
- reserved:
- - 10.244.1.61
- static:
- - 10.244.1.62
- - cloud_properties:
- name: random
- range: 10.244.1.64/30
- reserved:
- - 10.244.1.65
- static:
- - 10.244.1.66
- - cloud_properties:
- name: random
- range: 10.244.1.68/30
- reserved:
- - 10.244.1.69
- static:
- - 10.244.1.70
- - cloud_properties:
- name: random
- range: 10.244.1.72/30
- reserved:
- - 10.244.1.73
- static:
- - 10.244.1.74
- - cloud_properties:
- name: random
- range: 10.244.1.76/30
- reserved:
- - 10.244.1.77
- static:
- - 10.244.1.78
- - cloud_properties:
- name: random
- range: 10.244.1.80/30
- reserved:
- - 10.244.1.81
- static:
- - 10.244.1.82
- - cloud_properties:
- name: random
- range: 10.244.1.84/30
- reserved:
- - 10.244.1.85
- static:
- - 10.244.1.86
- - cloud_properties:
- name: random
- range: 10.244.1.88/30
- reserved:
- - 10.244.1.89
- static:
- - 10.244.1.90
- - cloud_properties:
- name: random
- range: 10.244.1.92/30
- reserved:
- - 10.244.1.93
- static:
- - 10.244.1.94
- - cloud_properties:
- name: random
- range: 10.244.1.96/30
- reserved:
- - 10.244.1.97
- static:
- - 10.244.1.98
- - cloud_properties:
- name: random
- range: 10.244.1.100/30
- reserved:
- - 10.244.1.101
- static:
- - 10.244.1.102
- - cloud_properties:
- name: random
- range: 10.244.1.104/30
- reserved:
- - 10.244.1.105
- static:
- - 10.244.1.106
- - cloud_properties:
- name: random
- range: 10.244.1.108/30
- reserved:
- - 10.244.1.109
- static:
- - 10.244.1.110
- - cloud_properties:
- name: random
- range: 10.244.1.112/30
- reserved:
- - 10.244.1.113
- static:
- - 10.244.1.114
- - cloud_properties:
- name: random
- range: 10.244.1.116/30
- reserved:
- - 10.244.1.117
- static:
- - 10.244.1.118
- - cloud_properties:
- name: random
- range: 10.244.1.120/30
- reserved:
- - 10.244.1.121
- static:
- - 10.244.1.122
- - cloud_properties:
- name: random
- range: 10.244.1.124/30
- reserved:
- - 10.244.1.125
- static:
- - 10.244.1.126
- - cloud_properties:
- name: random
- range: 10.244.1.128/30
- reserved:
- - 10.244.1.129
- static: []
- - cloud_properties:
- name: random
- range: 10.244.1.132/30
- reserved:
- - 10.244.1.133
- static: []
- - cloud_properties:
- name: random
- range: 10.244.1.136/30
- reserved:
- - 10.244.1.137
- static: []
- - cloud_properties:
- name: random
- range: 10.244.1.140/30
- reserved:
- - 10.244.1.141
- static: []
- - cloud_properties:
- name: random
- range: 10.244.1.144/30
- reserved:
- - 10.244.1.145
- static: []
- - cloud_properties:
- name: random
- range: 10.244.1.148/30
- reserved:
- - 10.244.1.149
- static: []
- - cloud_properties:
- name: random
- range: 10.244.1.152/30
- reserved:
- - 10.244.1.153
- static: []
- - cloud_properties:
- name: random
- range: 10.244.1.156/30
- reserved:
- - 10.244.1.157
- static: []
- - cloud_properties:
- name: random
- range: 10.244.1.160/30
- reserved:
- - 10.244.1.161
- static: []
- - cloud_properties:
- name: random
- range: 10.244.1.164/30
- reserved:
- - 10.244.1.165
- static: []
- - cloud_properties:
- name: random
- range: 10.244.1.168/30
- reserved:
- - 10.244.1.169
- static: []
- - cloud_properties:
- name: random
- range: 10.244.1.172/30
- reserved:
- - 10.244.1.173
- static: []
- - cloud_properties:
- name: random
- range: 10.244.1.176/30
- reserved:
- - 10.244.1.177
- static: []
- - cloud_properties:
- name: random
- range: 10.244.1.180/30
- reserved:
- - 10.244.1.181
- static: []
- - cloud_properties:
- name: random
- range: 10.244.1.184/30
- reserved:
- - 10.244.1.185
- static: []
- - cloud_properties:
- name: random
- range: 10.244.1.188/30
- reserved:
- - 10.244.1.189
- static: []
- - cloud_properties:
- name: random
- range: 10.244.1.192/30
- reserved:
- - 10.244.1.193
- static: []
- - cloud_properties:
- name: random
- range: 10.244.1.196/30
- reserved:
- - 10.244.1.197
- static: []
- - cloud_properties:
- name: random
- range: 10.244.1.200/30
- reserved:
- - 10.244.1.201
- static: []
- - cloud_properties:
- name: random
- range: 10.244.1.204/30
- reserved:
- - 10.244.1.205
- static: []
- - cloud_properties:
- name: random
- range: 10.244.1.208/30
- reserved:
- - 10.244.1.209
- static: []
- - cloud_properties:
- name: random
- range: 10.244.1.212/30
- reserved:
- - 10.244.1.213
- static: []
- - cloud_properties:
- name: random
- range: 10.244.1.216/30
- reserved:
- - 10.244.1.217
- static: []
- - cloud_properties:
- name: random
- range: 10.244.1.220/30
- reserved:
- - 10.244.1.221
- static: []
- - cloud_properties:
- name: random
- range: 10.244.1.224/30
- reserved:
- - 10.244.1.225
- static: []
- - cloud_properties:
- name: random
- range: 10.244.1.228/30
- reserved:
- - 10.244.1.229
- static: []
- - cloud_properties:
- name: random
- range: 10.244.1.232/30
- reserved:
- - 10.244.1.233
- static: []
- - cloud_properties:
- name: random
- range: 10.244.1.236/30
- reserved:
- - 10.244.1.237
- static: []
- - cloud_properties:
- name: random
- range: 10.244.1.240/30
- reserved:
- - 10.244.1.241
- static: []
- - cloud_properties:
- name: random
- range: 10.244.1.244/30
- reserved:
- - 10.244.1.245
- static: []
- - cloud_properties:
- name: random
- range: 10.244.1.248/30
- reserved:
- - 10.244.1.249
- static: []
- - cloud_properties:
- name: random
- range: 10.244.1.252/30
- reserved:
- - 10.244.1.253
- static: []
-- name: services2
- subnets:
- - cloud_properties:
- name: random
- range: 10.244.3.0/30
- reserved:
- - 10.244.3.1
- static:
- - 10.244.3.2
- - cloud_properties:
- name: random
- range: 10.244.3.4/30
- reserved:
- - 10.244.3.5
- static:
- - 10.244.3.6
- - cloud_properties:
- name: random
- range: 10.244.3.8/30
- reserved:
- - 10.244.3.9
- static:
- - 10.244.3.10
- - cloud_properties:
- name: random
- range: 10.244.3.12/30
- reserved:
- - 10.244.3.13
- static:
- - 10.244.3.14
- - cloud_properties:
- name: random
- range: 10.244.3.16/30
- reserved:
- - 10.244.3.17
- static:
- - 10.244.3.18
- - cloud_properties:
- name: random
- range: 10.244.3.20/30
- reserved:
- - 10.244.3.21
- static:
- - 10.244.3.22
- - cloud_properties:
- name: random
- range: 10.244.3.24/30
- reserved:
- - 10.244.3.25
- static:
- - 10.244.3.26
- - cloud_properties:
- name: random
- range: 10.244.3.28/30
- reserved:
- - 10.244.3.29
- static:
- - 10.244.3.30
- - cloud_properties:
- name: random
- range: 10.244.3.32/30
- reserved:
- - 10.244.3.33
- static:
- - 10.244.3.34
- - cloud_properties:
- name: random
- range: 10.244.3.36/30
- reserved:
- - 10.244.3.37
- static:
- - 10.244.3.38
- - cloud_properties:
- name: random
- range: 10.244.3.40/30
- reserved:
- - 10.244.3.41
- static:
- - 10.244.3.42
- - cloud_properties:
- name: random
- range: 10.244.3.44/30
- reserved:
- - 10.244.3.45
- static:
- - 10.244.3.46
- - cloud_properties:
- name: random
- range: 10.244.3.48/30
- reserved:
- - 10.244.3.49
- static:
- - 10.244.3.50
- - cloud_properties:
- name: random
- range: 10.244.3.52/30
- reserved:
- - 10.244.3.53
- static:
- - 10.244.3.54
- - cloud_properties:
- name: random
- range: 10.244.3.56/30
- reserved:
- - 10.244.3.57
- static:
- - 10.244.3.58
- - cloud_properties:
- name: random
- range: 10.244.3.60/30
- reserved:
- - 10.244.3.61
- static:
- - 10.244.3.62
- - cloud_properties:
- name: random
- range: 10.244.3.64/30
- reserved:
- - 10.244.3.65
- static:
- - 10.244.3.66
- - cloud_properties:
- name: random
- range: 10.244.3.68/30
- reserved:
- - 10.244.3.69
- static:
- - 10.244.3.70
- - cloud_properties:
- name: random
- range: 10.244.3.72/30
- reserved:
- - 10.244.3.73
- static:
- - 10.244.3.74
- - cloud_properties:
- name: random
- range: 10.244.3.76/30
- reserved:
- - 10.244.3.77
- static:
- - 10.244.3.78
- - cloud_properties:
- name: random
- range: 10.244.3.80/30
- reserved:
- - 10.244.3.81
- static:
- - 10.244.3.82
- - cloud_properties:
- name: random
- range: 10.244.3.84/30
- reserved:
- - 10.244.3.85
- static:
- - 10.244.3.86
- - cloud_properties:
- name: random
- range: 10.244.3.88/30
- reserved:
- - 10.244.3.89
- static:
- - 10.244.3.90
- - cloud_properties:
- name: random
- range: 10.244.3.92/30
- reserved:
- - 10.244.3.93
- static:
- - 10.244.3.94
- - cloud_properties:
- name: random
- range: 10.244.3.96/30
- reserved:
- - 10.244.3.97
- static:
- - 10.244.3.98
- - cloud_properties:
- name: random
- range: 10.244.3.100/30
- reserved:
- - 10.244.3.101
- static:
- - 10.244.3.102
- - cloud_properties:
- name: random
- range: 10.244.3.104/30
- reserved:
- - 10.244.3.105
- static:
- - 10.244.3.106
- - cloud_properties:
- name: random
- range: 10.244.3.108/30
- reserved:
- - 10.244.3.109
- static:
- - 10.244.3.110
- - cloud_properties:
- name: random
- range: 10.244.3.112/30
- reserved:
- - 10.244.3.113
- static:
- - 10.244.3.114
- - cloud_properties:
- name: random
- range: 10.244.3.116/30
- reserved:
- - 10.244.3.117
- static:
- - 10.244.3.118
- - cloud_properties:
- name: random
- range: 10.244.3.120/30
- reserved:
- - 10.244.3.121
- static:
- - 10.244.3.122
- - cloud_properties:
- name: random
- range: 10.244.3.124/30
- reserved:
- - 10.244.3.125
- static:
- - 10.244.3.126
- - cloud_properties:
- name: random
- range: 10.244.3.128/30
- reserved:
- - 10.244.3.129
- static: []
- - cloud_properties:
- name: random
- range: 10.244.3.132/30
- reserved:
- - 10.244.3.133
- static: []
- - cloud_properties:
- name: random
- range: 10.244.3.136/30
- reserved:
- - 10.244.3.137
- static: []
- - cloud_properties:
- name: random
- range: 10.244.3.140/30
- reserved:
- - 10.244.3.141
- static: []
- - cloud_properties:
- name: random
- range: 10.244.3.144/30
- reserved:
- - 10.244.3.145
- static: []
- - cloud_properties:
- name: random
- range: 10.244.3.148/30
- reserved:
- - 10.244.3.149
- static: []
- - cloud_properties:
- name: random
- range: 10.244.3.152/30
- reserved:
- - 10.244.3.153
- static: []
- - cloud_properties:
- name: random
- range: 10.244.3.156/30
- reserved:
- - 10.244.3.157
- static: []
- - cloud_properties:
- name: random
- range: 10.244.3.160/30
- reserved:
- - 10.244.3.161
- static: []
- - cloud_properties:
- name: random
- range: 10.244.3.164/30
- reserved:
- - 10.244.3.165
- static: []
- - cloud_properties:
- name: random
- range: 10.244.3.168/30
- reserved:
- - 10.244.3.169
- static: []
- - cloud_properties:
- name: random
- range: 10.244.3.172/30
- reserved:
- - 10.244.3.173
- static: []
- - cloud_properties:
- name: random
- range: 10.244.3.176/30
- reserved:
- - 10.244.3.177
- static: []
- - cloud_properties:
- name: random
- range: 10.244.3.180/30
- reserved:
- - 10.244.3.181
- static: []
- - cloud_properties:
- name: random
- range: 10.244.3.184/30
- reserved:
- - 10.244.3.185
- static: []
- - cloud_properties:
- name: random
- range: 10.244.3.188/30
- reserved:
- - 10.244.3.189
- static: []
- - cloud_properties:
- name: random
- range: 10.244.3.192/30
- reserved:
- - 10.244.3.193
- static: []
- - cloud_properties:
- name: random
- range: 10.244.3.196/30
- reserved:
- - 10.244.3.197
- static: []
- - cloud_properties:
- name: random
- range: 10.244.3.200/30
- reserved:
- - 10.244.3.201
- static: []
- - cloud_properties:
- name: random
- range: 10.244.3.204/30
- reserved:
- - 10.244.3.205
- static: []
- - cloud_properties:
- name: random
- range: 10.244.3.208/30
- reserved:
- - 10.244.3.209
- static: []
- - cloud_properties:
- name: random
- range: 10.244.3.212/30
- reserved:
- - 10.244.3.213
- static: []
- - cloud_properties:
- name: random
- range: 10.244.3.216/30
- reserved:
- - 10.244.3.217
- static: []
- - cloud_properties:
- name: random
- range: 10.244.3.220/30
- reserved:
- - 10.244.3.221
- static: []
- - cloud_properties:
- name: random
- range: 10.244.3.224/30
- reserved:
- - 10.244.3.225
- static: []
- - cloud_properties:
- name: random
- range: 10.244.3.228/30
- reserved:
- - 10.244.3.229
- static: []
- - cloud_properties:
- name: random
- range: 10.244.3.232/30
- reserved:
- - 10.244.3.233
- static: []
- - cloud_properties:
- name: random
- range: 10.244.3.236/30
- reserved:
- - 10.244.3.237
- static: []
- - cloud_properties:
- name: random
- range: 10.244.3.240/30
- reserved:
- - 10.244.3.241
- static: []
- - cloud_properties:
- name: random
- range: 10.244.3.244/30
- reserved:
- - 10.244.3.245
- static: []
- - cloud_properties:
- name: random
- range: 10.244.3.248/30
- reserved:
- - 10.244.3.249
- static: []
- - cloud_properties:
- name: random
- range: 10.244.3.252/30
- reserved:
- - 10.244.3.253
- static: []
-
-- name: mysql1
- subnets:
- - cloud_properties:
- name: random
- range: 10.244.7.0/30
- reserved:
- - 10.244.7.1
- static:
- - 10.244.7.2
- - cloud_properties:
- name: random
- range: 10.244.7.4/30
- reserved:
- - 10.244.7.5
- static:
- - 10.244.7.6
- - cloud_properties:
- name: random
- range: 10.244.7.8/30
- reserved:
- - 10.244.7.9
- static:
- - 10.244.7.10
- - cloud_properties:
- name: random
- range: 10.244.7.12/30
- reserved:
- - 10.244.7.13
- static:
- - 10.244.7.14
- - cloud_properties:
- name: random
- range: 10.244.7.16/30
- reserved:
- - 10.244.7.17
- static:
- - 10.244.7.18
- - cloud_properties:
- name: random
- range: 10.244.7.20/30
- reserved:
- - 10.244.7.21
- static:
- - 10.244.7.22
- - cloud_properties:
- name: random
- range: 10.244.7.24/30
- reserved:
- - 10.244.7.25
- static:
- - 10.244.7.26
- - cloud_properties:
- name: random
- range: 10.244.7.28/30
- reserved:
- - 10.244.7.29
- static:
- - 10.244.7.30
- - cloud_properties:
- name: random
- range: 10.244.7.32/30
- reserved:
- - 10.244.7.33
- static:
- - 10.244.7.34
- - cloud_properties:
- name: random
- range: 10.244.7.36/30
- reserved:
- - 10.244.7.37
- static:
- - 10.244.7.38
- - cloud_properties:
- name: random
- range: 10.244.7.40/30
- reserved:
- - 10.244.7.41
- static:
- - 10.244.7.42
- - cloud_properties:
- name: random
- range: 10.244.7.44/30
- reserved:
- - 10.244.7.45
- static:
- - 10.244.7.46
- - cloud_properties:
- name: random
- range: 10.244.7.48/30
- reserved:
- - 10.244.7.49
- static:
- - 10.244.7.50
- - cloud_properties:
- name: random
- range: 10.244.7.52/30
- reserved:
- - 10.244.7.53
- static:
- - 10.244.7.54
- - cloud_properties:
- name: random
- range: 10.244.7.56/30
- reserved:
- - 10.244.7.57
- static:
- - 10.244.7.58
- - cloud_properties:
- name: random
- range: 10.244.7.60/30
- reserved:
- - 10.244.7.61
- static:
- - 10.244.7.62
- - cloud_properties:
- name: random
- range: 10.244.7.64/30
- reserved:
- - 10.244.7.65
- static:
- - 10.244.7.66
- - cloud_properties:
- name: random
- range: 10.244.7.68/30
- reserved:
- - 10.244.7.69
- static:
- - 10.244.7.70
- - cloud_properties:
- name: random
- range: 10.244.7.72/30
- reserved:
- - 10.244.7.73
- static:
- - 10.244.7.74
- - cloud_properties:
- name: random
- range: 10.244.7.76/30
- reserved:
- - 10.244.7.77
- static:
- - 10.244.7.78
- - cloud_properties:
- name: random
- range: 10.244.7.80/30
- reserved:
- - 10.244.7.81
- static:
- - 10.244.7.82
- - cloud_properties:
- name: random
- range: 10.244.7.84/30
- reserved:
- - 10.244.7.85
- static:
- - 10.244.7.86
- - cloud_properties:
- name: random
- range: 10.244.7.88/30
- reserved:
- - 10.244.7.89
- static:
- - 10.244.7.90
- - cloud_properties:
- name: random
- range: 10.244.7.92/30
- reserved:
- - 10.244.7.93
- static:
- - 10.244.7.94
- - cloud_properties:
- name: random
- range: 10.244.7.96/30
- reserved:
- - 10.244.7.97
- static:
- - 10.244.7.98
- - cloud_properties:
- name: random
- range: 10.244.7.100/30
- reserved:
- - 10.244.7.101
- static:
- - 10.244.7.102
- - cloud_properties:
- name: random
- range: 10.244.7.104/30
- reserved:
- - 10.244.7.105
- static:
- - 10.244.7.106
- - cloud_properties:
- name: random
- range: 10.244.7.108/30
- reserved:
- - 10.244.7.109
- static:
- - 10.244.7.110
- - cloud_properties:
- name: random
- range: 10.244.7.112/30
- reserved:
- - 10.244.7.113
- static:
- - 10.244.7.114
- - cloud_properties:
- name: random
- range: 10.244.7.116/30
- reserved:
- - 10.244.7.117
- static:
- - 10.244.7.118
- - cloud_properties:
- name: random
- range: 10.244.7.120/30
- reserved:
- - 10.244.7.121
- static:
- - 10.244.7.122
- - cloud_properties:
- name: random
- range: 10.244.7.124/30
- reserved:
- - 10.244.7.125
- static:
- - 10.244.7.126
- - cloud_properties:
- name: random
- range: 10.244.7.128/30
- reserved:
- - 10.244.7.129
- static: []
- - cloud_properties:
- name: random
- range: 10.244.7.132/30
- reserved:
- - 10.244.7.133
- static: []
- - cloud_properties:
- name: random
- range: 10.244.7.136/30
- reserved:
- - 10.244.7.137
- static: []
- - cloud_properties:
- name: random
- range: 10.244.7.140/30
- reserved:
- - 10.244.7.141
- static: []
- - cloud_properties:
- name: random
- range: 10.244.7.144/30
- reserved:
- - 10.244.7.145
- static: []
- - cloud_properties:
- name: random
- range: 10.244.7.148/30
- reserved:
- - 10.244.7.149
- static: []
- - cloud_properties:
- name: random
- range: 10.244.7.152/30
- reserved:
- - 10.244.7.153
- static: []
- - cloud_properties:
- name: random
- range: 10.244.7.156/30
- reserved:
- - 10.244.7.157
- static: []
- - cloud_properties:
- name: random
- range: 10.244.7.160/30
- reserved:
- - 10.244.7.161
- static: []
- - cloud_properties:
- name: random
- range: 10.244.7.164/30
- reserved:
- - 10.244.7.165
- static: []
- - cloud_properties:
- name: random
- range: 10.244.7.168/30
- reserved:
- - 10.244.7.169
- static: []
- - cloud_properties:
- name: random
- range: 10.244.7.172/30
- reserved:
- - 10.244.7.173
- static: []
- - cloud_properties:
- name: random
- range: 10.244.7.176/30
- reserved:
- - 10.244.7.177
- static: []
- - cloud_properties:
- name: random
- range: 10.244.7.180/30
- reserved:
- - 10.244.7.181
- static: []
- - cloud_properties:
- name: random
- range: 10.244.7.184/30
- reserved:
- - 10.244.7.185
- static: []
- - cloud_properties:
- name: random
- range: 10.244.7.188/30
- reserved:
- - 10.244.7.189
- static: []
- - cloud_properties:
- name: random
- range: 10.244.7.192/30
- reserved:
- - 10.244.7.193
- static: []
- - cloud_properties:
- name: random
- range: 10.244.7.196/30
- reserved:
- - 10.244.7.197
- static: []
- - cloud_properties:
- name: random
- range: 10.244.7.200/30
- reserved:
- - 10.244.7.201
- static: []
- - cloud_properties:
- name: random
- range: 10.244.7.204/30
- reserved:
- - 10.244.7.205
- static: []
- - cloud_properties:
- name: random
- range: 10.244.7.208/30
- reserved:
- - 10.244.7.209
- static: []
- - cloud_properties:
- name: random
- range: 10.244.7.212/30
- reserved:
- - 10.244.7.213
- static: []
- - cloud_properties:
- name: random
- range: 10.244.7.216/30
- reserved:
- - 10.244.7.217
- static: []
- - cloud_properties:
- name: random
- range: 10.244.7.220/30
- reserved:
- - 10.244.7.221
- static: []
- - cloud_properties:
- name: random
- range: 10.244.7.224/30
- reserved:
- - 10.244.7.225
- static: []
- - cloud_properties:
- name: random
- range: 10.244.7.228/30
- reserved:
- - 10.244.7.229
- static: []
- - cloud_properties:
- name: random
- range: 10.244.7.232/30
- reserved:
- - 10.244.7.233
- static: []
- - cloud_properties:
- name: random
- range: 10.244.7.236/30
- reserved:
- - 10.244.7.237
- static: []
- - cloud_properties:
- name: random
- range: 10.244.7.240/30
- reserved:
- - 10.244.7.241
- static: []
- - cloud_properties:
- name: random
- range: 10.244.7.244/30
- reserved:
- - 10.244.7.245
- static: []
- - cloud_properties:
- name: random
- range: 10.244.7.248/30
- reserved:
- - 10.244.7.249
- static: []
- - cloud_properties:
- name: random
- range: 10.244.7.252/30
- reserved:
- - 10.244.7.253
- static: []
-
-- name: mysql2
- subnets:
- - cloud_properties:
- name: random
- range: 10.244.8.0/30
- reserved:
- - 10.244.8.1
- static:
- - 10.244.8.2
- - cloud_properties:
- name: random
- range: 10.244.8.4/30
- reserved:
- - 10.244.8.5
- static:
- - 10.244.8.6
- - cloud_properties:
- name: random
- range: 10.244.8.8/30
- reserved:
- - 10.244.8.9
- static:
- - 10.244.8.10
- - cloud_properties:
- name: random
- range: 10.244.8.12/30
- reserved:
- - 10.244.8.13
- static:
- - 10.244.8.14
- - cloud_properties:
- name: random
- range: 10.244.8.16/30
- reserved:
- - 10.244.8.17
- static:
- - 10.244.8.18
- - cloud_properties:
- name: random
- range: 10.244.8.20/30
- reserved:
- - 10.244.8.21
- static:
- - 10.244.8.22
- - cloud_properties:
- name: random
- range: 10.244.8.24/30
- reserved:
- - 10.244.8.25
- static:
- - 10.244.8.26
- - cloud_properties:
- name: random
- range: 10.244.8.28/30
- reserved:
- - 10.244.8.29
- static:
- - 10.244.8.30
- - cloud_properties:
- name: random
- range: 10.244.8.32/30
- reserved:
- - 10.244.8.33
- static:
- - 10.244.8.34
- - cloud_properties:
- name: random
- range: 10.244.8.36/30
- reserved:
- - 10.244.8.37
- static:
- - 10.244.8.38
- - cloud_properties:
- name: random
- range: 10.244.8.40/30
- reserved:
- - 10.244.8.41
- static:
- - 10.244.8.42
- - cloud_properties:
- name: random
- range: 10.244.8.44/30
- reserved:
- - 10.244.8.45
- static:
- - 10.244.8.46
- - cloud_properties:
- name: random
- range: 10.244.8.48/30
- reserved:
- - 10.244.8.49
- static:
- - 10.244.8.50
- - cloud_properties:
- name: random
- range: 10.244.8.52/30
- reserved:
- - 10.244.8.53
- static:
- - 10.244.8.54
- - cloud_properties:
- name: random
- range: 10.244.8.56/30
- reserved:
- - 10.244.8.57
- static:
- - 10.244.8.58
- - cloud_properties:
- name: random
- range: 10.244.8.60/30
- reserved:
- - 10.244.8.61
- static:
- - 10.244.8.62
- - cloud_properties:
- name: random
- range: 10.244.8.64/30
- reserved:
- - 10.244.8.65
- static:
- - 10.244.8.66
- - cloud_properties:
- name: random
- range: 10.244.8.68/30
- reserved:
- - 10.244.8.69
- static:
- - 10.244.8.70
- - cloud_properties:
- name: random
- range: 10.244.8.72/30
- reserved:
- - 10.244.8.73
- static:
- - 10.244.8.74
- - cloud_properties:
- name: random
- range: 10.244.8.76/30
- reserved:
- - 10.244.8.77
- static:
- - 10.244.8.78
- - cloud_properties:
- name: random
- range: 10.244.8.80/30
- reserved:
- - 10.244.8.81
- static:
- - 10.244.8.82
- - cloud_properties:
- name: random
- range: 10.244.8.84/30
- reserved:
- - 10.244.8.85
- static:
- - 10.244.8.86
- - cloud_properties:
- name: random
- range: 10.244.8.88/30
- reserved:
- - 10.244.8.89
- static:
- - 10.244.8.90
- - cloud_properties:
- name: random
- range: 10.244.8.92/30
- reserved:
- - 10.244.8.93
- static:
- - 10.244.8.94
- - cloud_properties:
- name: random
- range: 10.244.8.96/30
- reserved:
- - 10.244.8.97
- static:
- - 10.244.8.98
- - cloud_properties:
- name: random
- range: 10.244.8.100/30
- reserved:
- - 10.244.8.101
- static:
- - 10.244.8.102
- - cloud_properties:
- name: random
- range: 10.244.8.104/30
- reserved:
- - 10.244.8.105
- static:
- - 10.244.8.106
- - cloud_properties:
- name: random
- range: 10.244.8.108/30
- reserved:
- - 10.244.8.109
- static:
- - 10.244.8.110
- - cloud_properties:
- name: random
- range: 10.244.8.112/30
- reserved:
- - 10.244.8.113
- static:
- - 10.244.8.114
- - cloud_properties:
- name: random
- range: 10.244.8.116/30
- reserved:
- - 10.244.8.117
- static:
- - 10.244.8.118
- - cloud_properties:
- name: random
- range: 10.244.8.120/30
- reserved:
- - 10.244.8.121
- static:
- - 10.244.8.122
- - cloud_properties:
- name: random
- range: 10.244.8.124/30
- reserved:
- - 10.244.8.125
- static:
- - 10.244.8.126
- - cloud_properties:
- name: random
- range: 10.244.8.128/30
- reserved:
- - 10.244.8.129
- static: []
- - cloud_properties:
- name: random
- range: 10.244.8.132/30
- reserved:
- - 10.244.8.133
- static: []
- - cloud_properties:
- name: random
- range: 10.244.8.136/30
- reserved:
- - 10.244.8.137
- static: []
- - cloud_properties:
- name: random
- range: 10.244.8.140/30
- reserved:
- - 10.244.8.141
- static: []
- - cloud_properties:
- name: random
- range: 10.244.8.144/30
- reserved:
- - 10.244.8.145
- static: []
- - cloud_properties:
- name: random
- range: 10.244.8.148/30
- reserved:
- - 10.244.8.149
- static: []
- - cloud_properties:
- name: random
- range: 10.244.8.152/30
- reserved:
- - 10.244.8.153
- static: []
- - cloud_properties:
- name: random
- range: 10.244.8.156/30
- reserved:
- - 10.244.8.157
- static: []
- - cloud_properties:
- name: random
- range: 10.244.8.160/30
- reserved:
- - 10.244.8.161
- static: []
- - cloud_properties:
- name: random
- range: 10.244.8.164/30
- reserved:
- - 10.244.8.165
- static: []
- - cloud_properties:
- name: random
- range: 10.244.8.168/30
- reserved:
- - 10.244.8.169
- static: []
- - cloud_properties:
- name: random
- range: 10.244.8.172/30
- reserved:
- - 10.244.8.173
- static: []
- - cloud_properties:
- name: random
- range: 10.244.8.176/30
- reserved:
- - 10.244.8.177
- static: []
- - cloud_properties:
- name: random
- range: 10.244.8.180/30
- reserved:
- - 10.244.8.181
- static: []
- - cloud_properties:
- name: random
- range: 10.244.8.184/30
- reserved:
- - 10.244.8.185
- static: []
- - cloud_properties:
- name: random
- range: 10.244.8.188/30
- reserved:
- - 10.244.8.189
- static: []
- - cloud_properties:
- name: random
- range: 10.244.8.192/30
- reserved:
- - 10.244.8.193
- static: []
- - cloud_properties:
- name: random
- range: 10.244.8.196/30
- reserved:
- - 10.244.8.197
- static: []
- - cloud_properties:
- name: random
- range: 10.244.8.200/30
- reserved:
- - 10.244.8.201
- static: []
- - cloud_properties:
- name: random
- range: 10.244.8.204/30
- reserved:
- - 10.244.8.205
- static: []
- - cloud_properties:
- name: random
- range: 10.244.8.208/30
- reserved:
- - 10.244.8.209
- static: []
- - cloud_properties:
- name: random
- range: 10.244.8.212/30
- reserved:
- - 10.244.8.213
- static: []
- - cloud_properties:
- name: random
- range: 10.244.8.216/30
- reserved:
- - 10.244.8.217
- static: []
- - cloud_properties:
- name: random
- range: 10.244.8.220/30
- reserved:
- - 10.244.8.221
- static: []
- - cloud_properties:
- name: random
- range: 10.244.8.224/30
- reserved:
- - 10.244.8.225
- static: []
- - cloud_properties:
- name: random
- range: 10.244.8.228/30
- reserved:
- - 10.244.8.229
- static: []
- - cloud_properties:
- name: random
- range: 10.244.8.232/30
- reserved:
- - 10.244.8.233
- static: []
- - cloud_properties:
- name: random
- range: 10.244.8.236/30
- reserved:
- - 10.244.8.237
- static: []
- - cloud_properties:
- name: random
- range: 10.244.8.240/30
- reserved:
- - 10.244.8.241
- static: []
- - cloud_properties:
- name: random
- range: 10.244.8.244/30
- reserved:
- - 10.244.8.245
- static: []
- - cloud_properties:
- name: random
- range: 10.244.8.248/30
- reserved:
- - 10.244.8.249
- static: []
- - cloud_properties:
- name: random
- range: 10.244.8.252/30
- reserved:
- - 10.244.8.253
- static: []
-
-- name: mysql3
- subnets:
- - cloud_properties:
- name: random
- range: 10.244.9.0/30
- reserved:
- - 10.244.9.1
- static:
- - 10.244.9.2
- - cloud_properties:
- name: random
- range: 10.244.9.4/30
- reserved:
- - 10.244.9.5
- static:
- - 10.244.9.6
- - cloud_properties:
- name: random
- range: 10.244.9.8/30
- reserved:
- - 10.244.9.9
- static:
- - 10.244.9.10
- - cloud_properties:
- name: random
- range: 10.244.9.12/30
- reserved:
- - 10.244.9.13
- static:
- - 10.244.9.14
- - cloud_properties:
- name: random
- range: 10.244.9.16/30
- reserved:
- - 10.244.9.17
- static:
- - 10.244.9.18
- - cloud_properties:
- name: random
- range: 10.244.9.20/30
- reserved:
- - 10.244.9.21
- static:
- - 10.244.9.22
- - cloud_properties:
- name: random
- range: 10.244.9.24/30
- reserved:
- - 10.244.9.25
- static:
- - 10.244.9.26
- - cloud_properties:
- name: random
- range: 10.244.9.28/30
- reserved:
- - 10.244.9.29
- static:
- - 10.244.9.30
- - cloud_properties:
- name: random
- range: 10.244.9.32/30
- reserved:
- - 10.244.9.33
- static:
- - 10.244.9.34
- - cloud_properties:
- name: random
- range: 10.244.9.36/30
- reserved:
- - 10.244.9.37
- static:
- - 10.244.9.38
- - cloud_properties:
- name: random
- range: 10.244.9.40/30
- reserved:
- - 10.244.9.41
- static:
- - 10.244.9.42
- - cloud_properties:
- name: random
- range: 10.244.9.44/30
- reserved:
- - 10.244.9.45
- static:
- - 10.244.9.46
- - cloud_properties:
- name: random
- range: 10.244.9.48/30
- reserved:
- - 10.244.9.49
- static:
- - 10.244.9.50
- - cloud_properties:
- name: random
- range: 10.244.9.52/30
- reserved:
- - 10.244.9.53
- static:
- - 10.244.9.54
- - cloud_properties:
- name: random
- range: 10.244.9.56/30
- reserved:
- - 10.244.9.57
- static:
- - 10.244.9.58
- - cloud_properties:
- name: random
- range: 10.244.9.60/30
- reserved:
- - 10.244.9.61
- static:
- - 10.244.9.62
- - cloud_properties:
- name: random
- range: 10.244.9.64/30
- reserved:
- - 10.244.9.65
- static:
- - 10.244.9.66
- - cloud_properties:
- name: random
- range: 10.244.9.68/30
- reserved:
- - 10.244.9.69
- static:
- - 10.244.9.70
- - cloud_properties:
- name: random
- range: 10.244.9.72/30
- reserved:
- - 10.244.9.73
- static:
- - 10.244.9.74
- - cloud_properties:
- name: random
- range: 10.244.9.76/30
- reserved:
- - 10.244.9.77
- static:
- - 10.244.9.78
- - cloud_properties:
- name: random
- range: 10.244.9.80/30
- reserved:
- - 10.244.9.81
- static:
- - 10.244.9.82
- - cloud_properties:
- name: random
- range: 10.244.9.84/30
- reserved:
- - 10.244.9.85
- static:
- - 10.244.9.86
- - cloud_properties:
- name: random
- range: 10.244.9.88/30
- reserved:
- - 10.244.9.89
- static:
- - 10.244.9.90
- - cloud_properties:
- name: random
- range: 10.244.9.92/30
- reserved:
- - 10.244.9.93
- static:
- - 10.244.9.94
- - cloud_properties:
- name: random
- range: 10.244.9.96/30
- reserved:
- - 10.244.9.97
- static:
- - 10.244.9.98
- - cloud_properties:
- name: random
- range: 10.244.9.100/30
- reserved:
- - 10.244.9.101
- static:
- - 10.244.9.102
- - cloud_properties:
- name: random
- range: 10.244.9.104/30
- reserved:
- - 10.244.9.105
- static:
- - 10.244.9.106
- - cloud_properties:
- name: random
- range: 10.244.9.108/30
- reserved:
- - 10.244.9.109
- static:
- - 10.244.9.110
- - cloud_properties:
- name: random
- range: 10.244.9.112/30
- reserved:
- - 10.244.9.113
- static:
- - 10.244.9.114
- - cloud_properties:
- name: random
- range: 10.244.9.116/30
- reserved:
- - 10.244.9.117
- static:
- - 10.244.9.118
- - cloud_properties:
- name: random
- range: 10.244.9.120/30
- reserved:
- - 10.244.9.121
- static:
- - 10.244.9.122
- - cloud_properties:
- name: random
- range: 10.244.9.124/30
- reserved:
- - 10.244.9.125
- static:
- - 10.244.9.126
- - cloud_properties:
- name: random
- range: 10.244.9.128/30
- reserved:
- - 10.244.9.129
- static: []
- - cloud_properties:
- name: random
- range: 10.244.9.132/30
- reserved:
- - 10.244.9.133
- static: []
- - cloud_properties:
- name: random
- range: 10.244.9.136/30
- reserved:
- - 10.244.9.137
- static: []
- - cloud_properties:
- name: random
- range: 10.244.9.140/30
- reserved:
- - 10.244.9.141
- static: []
- - cloud_properties:
- name: random
- range: 10.244.9.144/30
- reserved:
- - 10.244.9.145
- static: []
- - cloud_properties:
- name: random
- range: 10.244.9.148/30
- reserved:
- - 10.244.9.149
- static: []
- - cloud_properties:
- name: random
- range: 10.244.9.152/30
- reserved:
- - 10.244.9.153
- static: []
- - cloud_properties:
- name: random
- range: 10.244.9.156/30
- reserved:
- - 10.244.9.157
- static: []
- - cloud_properties:
- name: random
- range: 10.244.9.160/30
- reserved:
- - 10.244.9.161
- static: []
- - cloud_properties:
- name: random
- range: 10.244.9.164/30
- reserved:
- - 10.244.9.165
- static: []
- - cloud_properties:
- name: random
- range: 10.244.9.168/30
- reserved:
- - 10.244.9.169
- static: []
- - cloud_properties:
- name: random
- range: 10.244.9.172/30
- reserved:
- - 10.244.9.173
- static: []
- - cloud_properties:
- name: random
- range: 10.244.9.176/30
- reserved:
- - 10.244.9.177
- static: []
- - cloud_properties:
- name: random
- range: 10.244.9.180/30
- reserved:
- - 10.244.9.181
- static: []
- - cloud_properties:
- name: random
- range: 10.244.9.184/30
- reserved:
- - 10.244.9.185
- static: []
- - cloud_properties:
- name: random
- range: 10.244.9.188/30
- reserved:
- - 10.244.9.189
- static: []
- - cloud_properties:
- name: random
- range: 10.244.9.192/30
- reserved:
- - 10.244.9.193
- static: []
- - cloud_properties:
- name: random
- range: 10.244.9.196/30
- reserved:
- - 10.244.9.197
- static: []
- - cloud_properties:
- name: random
- range: 10.244.9.200/30
- reserved:
- - 10.244.9.201
- static: []
- - cloud_properties:
- name: random
- range: 10.244.9.204/30
- reserved:
- - 10.244.9.205
- static: []
- - cloud_properties:
- name: random
- range: 10.244.9.208/30
- reserved:
- - 10.244.9.209
- static: []
- - cloud_properties:
- name: random
- range: 10.244.9.212/30
- reserved:
- - 10.244.9.213
- static: []
- - cloud_properties:
- name: random
- range: 10.244.9.216/30
- reserved:
- - 10.244.9.217
- static: []
- - cloud_properties:
- name: random
- range: 10.244.9.220/30
- reserved:
- - 10.244.9.221
- static: []
- - cloud_properties:
- name: random
- range: 10.244.9.224/30
- reserved:
- - 10.244.9.225
- static: []
- - cloud_properties:
- name: random
- range: 10.244.9.228/30
- reserved:
- - 10.244.9.229
- static: []
- - cloud_properties:
- name: random
- range: 10.244.9.232/30
- reserved:
- - 10.244.9.233
- static: []
- - cloud_properties:
- name: random
- range: 10.244.9.236/30
- reserved:
- - 10.244.9.237
- static: []
- - cloud_properties:
- name: random
- range: 10.244.9.240/30
- reserved:
- - 10.244.9.241
- static: []
- - cloud_properties:
- name: random
- range: 10.244.9.244/30
- reserved:
- - 10.244.9.245
- static: []
- - cloud_properties:
- name: random
- range: 10.244.9.248/30
- reserved:
- - 10.244.9.249
- static: []
- - cloud_properties:
- name: random
- range: 10.244.9.252/30
- reserved:
- - 10.244.9.253
- static: []
-
diff --git a/templates/cf-mysql-template.yml b/templates/cf-mysql-template.yml
deleted file mode 100644
index 9bc6a044..00000000
--- a/templates/cf-mysql-template.yml
+++ /dev/null
@@ -1,368 +0,0 @@
----
-meta:
- # override this in your stub to set the environment name,
- # which is used as a prefix for the deployment name
- #
- # e.g. `environment: cf-tabasco` makes a deployment named cf-tabasco-mysql
- environment: ~
-
- syslog_aggregator: ~
-
-properties:
- app_domains: (( merge ))
- domain: (( merge ))
- nats:
- user: (( merge ))
- password: (( merge ))
- port: (( merge ))
- machines: (( merge ))
- cf:
- api_url: (( "https://api." .properties.domain ))
- admin_username: (( merge ))
- admin_password: (( merge ))
- apps_domain: (( .properties.app_domains.[0] ))
- skip_ssl_validation: (( merge || nil ))
- standalone: (( merge || false ))
- default_mysql_cluster_ips:
- - (( jobs.mysql_z1.networks.mysql1.static_ips.[0] || nil ))
- - (( jobs.mysql_z2.networks.mysql2.static_ips.[0] || nil ))
- - (( jobs.mysql_z3.networks.mysql3.static_ips.[0] || nil ))
- default_proxy_ips:
- - (( jobs.proxy_z1.networks.mysql1.static_ips.[0] || nil ))
- - (( jobs.proxy_z2.networks.mysql2.static_ips.[0] || nil ))
- temp:
- # spiff does not allow concating multiple fields of different types
- # without adding new temporary properties
- database_startup_timeout_str: (( "" jobs.mysql_z1.properties.database_startup_timeout ))
- canary_end_in_sec: (( .properties.temp.database_startup_timeout_str "000" ))
-
-name: (( meta.environment "-mysql" ))
-director_uuid: (( merge ))
-
-releases:
-- name: cf-mysql
- version: (( merge || "latest" ))
-
-compilation:
- workers: 4
- network: compilation
- reuse_compilation_vms: true
- cloud_properties: (( merge ))
-
-update:
- canaries: 1
- canary_watch_time: (( "30000-" .properties.temp.canary_end_in_sec ))
- update_watch_time: (( "30000-" .properties.temp.canary_end_in_sec ))
- max_in_flight: 1
- serial: true
-
-networks: (( merge ))
-
-resource_pools:
-- name: mysql_z1
- network: mysql1
- stemcell: (( merge ))
- cloud_properties: (( merge ))
-- name: mysql_z2
- network: mysql2
- stemcell: (( merge ))
- cloud_properties: (( merge ))
-- name: mysql_z3
- network: mysql3
- stemcell: (( merge ))
- cloud_properties: (( merge ))
-- name: proxy_z1
- network: mysql1
- stemcell: (( merge || resource_pools.mysql_z1.stemcell ))
- cloud_properties: (( merge || resource_pools.mysql_z1.cloud_properties ))
-- name: proxy_z2
- network: mysql2
- stemcell: (( merge || resource_pools.mysql_z2.stemcell ))
- cloud_properties: (( merge || resource_pools.mysql_z2.cloud_properties ))
-- name: cf-mysql-broker_z1
- network: mysql1
- stemcell: (( merge || resource_pools.mysql_z1.stemcell ))
- cloud_properties: (( merge || resource_pools.mysql_z1.cloud_properties ))
-- name: cf-mysql-broker_z2
- network: mysql2
- stemcell: (( merge || resource_pools.mysql_z2.stemcell ))
- cloud_properties: (( merge || resource_pools.mysql_z2.cloud_properties ))
-- name: errands_z1
- network: mysql1
- stemcell: (( merge || resource_pools.mysql_z1.stemcell ))
- cloud_properties: (( merge || resource_pools.mysql_z1.cloud_properties ))
-
-disk_pools:
-- name: mysql-persistent-disk
- disk_size: (( merge || 100000 ))
- cloud_properties:
- <<: (( merge || nil ))
-
-jobs:
-- name: mysql_z1
- release: cf-mysql
- template: mysql
- instances: (( merge || 1 ))
- resource_pool: mysql_z1
- persistent_disk_pool: (( disk_pools.[0].name ))
- networks:
- - name: mysql1
- static_ips: (( static_ips(0) ))
- properties:
- <<: (( merge || nil ))
- admin_password: (( merge ))
- cluster_ips: (( merge || .properties.default_mysql_cluster_ips ))
- seeded_databases: ~
- database_startup_timeout: (( merge || 600 ))
- max_heap_table_size: (( merge || nil ))
- tmp_table_size: (( merge || nil ))
- wsrep_max_ws_rows: (( merge || nil ))
- wsrep_max_ws_size: (( merge || nil ))
- syslog_aggregator: (( meta.syslog_aggregator ))
- network_name: mysql1
- skip_name_resolve: (( merge || nil ))
- bootstrap_endpoint:
- username: (( merge ))
- password: (( merge ))
-
-- name: mysql_z2
- release: cf-mysql
- template: mysql
- instances: (( merge || 1 ))
- resource_pool: mysql_z2
- persistent_disk_pool: (( disk_pools.[0].name ))
- networks:
- - name: mysql2
- static_ips: (( merge || static_ips(0) ))
- properties:
- <<: (( merge || nil ))
- admin_password: (( jobs.mysql_z1.properties.admin_password ))
- cluster_ips: (( jobs.mysql_z1.properties.cluster_ips ))
- seeded_databases: ~
- database_startup_timeout: (( jobs.mysql_z1.properties.database_startup_timeout ))
- max_heap_table_size: (( jobs.mysql_z1.properties.max_heap_table_size ))
- tmp_table_size: (( jobs.mysql_z1.properties.tmp_table_size ))
- wsrep_max_ws_rows: (( jobs.mysql_z1.properties.wsrep_max_ws_rows ))
- wsrep_max_ws_size: (( jobs.mysql_z1.properties.wsrep_max_ws_size ))
- syslog_aggregator: (( meta.syslog_aggregator ))
- network_name: mysql2
- skip_name_resolve: (( jobs.mysql_z1.properties.skip_name_resolve ))
- bootstrap_endpoint: (( jobs.mysql_z1.properties.bootstrap_endpoint ))
-
-- name: mysql_z3
- release: cf-mysql
- template: mysql
- instances: (( merge || 1 ))
- resource_pool: mysql_z3
- persistent_disk_pool: (( disk_pools.[0].name ))
- networks:
- - name: mysql3
- static_ips: (( merge || static_ips(0) ))
- properties:
- <<: (( merge || nil ))
- admin_password: (( jobs.mysql_z1.properties.admin_password ))
- cluster_ips: (( jobs.mysql_z1.properties.cluster_ips ))
- seeded_databases: ~
- database_startup_timeout: (( jobs.mysql_z1.properties.database_startup_timeout ))
- max_heap_table_size: (( jobs.mysql_z1.properties.max_heap_table_size ))
- tmp_table_size: (( jobs.mysql_z1.properties.tmp_table_size ))
- wsrep_max_ws_rows: (( jobs.mysql_z1.properties.wsrep_max_ws_rows ))
- wsrep_max_ws_size: (( jobs.mysql_z1.properties.wsrep_max_ws_size ))
- syslog_aggregator: (( meta.syslog_aggregator ))
- network_name: mysql3
- skip_name_resolve: (( jobs.mysql_z1.properties.skip_name_resolve ))
- bootstrap_endpoint: (( jobs.mysql_z1.properties.bootstrap_endpoint ))
-
-- name: proxy_z1
- release: cf-mysql
- template: proxy
- instances: (( merge || 1 ))
- resource_pool: proxy_z1
- networks:
- - name: mysql1
- static_ips: (( merge || static_ips(1) ))
- properties:
- <<: (( merge || nil ))
- proxy:
- <<: (( merge || nil ))
- health_port: (( merge || nil ))
- api_force_https: (( merge || nil ))
- api_username: (( merge ))
- api_password: (( merge ))
- proxy_ips: (( merge || .properties.default_proxy_ips ))
- cluster_ips: (( jobs.mysql_z1.properties.cluster_ips ))
- network_name: mysql1
- external_host: (( "p-mysql." .properties.domain ))
- nats: (( .properties.nats ))
- syslog_aggregator: (( meta.syslog_aggregator ))
- standalone: (( .properties.standalone ))
-
-- name: proxy_z2
- release: cf-mysql
- template: proxy
- instances: (( merge || 1 ))
- resource_pool: proxy_z2
- networks:
- - name: mysql2
- static_ips: (( merge || static_ips(1) ))
- properties:
- <<: (( merge || nil ))
- proxy:
- <<: (( merge || nil ))
- health_port: (( jobs.proxy_z1.properties.proxy.health_port ))
- api_force_https: (( jobs.proxy_z1.properties.proxy.api_force_https ))
- api_username: (( jobs.proxy_z1.properties.proxy.api_username ))
- api_password: (( jobs.proxy_z1.properties.proxy.api_password ))
- proxy_ips: (( jobs.proxy_z1.properties.proxy.proxy_ips ))
- cluster_ips: (( jobs.mysql_z1.properties.cluster_ips ))
- network_name: mysql2
- external_host: (( "p-mysql." .properties.domain ))
- nats: (( .properties.nats ))
- syslog_aggregator: (( meta.syslog_aggregator ))
- standalone: (( .properties.standalone ))
-
-- name: cf-mysql-broker_z1
- release: cf-mysql
- template: cf-mysql-broker
- instances: (( merge || 1 ))
- resource_pool: cf-mysql-broker_z1
- networks:
- - name: mysql1
- properties:
- <<: (( merge || nil ))
- max_user_connections_default: (( merge || 40 ))
- syslog_aggregator: (( meta.syslog_aggregator ))
- network_name: mysql1
- ssl_enabled: (( merge || nil ))
- skip_ssl_validation: (( .properties.cf.skip_ssl_validation ))
- auth_username: (( merge ))
- auth_password: (( merge ))
- cookie_secret: (( merge ))
- external_host: (( merge || "p-mysql." .properties.domain ))
- cc_api_uri: (( .properties.cf.api_url ))
- nats: (( .properties.nats ))
- networks:
- broker_network: mysql1
- services:
- - name: p-mysql
- plan_updateable: (( merge || true ))
- id: 44b26033-1f54-4087-b7bc-da9652c2a539
- description: MySQL databases on demand
- tags:
- - mysql
- metadata:
- displayName: "MySQL for Pivotal Cloud Foundry"
- imageUrl: "data:image/png;base64,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"
- longDescription: "Creating a service instance provisions a database. Binding applications provisions unique credentials for each application to access the database."
- providerDisplayName: "Pivotal Software"
- documentationUrl: "https://github.com/cloudfoundry/cf-mysql-release/blob/master/README.md"
- supportUrl: "https://support.pivotal.io"
- dashboard_client:
- id: p-mysql
- secret: (( merge ))
- plans: (( merge ))
- mysql_node:
- host: (( merge || jobs.proxy_z1.networks.mysql1.static_ips.[0] ))
- admin_password: (( jobs.mysql_z1.properties.admin_password ))
- persistent_disk: (( disk_pools.[0].disk_size ))
-
-- name: cf-mysql-broker_z2
- release: cf-mysql
- template: cf-mysql-broker
- instances: (( merge || 1 ))
- resource_pool: cf-mysql-broker_z2
- networks:
- - name: mysql2
- properties:
- <<: (( merge || nil ))
- max_user_connections_default: (( merge || 40 ))
- syslog_aggregator: (( meta.syslog_aggregator ))
- network_name: mysql2
- auth_username: (( jobs.cf-mysql-broker_z1.properties.auth_username ))
- auth_password: (( jobs.cf-mysql-broker_z1.properties.auth_password ))
- cookie_secret: (( jobs.cf-mysql-broker_z1.properties.cookie_secret ))
- ssl_enabled: (( jobs.cf-mysql-broker_z1.properties.ssl_enabled || nil ))
- skip_ssl_validation: (( jobs.cf-mysql-broker_z1.properties.skip_ssl_validation ))
- external_host: (( "p-mysql." .properties.domain ))
- cc_api_uri: (( jobs.cf-mysql-broker_z1.properties.cc_api_uri ))
- nats: (( .properties.nats ))
- networks:
- broker_network: mysql2
- services: (( jobs.cf-mysql-broker_z1.properties.services ))
- mysql_node: (( jobs.cf-mysql-broker_z1.properties.mysql_node ))
-
-- name: broker-registrar
- template: broker-registrar
- release: cf-mysql
- instances: 1
- resource_pool: errands_z1
- lifecycle: errand
- networks:
- - name: mysql1
- properties:
- cf: (( .properties.cf ))
- broker:
- name: p-mysql
- host: (( jobs.cf-mysql-broker_z1.properties.external_host ))
- username: (( jobs.cf-mysql-broker_z1.properties.auth_username ))
- password: (( jobs.cf-mysql-broker_z1.properties.auth_password ))
- services: (( jobs.cf-mysql-broker_z1.properties.services ))
-
-- name: broker-deregistrar
- template: broker-deregistrar
- release: cf-mysql
- instances: 1
- resource_pool: errands_z1
- lifecycle: errand
- networks:
- - name: mysql1
- properties:
- cf: (( .properties.cf ))
- broker:
- name: p-mysql
-
-- name: acceptance-tests
- template: acceptance-tests
- release: cf-mysql
- instances: 1
- resource_pool: errands_z1
- lifecycle: errand
- networks:
- - name: mysql1
- properties:
- <<: (( merge || nil ))
- smoke_tests_only: (( merge || nil ))
- standalone_tests_only: (( .properties.standalone ))
- proxy:
- external_host: (( jobs.proxy_z1.properties.external_host ))
- proxy_count: (( merge || 2 ))
- api_username: (( jobs.proxy_z1.properties.proxy.api_username ))
- api_password: (( jobs.proxy_z1.properties.proxy.api_password ))
- api_force_https: (( jobs.proxy_z1.properties.proxy.api_force_https ))
- skip_ssl_validation: (( merge || nil ))
- cf: (( .properties.cf ))
- broker:
- host: (( jobs.cf-mysql-broker_z1.properties.external_host ))
- service:
- max_user_connections_default: (( jobs.cf-mysql-broker_z1.properties.max_user_connections_default ))
- name: (( jobs.cf-mysql-broker_z1.properties.services.[0].name ))
- plans: (( jobs.cf-mysql-broker_z1.properties.services.[0].plans ))
- standalone:
- host: (( merge || jobs.proxy_z1.networks.[0].static_ips.[0] ))
- port: (( jobs.mysql_z1.properties.port || nil ))
- username: (( jobs.mysql_z1.properties.admin_username || nil ))
- password: (( jobs.mysql_z1.properties.admin_password || nil ))
-
-- name: bootstrap
- template: bootstrap
- release: cf-mysql
- instances: 1
- resource_pool: errands_z1
- lifecycle: errand
- networks:
- - name: mysql1
- properties:
- cluster_ips: (( jobs.mysql_z1.properties.cluster_ips ))
- healthcheck_port: (( merge || nil ))
- database_startup_timeout: (( jobs.mysql_z1.properties.database_startup_timeout ))
- bootstrap_endpoint: (( jobs.mysql_z1.properties.bootstrap_endpoint ))
diff --git a/templates/sample_stubs/sample_aws_stub.yml b/templates/sample_stubs/sample_aws_stub.yml
deleted file mode 100644
index bfa1a55f..00000000
--- a/templates/sample_stubs/sample_aws_stub.yml
+++ /dev/null
@@ -1,132 +0,0 @@
-director_uuid: REPLACE_WITH_YOUR_DIRECTOR_UUID
-
-meta:
- # Used as a prefix for the deployment name
- #
- # e.g. `environment: cf-tabasco` makes a deployment named cf-tabasco-mysql
- environment: REPLACE_WITH_YOUR_ENVIRONMENT_NAME
-
-# NOTE:
-# Replace 10.0.{0,1,2} part of the octet
-# with your network configuration
-networks:
-- name: mysql1
- type: manual
- subnets:
- - range: 10.10.32.0/24
- reserved:
- - 10.10.32.2 - 10.10.32.9
- - 10.10.32.130 - 10.10.32.254
- static:
- - 10.10.32.10 - 10.10.32.14
- gateway: 10.10.32.1
- dns:
- - 10.10.0.2 # amazon has only 1 DNS server for the whole VPC at x.x.0.2
- cloud_properties:
- subnet: (( properties.template_only.aws.subnet_ids.mysql1 ))
-- name: mysql2
- type: manual
- subnets:
- - range: 10.10.33.0/24
- reserved:
- - 10.10.33.2 - 10.10.33.9
- - 10.10.33.130 - 10.10.33.254
- static:
- - 10.10.33.10 - 10.10.33.14
- gateway: 10.10.33.1
- dns:
- - 10.10.0.2 # amazon has only 1 DNS server for the whole VPC at x.x.0.2
- cloud_properties:
- subnet: (( properties.template_only.aws.subnet_ids.mysql2 ))
-- name: mysql3
- type: manual
- subnets:
- - range: 10.10.34.0/24
- reserved:
- - 10.10.34.2 - 10.10.34.9
- - 10.10.34.130 - 10.10.34.254
- static:
- - 10.10.34.10 - 10.10.34.14
- gateway: 10.10.34.1
- dns:
- - 10.10.0.2 # amazon has only 1 DNS server for the whole VPC at x.x.0.2
- cloud_properties:
- subnet: (( properties.template_only.aws.subnet_ids.mysql3 ))
-- name: compilation
- type: manual
- subnets:
- - range: 10.10.35.0/24
- name: default_unused
- reserved:
- - 10.10.35.2 - 10.10.35.9
- - 10.10.35.130 - 10.10.35.254
- static:
- - 10.10.35.10 - 10.10.35.14
- gateway: 10.10.35.1
- dns:
- - 10.10.0.2 # amazon has only 1 DNS server for the whole VPC at x.x.0.2
- cloud_properties:
- subnet: (( properties.template_only.aws.subnet_ids.compilation ))
-
-properties:
- cf:
- # these come from your cf-release manifest
- admin_username: REPLACE_WITH_YOUR_CF_ADMIN_USERNAME
- admin_password: REPLACE_WITH_YOUR_CF_ADMIN_PASSWORD
- skip_ssl_validation: REPLACE_WITH_TRUE_OR_FALSE # True if you don't have a trusted SSL certificate, false if you do
-
- domain: REPLACE_WITH_YOUR_CF_SYSTEM_DOMAIN # The broker registers a route at p-msyql.external_domain.
- app_domains:
- - REPLACE_WITH_YOUR_CF_APPS_DOMAIN
- nats:
- user: nats
- password: REPLACE_WITH_NATS_PASSWORD_FROM_CF_RELEASE
- machines:
- - REPLACE_WITH_NATS_IP_ADDRESS_FROM_CF_RELEASE
- port: 4222
-
- template_only:
- aws:
- availability_zone: REPLACE_WITH_YOUR_AWS_AVAILABILITY_ZONE_1 #From the EC2 page of the AWS console, like us-east-1a
- availability_zone2: REPLACE_WITH_YOUR_AWS_AVAILABILITY_ZONE_2 #From the EC2 page of the AWS console, like us-east-1b
- availability_zone3: REPLACE_WITH_YOUR_AWS_AVAILABILITY_ZONE_3 #From the EC2 page of the AWS console, like us-east-1c
- subnet_ids:
- # From VPC/Subnets page of AWS console. Availability zone must match the value set above.
- mysql1: REPLACE_WITH_YOUR_SUBNET_ID_1
- mysql2: REPLACE_WITH_YOUR_SUBNET_ID_2
- mysql3: REPLACE_WITH_YOUR_SUBNET_ID_3
- compilation: REPLACE_WITH_YOUR_COMPILATION_SUBNET
-
-
-jobs:
-# Jobs for cf-mysql-release are below
-- name: mysql_z1
- properties:
- admin_password: REPLACE_WITH_A_PASSWORD_YOU_MAKE_UP #The admin password for the MySQL server process
- bootstrap_endpoint:
- username: REPLACE_WITH_A_USERNAME_YOU_MAKE_UP
- password: REPLACE_WITH_A_PASSWORD_YOU_MAKE_UP
-
-- name: cf-mysql-broker_z1
- properties:
- cf:
- admin_username: (( .properties.cf.admin_username ))
- admin_password: (( .properties.cf.admin_password ))
- # The username & password cloud controller will use to authenticate with the service broker.
- auth_username: REPLACE_WITH_A_USERNAME_YOU_MAKE_UP # eg. cc
- auth_password: REPLACE_WITH_A_PASSWORD_YOU_MAKE_UP
- cookie_secret: REPLACE_WITH_A_PASSWORD_YOU_MAKE_UP
- services:
- - name: p-mysql
- dashboard_client:
- secret: REPLACE_WITH_PASSWORD_YOU_MAKE_UP #Secret used by MySQL dashboard to fetch an OAuth token from UAA
- plans:
- - name: REPLACE_WITH_YOUR_PLAN_NAME
- max_storage_mb: REPLACE_WITH_PLAN_SIZE_IN_MB
-
-- name: proxy_z1
- release: cf-mysql
- properties:
- proxy:
- api_username: REPLACE_WITH_A_USERNAME_YOU_MAKE_UP
- api_password: REPLACE_WITH_A_PASSWORD_YOU_MAKE_UP
diff --git a/templates/sample_stubs/sample_plans_stub.yml b/templates/sample_stubs/sample_plans_stub.yml
deleted file mode 100644
index 67f91130..00000000
--- a/templates/sample_stubs/sample_plans_stub.yml
+++ /dev/null
@@ -1,36 +0,0 @@
-jobs:
-- name: cf-mysql-broker_z1
- properties:
- services:
- - name: p-mysql
- plans:
- - name: 100mb
- id: ab08f1bc-e6fc-4b56-a767-ee0fea6e3f20
- description: Shared MySQL Server
- max_storage_mb: 100
- max_user_connections: 20
- metadata:
- costs:
- - amount:
- usd: 0.0
- unit: MONTH
- bullets:
- - Shared MySQL server
- - 100 MB storage
- - 20 concurrent connections
- displayName: "100 MB"
- - name: 1gb
- id: 11d0aa36-dcec-4021-85f5-ea4d9a5c8342
- description: Shared MySQL Server
- max_storage_mb: 1000
- max_user_connections: 40
- metadata:
- costs:
- - amount:
- usd: 0.0
- unit: MONTH
- bullets:
- - Shared MySQL server
- - 1000 MB storage
- - 40 concurrent connections
- displayName: "1 GB"
diff --git a/templates/sample_stubs/sample_vsphere_stub.yml b/templates/sample_stubs/sample_vsphere_stub.yml
deleted file mode 100644
index 50d0d193..00000000
--- a/templates/sample_stubs/sample_vsphere_stub.yml
+++ /dev/null
@@ -1,135 +0,0 @@
-director_uuid: REPLACE_WITH_YOUR_DIRECTOR_UUID
-
-meta:
- # Used as a prefix for the deployment name
- #
- # e.g. `environment: cf-tabasco` makes a deployment named cf-tabasco-mysql
- environment: REPLACE_WITH_YOUR_ENVIRONMENT_NAME
-
-# NOTE:
-# Replace 10.0.{0,1,2} part of the octet
-# with your network configuration
-networks:
-- name: mysql1
- subnets:
- - range: 10.0.0.0/24
- gateway: 10.0.0.1
- reserved:
- - 10.0.0.2-10.0.0.109
- - 10.0.0.130-10.0.0.254
- static:
- - 10.0.0.120
- - 10.0.0.121
- - 10.0.0.122
- - 10.0.0.123
- - 10.0.0.124
- dns:
- - 10.0.0.3
- - 8.8.8.8
- cloud_properties:
- name: REPLACE_WITH_YOUR_SUBNET_NAME #This should match your vSphere network name, e.g. "VM Network".
-- name: mysql2
- subnets:
- - range: 10.0.1.0/24
- gateway: 10.0.1.1
- reserved:
- - 10.0.1.2-10.0.1.109
- - 10.0.1.130-10.0.1.254
- static:
- - 10.0.1.120
- - 10.0.1.121
- - 10.0.1.122
- - 10.0.1.123
- - 10.0.1.124
- dns:
- - 10.0.1.3
- - 8.8.8.8
- cloud_properties:
- name: REPLACE_WITH_YOUR_SUBNET_NAME_2
-- name: mysql3
- subnets:
- - range: 10.0.2.0/24
- gateway: 10.0.2.1
- reserved:
- - 10.0.2.2-10.0.2.109
- - 10.0.2.130-10.0.2.254
- static:
- - 10.0.2.120
- - 10.0.2.121
- - 10.0.2.122
- - 10.0.2.123
- - 10.0.2.124
- dns:
- - 10.0.2.3
- - 8.8.8.8
- cloud_properties:
- name: REPLACE_WITH_YOUR_SUBNET_NAME_3
-- name: compilation
- subnets:
- - range: 10.0.3.0/24
- gateway: 10.0.3.1
- reserved:
- - 10.0.3.2-10.0.3.169
- - 10.0.3.190-10.0.3.254
- static:
- - 10.0.3.170-10.0.3.174
- dns:
- - 10.0.3.3
- - 8.8.8.8
- cloud_properties:
- name: REPLACE_WITH_YOUR_SUBNET_NAME_4
-
-properties:
- cf:
- admin_username: REPLACE_WITH_YOUR_CF_ADMIN_USERNAME
- admin_password: REPLACE_WITH_YOUR_CF_ADMIN_PASSWORD
- skip_ssl_validation: REPLACE_WITH_TRUE_OR_FALSE # True if you don't have a trusted SSL certificate, false if you do
- domain: REPLACE_WITH_YOUR_CF_SYSTEM_DOMAIN # The broker registers a route at p-mysql.external_domain
- app_domains:
- - REPLACE_WITH_YOUR_CF_APPS_DOMAIN
- nats:
- machines:
- - REPLACE_WITH_NATS_IP_ADDRESS_FROM_CF_RELEASE
- password: REPLACE_WITH_NATS_PASSWORD_FROM_CF_RELEASE
- user: nats
- port: 4222
- # A multi-AZ VSphere environment can be distributed across different datacenters and/or clusters
- datacenters:
- - name: z1
- datacenter_name: REPLACE_WITH_YOUR_FIRST_DATACENTER
- clusters:
- - REPLACE_WITH_YOUR_FIRST_CLUSTER:
- resource_pool: REPLACE_WITH_YOUR_FIRST_RESOURCE_POOL
- - name: z2
- datacenter_name: REPLACE_WITH_YOUR_SECOND_DATACENTER
- clusters:
- - REPLACE_WITH_YOUR_SECOND_CLUSTER:
- resource_pool: REPLACE_WITH_YOUR_SECOND_RESOURCE_POOL
- - name: z3
- datacenter_name: REPLACE_WITH_YOUR_THIRD_DATACENTER
- clusters:
- - REPLACE_WITH_YOUR_THIRD_CLUSTER:
- resource_pool: REPLACE_WITH_YOUR_THIRD_RESOURCE_POOL
-
-jobs:
-- name: proxy_z1
- properties:
- proxy:
- api_username: REPLACE_WITH_A_USERNAME_YOU_MAKE_UP # Used for basic auth in front of proxy api
- api_password: REPLACE_WITH_A_PASSWORD_YOU_MAKE_UP
-- name: mysql_z1
- properties:
- admin_password: REPLACE_WITH_A_PASSWORD_YOU_MAKE_UP #The admin password for the MySQL server process
- bootstrap_endpoint:
- username: REPLACE_WITH_A_USERNAME_YOU_MAKE_UP
- password: REPLACE_WITH_A_PASSWORD_YOU_MAKE_UP
-- name: cf-mysql-broker_z1
- properties:
- # The username & password cloud controller will use to authenticate with the service broker.
- auth_username: REPLACE_WITH_A_USERNAME_YOU_MAKE_UP #eg. cc
- auth_password: REPLACE_WITH_A_PASSWORD_YOU_MAKE_UP
- cookie_secret: REPLACE_WITH_A_PASSWORD_YOU_MAKE_UP
- services:
- - name: p-mysql
- dashboard_client:
- secret: REPLACE_WITH_A_PASSWORD_YOU_MAKE_UP #Secret used by MySQL dashboard to fetch an OAuth token from UAA