Skip to content
This repository was archived by the owner on May 26, 2025. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
0f6e267
Add 'domain' to terraform output
necrophonic Oct 4, 2018
99e45c3
Reset output
necrophonic Oct 4, 2018
9b95fdd
Add basic deploy task for rabbitmq broker
necrophonic Oct 4, 2018
94deca1
Fix ops file location in task
necrophonic Oct 4, 2018
453e2e2
Add rabbitmq ops file from cf-4.2.0 branch
necrophonic Oct 4, 2018
8696902
Add scripts and config for rabbitmq
necrophonic Oct 5, 2018
9f7cd1b
Adding 'services' subnet
necrophonic Oct 5, 2018
149e6a4
Update cf terraform
necrophonic Oct 8, 2018
2f2f078
Add locals.tf
necrophonic Oct 8, 2018
5a559ba
Add locals.tf to cf terraform
necrophonic Oct 8, 2018
4b1ca5e
Add cidr_blocks var to cf tf
necrophonic Oct 8, 2018
a1c309a
Add cidr_blocks to base outputs
necrophonic Oct 8, 2018
0577647
Add availability_zones var
necrophonic Oct 8, 2018
03c3fad
Remove unused local
necrophonic Oct 8, 2018
9fe3974
Remove var
necrophonic Oct 8, 2018
422087d
Reinstate outputs
necrophonic Oct 8, 2018
0b856a7
Fix typo
necrophonic Oct 8, 2018
341915d
Add cidr_blocks var to bosh
necrophonic Oct 8, 2018
fd544e1
Reinstate correct output
necrophonic Oct 8, 2018
a4a9c97
Test passing list instead of map
necrophonic Oct 10, 2018
101a29a
Fix var type
necrophonic Oct 10, 2018
012543a
Remove unused local
necrophonic Oct 10, 2018
2989d24
Tweaking cf deploy task
necrophonic Oct 11, 2018
b7f9f1f
Remove unneeded code
necrophonic Oct 11, 2018
02ba837
Add missing var to bosh update-cloud-config
necrophonic Oct 11, 2018
d170fe6
Add 50G disk type to cloud config
necrophonic Oct 11, 2018
564bbf1
Updating rabbitmq deploy - currently fails on reading vars
necrophonic Oct 11, 2018
8897b6d
Update vars example in readme
necrophonic Oct 11, 2018
350b3e1
Add rabbitmq terraform to cf
necrophonic Oct 15, 2018
baf2f91
Correct source for vpc id in rabbitmq terraform
necrophonic Oct 15, 2018
4efa2c6
Add rabbitmq outputs to cf terraform
necrophonic Oct 15, 2018
229482f
Correct jq call
necrophonic Oct 15, 2018
4b8d71c
Add missing slash
necrophonic Oct 15, 2018
5983541
Add bosh security group id to rabbitmq deploy
necrophonic Oct 15, 2018
3b1ba86
Correct bosh tfstate file name
necrophonic Oct 15, 2018
2d0ee82
Add bosh-tfstate-s3 resource to cloud config ci task
necrophonic Oct 15, 2018
e90b880
Add missing services subnet az3 id
necrophonic Oct 15, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,5 @@ foo.yml

*.lock.info
**/.DS_Store

data/
4 changes: 4 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
[submodule "concourse-bosh-deployment"]
path = concourse-bosh-deployment
url = https://github.com/concourse/concourse-bosh-deployment.git

[submodule "cf-rabbitmq-multitenant-broker-release"]
path = cf-rabbitmq-multitenant-broker-release
url = https://github.com/pivotal-cf/cf-rabbitmq-multitenant-broker-release.git
17 changes: 11 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,17 @@ You'll need to create a `<env>_vpc.tfvars` file with `az1`, `az2`, `region` and

```json
{
"az1": "eu-west-1a",
"az2": "eu-west-1b",
"region": "eu-west-1",
"parent_dns_zone": "<domain>",
"ingress_whitelist": ["0.0.0.0/0"],
"slack_webhook_uri": "https://hooks.slack.com/services/<generated uri>"
"environment": "engineering",
"az1": "eu-west-1a",
"az2": "eu-west-1b",
"region": "eu-west-1",
"parent_dns_zone": "<domain>",
"ingress_whitelist": ["0.0.0.0/0"],
"availability_zones": ["eu-west-1a", "eu-west-1b", "eu-west-1c"],
"slack_webhook_uri": "https://hooks.slack.com/services/<generated uri>",
"cidr_blocks": {
"services": ["10.121.28.0/22", "10.121.32.0/22", "10.121.36.0/22"],
}
}
```

Expand Down
67 changes: 67 additions & 0 deletions bin/deploy_rabbitmq_service_and_broker.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
#!/bin/bash

set -euo pipefail

: $ENVIRONMENT

output() {
FILE=$1
QUERY=$2

bin/outputs.sh $FILE | jq -r "$QUERY"
}

secret() {
KEY=$1
bin/secret.sh -e $ENVIRONMENT -d cf -k $KEY
}

bin/get_states.sh -e $ENVIRONMENT

BOSH="bin/bosh_credentials.sh -e $ENVIRONMENT bosh"

SYSTEM_DOMAIN="system.$(output base .domain)"
APPS_DOMAIN="apps.$(output base .domain)"

export BOSH_CA_CERT=$(bosh int --path /default_ca/ca "data/$ENVIRONMENT-bosh-variables.yml")

RABBITMQ_STEMCELL_VERSION=3586.16
BROKER_PLAN_UUID=22F0B28C-B886-4123-B01B-95E54D3DE6DA
BROKER_UUID=568725FD-AD46-44CA-9853-621416E983A4

$BOSH -d rabbitmq deploy -n cf-rabbitmq-multitenant-broker-release/manifests/cf-rabbitmq-broker-template.yml \
-o cf-rabbitmq-multitenant-broker-release/manifests/add-cf-rabbitmq.yml \
-o ./operations/rabbitmq/release.yml \
-v deployment-name=rabbitmq \
-v stemcell-version="'$RABBITMQ_STEMCELL_VERSION'" \
-v system-domain="$SYSTEM_DOMAIN" \
-v apps_domain="$APPS_DOMAIN" \
-v multitenant-rabbitmq-broker-username=broker \
-v product-name=p-rabbitmq \
-v rabbitmq-management-username=admin \
-v rabbitmq-broker-hostname=rabbitmq-multitenant-broker \
-v rabbitmq-broker-password=broker \
-v rabbitmq-broker-plan-uuid="$BROKER_PLAN_UUID" \
-v rabbitmq-broker-protocol=https \
-v rabbitmq-broker-username=broker \
-v rabbitmq-broker-uuid="$BROKER_UUID" \
-v rabbitmq-management-hostname=pivotal-rabbitmq \
-v cf-admin-username=admin \
-v cf-admin-password=$(bin/cf_password.sh -e "$ENVIRONMENT") \
-v cluster-partition-handling-strategy=autoheal \
-v haproxy-instances=1 \
-v haproxy-stats-username=admin \
-v rabbitmq-hosts=[] \
--vars-store "${ENVIRONMENT}_rabbitmq_broker.creds.yml"

# NB: passwords are auto-generated in the deployment manifest - see operations/rabbitmq/release.yml

$BOSH -d rabbitmq run-errand broker-registrar

$BOSH -d rabbitmq run-errand smoke-tests

echo
echo
echo '*****************************************************'
echo 'The RabbitMQ service broker is installed and tested'
echo '*****************************************************'
31 changes: 31 additions & 0 deletions bin/get_states.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#!/bin/bash

set -euo pipefail

FILES=
OPTIONAL=
EXISTS=

while getopts e:f:ox option; do
case $option in
e) export ENVIRONMENT="$OPTARG";;
f) FILES="$OPTARG $FILES";;
o) OPTIONAL=true;;
x) EXISTS=true;;
esac
done

: $ENVIRONMENT

[ "$OPTIONAL" = true ] && set +e

if [ -z "$FILES" ]; then
aws s3 cp --recursive "s3://ons-paas-${ENVIRONMENT}-states" "data/" --acl=private
else
for FILE in $FILES; do
[ "$EXISTS" = true -a -f data/$FILE ] && continue
aws s3 cp "s3://ons-paas-${ENVIRONMENT}-states/$FILE" "data/" --acl=private
done
fi

exit 0
19 changes: 19 additions & 0 deletions bin/outputs.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#!/bin/bash

set -euo pipefail

while getopts 'e:f' option; do
case $option in
e) export ENVIRONMENT="$OPTARG";;
esac
done
shift $((OPTIND-1))

: $ENVIRONMENT

# STEP=${1:-base}

bin/get_states.sh -e $ENVIRONMENT -x -f bosh/$ENVIRONMENT.tfstate
# bin/get_states.sh -e $ENVIRONMENT -x -f $ENVIRONMENT-$STEP.tfstate

terraform output -state="data/bosh/$ENVIRONMENT.tfstate" -json | jq '. | with_entries(.value = .value.value)'
2 changes: 2 additions & 0 deletions ci/deploy_pipeline.sh
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ jumpbox_commit_ref="32c162b16f2a5a2639c78d905ba852487b93d507"
bosh_commit_ref="04c85a5c79a9fa6b92775386a334104b9a165013"
prometheus_commit_ref="a381c0af550550fc1d740ef409c2e2f22a589202"
cf_tag="v2.7.0"
rabbitmq_broker_tag="v37.0.0"

node_exporter_version="4.0.0"

Expand All @@ -38,6 +39,7 @@ fly -t "$ENVIRONMENT" set-pipeline \
-v slack_webhook_uri="$slack_webhook_uri" \
-v prometheus_commit_ref="$prometheus_commit_ref" \
-v node_exporter_version="$node_exporter_version" \
-v rabbitmq_broker_tag="$rabbitmq_broker_tag" \
-v cf_deployment_name="cf" \
-c ci/deploy_pipeline.yml -p deploy_pipeline -n

Expand Down
29 changes: 3 additions & 26 deletions ci/deploy_pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -56,17 +56,12 @@ resources:
type: git
source:
uri: https://github.com/cloudfoundry/cf-acceptance-tests.git

- name: prometheus-deployment-git
type: git
source:
uri: https://github.com/bosh-prometheus/prometheus-boshrelease.git

- name: cf-tests-git
type: git
source:
uri: https://github.com/ONSdigital/cf-tests

- name: jumpbox-terraform
type: terraform
source:
Expand Down Expand Up @@ -953,32 +948,14 @@ jobs:
- get: paas-bootstrap-git
trigger: true
passed: [verify-cf-endpoints]
- get: cf-vars-s3
- get: cf-vars-s3
- task: get management variables
file: paas-bootstrap-git/ci/tasks/cf/get_management_vars/task.yml
params:
ENVIRONMENT: ((environment))
DOMAIN: ((domain))
DOMAIN: ((domain))
- task: create orgs spaces etc
file: paas-bootstrap-git/ci/tasks/cf/management/task.yml
params:
ENVIRONMENT: ((environment))

- name: verify-shared-rds
serial: true
serial_groups: [rds]
plan:
- get: cf-tests-git
- get: trigger-weekday-morning
trigger: true
passed: [cf-management]
- get: paas-bootstrap-git
trigger: true
passed: [cf-management]
- get: cf-vars-s3
- task: get cf credentials
file: paas-bootstrap-git/ci/tasks/common/get_cf_tester_credentials/task.yml
params:
DOMAIN: ((domain))
- task: create service and test useability
file: paas-bootstrap-git/ci/tasks/rds_broker/test_shared/task.yml
19 changes: 18 additions & 1 deletion ci/tasks/cf/cloud_config/task.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

set -euo pipefail

jq '.modules[0].outputs | with_entries(.value = .value.value)' < "bosh-tfstate-s3/${ENVIRONMENT}.tfstate" > bosh-vars.json
jq '.modules[0].outputs | with_entries(.value = .value.value)' < vpc-tfstate-s3/tfstate.json > vpc-vars.json
jq '.modules[0].outputs | with_entries(.value = .value.value)' < concourse-tfstate-s3/tfstate.json > concourse-vars.json
jq '.modules[0].outputs | with_entries(.value = .value.value)' < "cf-tfstate-s3/${ENVIRONMENT}.tfstate" > cf-vars.json
Expand All @@ -23,6 +24,7 @@ bosh update-cloud-config -n \
-o paas-bootstrap-git/operations/cloud-config/cf-s3-blobstore.yml \
-o paas-bootstrap-git/operations/cloud-config/cf-rds-sec-group.yml \
-o paas-bootstrap-git/operations/cloud-config/prometheus.yml \
-o paas-bootstrap-git/operations/cloud-config/rabbitmq.yml \
-v az1="$(jq -r .az1 < vpc-vars.json)" \
-v az2="$(jq -r .az2 < vpc-vars.json)" \
-v az3="$(jq -r .az3 < vpc-vars.json)" \
Expand All @@ -40,6 +42,18 @@ bosh update-cloud-config -n \
-v private_subnet_az1_cidr="$(jq -r '.cf_internal_subnet_az1_cidr' < cf-vars.json)" \
-v private_subnet_az2_cidr="$(jq -r '.cf_internal_subnet_az2_cidr' < cf-vars.json)" \
-v private_subnet_az3_cidr="$(jq -r '.cf_internal_subnet_az3_cidr' < cf-vars.json)" \
-v services_subnet_az1_cidr="$(jq -r .services_subnet_cidr_blocks[0] < cf-vars.json)" \
-v services_subnet_az1_gateway="$(jq -r .services_subnet_gateway_ips[0] < cf-vars.json)" \
-v reserved_services_az1_cidr="$(jq -r .services_subnet_reserved_cidr_blocks[0] < cf-vars.json)" \
-v services_subnet_az1_id="$(jq -r .services_subnet_ids[0] < cf-vars.json)" \
-v services_subnet_az2_cidr="$(jq -r .services_subnet_cidr_blocks[1] < cf-vars.json)" \
-v services_subnet_az2_gateway="$(jq -r .services_subnet_gateway_ips[1] < cf-vars.json)" \
-v reserved_services_az2_cidr="$(jq -r .services_subnet_reserved_cidr_blocks[1] < cf-vars.json)" \
-v services_subnet_az2_id="$(jq -r .services_subnet_ids[1] < cf-vars.json)" \
-v services_subnet_az3_cidr="$(jq -r .services_subnet_cidr_blocks[2] < cf-vars.json)" \
-v services_subnet_az3_gateway="$(jq -r .services_subnet_gateway_ips[2] < cf-vars.json)" \
-v reserved_services_az3_cidr="$(jq -r .services_subnet_reserved_cidr_blocks[2] < cf-vars.json)" \
-v services_subnet_az3_id="$(jq -r .services_subnet_ids[2] < cf-vars.json)" \
-v cf-router-target-group-name="$(jq -r '.cf_router_target_group_name' < cf-vars.json)" \
-v cf-router-lb-internal-security-group-id="$(jq -r '.cf_router_lb_internal_security_group_id' < cf-vars.json)" \
-v cf-internal-security-group-id="$(jq -r '.cf_internal_security_group_id' < cf-vars.json)" \
Expand All @@ -53,6 +67,9 @@ bosh update-cloud-config -n \
-v prometheus_subnet_az1_gateway="$(jq -r .prometheus_subnet_az1_cidr < prometheus-vars.json | sed 's#0/24#1#')" \
-v grafana_target_group_name="$(jq -r .grafana_target_group_name < prometheus-vars.json)" \
-v prometheus_target_group_name="$(jq -r .prometheus_target_group_name < prometheus-vars.json)" \
-v alertmanager_target_group_name="$(jq -r .alertmanager_target_group_name < prometheus-vars.json)"
-v alertmanager_target_group_name="$(jq -r .alertmanager_target_group_name < prometheus-vars.json)" \
-v rabbitmq-broker-security-group-id="$(jq -r .rabbitmq_broker_security_group_id < cf-vars.json)" \
-v rabbitmq-server-security-group-id="$(jq -r .rabbitmq_server_security_group_id < cf-vars.json)" \
-v bosh-managed-security-group-id="$(jq -r .bosh_security_group_id < bosh-vars.json)"

bosh cloud-config > cf-manifests/cloud-config.yml
1 change: 1 addition & 0 deletions ci/tasks/cf/cloud_config/task.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ inputs:
- name: cf-tfstate-s3
- name: bosh-vars-s3
- name: bosh-manifest-s3
- name: bosh-tfstate-s3
- name: concourse-tfstate-s3
- name: prometheus-tfstate-s3

Expand Down
37 changes: 37 additions & 0 deletions ci/tasks/rabbitmq_broker/deploy/task.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
#!/bin/bash

set -euo pipefail

RABBITMQ_MANIFESTS=rabbitmq-broker-deployment-git/manifests
SYSTEM_DOMAIN="system.${DOMAIN}"
APPS_DOMAIN="apps.${DOMAIN}"

# TODO better configuration
RABBITMQ_STEMCELL_VERSION=3586.40
BROKER_PLAN_UUID=22F0B28C-B886-4123-B01B-95E54D3DE6DA
BROKER_UUID=568725FD-AD46-44CA-9853-621416E983A4

bosh -d rabbitmq deploy -n "$RABBITMQ_MANIFESTS"/cf-rabbitmq-broker-template.yml \
-o "$RABBITMQ_MANIFESTS"/add-cf-rabbitmq.yml \
-o paas-bootstrap-git/operations/rabbitmq/release.yml \
-v deployment-name=rabbitmq \
-v stemcell-version="'$RABBITMQ_STEMCELL_VERSION'" \
-v system-domain="$SYSTEM_DOMAIN" \
-v apps_domain="$APPS_DOMAIN" \
-v multitenant-rabbitmq-broker-username=broker \
-v product-name=p-rabbitmq \
-v rabbitmq-management-username=admin \
-v rabbitmq-broker-hostname=rabbitmq-multitenant-broker \
-v rabbitmq-broker-password=broker \
-v rabbitmq-broker-plan-uuid="$BROKER_PLAN_UUID" \
-v rabbitmq-broker-protocol=https \
-v rabbitmq-broker-username=broker \
-v rabbitmq-broker-uuid="$BROKER_UUID" \
-v rabbitmq-management-hostname=pivotal-rabbitmq \
-v cf-admin-username=admin \
-v cf-admin-password=$(bin/cf_password.sh -e "$ENVIRONMENT") \
-v cluster-partition-handling-strategy=autoheal \
-v haproxy-instances=1 \
-v haproxy-stats-username=admin \
-v rabbitmq-hosts=[]

19 changes: 19 additions & 0 deletions ci/tasks/rabbitmq_broker/deploy/task.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
platform: linux
image_resource:
type: docker-image
source: { repository: onsdigital/paas-ci-gp, tag: latest }

inputs:
- name: paas-bootstrap-git
- name: rabbitmq-broker-deployment-git

outputs:
- name: rabbitmq-broker-manifests

run:
path: paas-bootstrap-git/ci/tasks/rabbitmq_broker/deploy/task.sh

params:
ENVIRONMENT:
DOMAIN:
35 changes: 34 additions & 1 deletion cloud-config/cf/cloud-config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,9 @@ disk_types:
- name: 10GB
disk_size: 10_000
cloud_properties: {encrypted: true, type: gp2}
- name: 50GB
disk_size: 50_000
cloud_properties: {encrypted: true, type: gp2}
- name: 100GB
disk_size: 100_000
cloud_properties: {encrypted: true, type: gp2}
Expand Down Expand Up @@ -93,7 +96,37 @@ networks:
cloud_properties:
subnet: ((private_subnet_az3_id))
security_groups: [ ((internal_security_group))]

- name: services
type: manual
subnets:
- range: ((services_subnet_az1_cidr))
gateway: ((services_subnet_az1_gateway))
az: z1
dns:
- ((private_dns_nameserver))
- 1.1.1.1
reserved: [((reserved_services_az1_cidr))]
cloud_properties:
subnet: ((services_subnet_az1_id))
- range: ((services_subnet_az2_cidr))
gateway: ((services_subnet_az2_gateway))
az: z2
dns:
- ((private_dns_nameserver))
- 1.1.1.1
reserved: [((reserved_services_az2_cidr))]
cloud_properties:
subnet: ((services_subnet_az2_id))
- range: ((services_subnet_az3_cidr))
gateway: ((services_subnet_az3_gateway))
az: z3
dns:
- ((private_dns_nameserver))
- 1.1.1.1
reserved: [((reserved_services_az3_cidr))]
cloud_properties:
subnet: ((services_subnet_az3_id))


compilation:
workers: 8
Expand Down
Loading