concourse-bosh-deployment
has a sample BOSH manifest, versions.yml
file, and a selection of deployment-modifying operations
files. Using these sample files makes it much faster and easier to get started.
Create a directory called concourse-bosh-deployment
in your working directory:
mkdir concourse-bosh-deployment
Untar the concourse-bosh-deployment.tgz
file downloaded from the Broadcom Support portal
tar -C concourse-bosh-deployment -xzf concourse-bosh-deployment.tgz
The deployment instructions below deploy the following:
worker
VMweb
VM with co-located CredHub and UAAAll files should be created in your working directory.
Create a vars file called vars.yml
with the following and replace the values as necessary.
For AWS:
# BOSH uses this to identify the deployment
deployment_name: concourse
# This can be any VM type from the cloud config: bosh cloud-config
web_vm_type: c5.large
# This is the external concourse URL exported from the terraform output
external_host: $CONCOURSE_URL
# This is the external concourse URL exported from the terraform output
external_url: https://$CONCOURSE_URL
# This can be any VM type from the cloud config: bosh cloud-config
db_vm_type: c5.large
# This can be any disk type from the cloud config: bosh cloud-config
db_persistent_disk_type: 102400
# This can be any VM type from the cloud config: bosh cloud-config
worker_vm_type: c5.large
# This assigns created VMs (web, worker, and db) to AZs in the IaaS
azs: ((availability_zones))
# The network name to assign the VMs to.
network_name: management
For Azure:
# BOSH uses this to identify the deployment
deployment_name: concourse
# This can be any VM type from the cloud config: bosh cloud-config
web_vm_type: Standard_DS2_v2
# This is the external concourse URL exported from the terraform output
external_host: $CONCOURSE_URL
# This is the external concourse URL exported from the terraform output
external_url: https://$CONCOURSE_URL
# This can be any VM type from the cloud config: bosh cloud-config
db_vm_type: Standard_DS2_v2
# This can be any disk type from the cloud config: bosh cloud-config
db_persistent_disk_type: 102400
# This can be any VM type from the cloud config: bosh cloud-config
worker_vm_type: Standard_DS2_v2
# This assigns created VMs (web, worker, and db) to AZs in the IaaS
azs: ["Availability Sets"]
# The network name to assign the VMs to.
network_name: management
For GCP:
# BOSH uses this to identify the deployment
deployment_name: concourse
# This can be any VM type from the cloud config: bosh cloud-config
web_vm_type: e2-standard-2
# This is the external concourse URL exported from the terraform output
external_host: $CONCOURSE_URL
# This is the external concourse URL exported from the terraform output
external_url: https://$CONCOURSE_URL
# This can be any VM type from the cloud config: bosh cloud-config
db_vm_type: e2-standard-2
# This can be any disk type from the cloud config: bosh cloud-config
db_persistent_disk_type: 102400
# This can be any VM type from the cloud config: bosh cloud-config
worker_vm_type: e2-standard-2
# This assigns created VMs (web, worker, and db) to AZs in the IaaS
azs: ((availability_zones))
# The network name to assign the VMs to.
network_name: management
For vSphere:
# BOSH uses this to identify the deployment
deployment_name: concourse
# This can be any VM type from the cloud config: bosh cloud-config
web_vm_type: large
# This is the external concourse URL exported from the terraform output
external_host: $CONCOURSE_URL
# This is the external concourse URL exported from the terraform output
external_url: https://$CONCOURSE_URL
# This can be any VM type from the cloud config: bosh cloud-config
db_vm_type: large
# This can be any disk type from the cloud config: bosh cloud-config
db_persistent_disk_type: 102400
# This can be any VM type from the cloud config: bosh cloud-config
worker_vm_type: large
# This assigns created VMs (web, worker, and db) to AZs in the IaaS
azs: [ az1 ]
# The network name to assign the VMs to.
network_name: management
Where:
$CONCOURSE_URL
is the URL to the Concourse load balancer created with the terraform
templates. The terraform output
key is concourse_url
.((availability_zones))
are the AZs where Concourse infrastructure was created in, which will be automatically provided from the terraform-outputs.yml
file.Create an ops file called operations.yml
. It will contain information for assigning vm extensions for the load balancer, disk size of the worker, and access for the worker to talk to the Broadcom Support portal.
For AWS:
- type: replace
path: /instance_groups/name=web/vm_extensions?/-
value: concourse-lb
- type: replace
path: /instance_groups/name=web/vm_extensions?/-
value: public_ip
- type: replace
path: /instance_groups/name=worker/vm_extensions?/-
value: public_ip
- type: replace
path: /instance_groups/name=worker/vm_extensions?/-
value: increased-disk
For Azure:
- type: replace
path: /instance_groups/name=web/vm_extensions?/-
value: concourse-lb
- type: replace
path: /instance_groups/name=web/vm_extensions?/-
value: public_ip
- type: replace
path: /instance_groups/name=worker/vm_extensions?/-
value: public_ip
- type: replace
path: /instance_groups/name=worker/vm_extensions?/-
value: increased-disk
For GCP:
- type: replace
path: /instance_groups/name=web/vm_extensions?/-
value: concourse-lb
- type: replace
path: /instance_groups/name=web/vm_extensions?/-
value: public_ip
- type: replace
path: /instance_groups/name=worker/vm_extensions?/-
value: public_ip
- type: replace
path: /instance_groups/name=worker/vm_extensions?/-
value: increased-disk
For vSphere + NSXT:
- type: replace
path: /instance_groups/name=web/vm_extensions?/-
value: concourse-lb
- type: replace
path: /instance_groups/name=worker/vm_extensions?/-
value: increased-disk
For vSphere without NSXT:
If you needed to create vm extensions in `director-config.yml`,
from the [Deploy Director](#deploy-the-director) step,
you may need to create an ops file similar to one of the ops file above
to use those extensions in your Concourse deployment.
Create a user in the BOSH CredHub for Concourse basic auth.
export ADMIN_USERNAME=admin
export ADMIN_PASSWORD=password
credhub set \
-n /p-bosh/concourse/local_user \
-t user \
-z "${ADMIN_USERNAME}" \
-w "${ADMIN_PASSWORD}"
From your working directory, run BOSH deploy.
bosh -n -d concourse deploy concourse-bosh-deployment/cluster/concourse.yml \
-o concourse-bosh-deployment/cluster/operations/privileged-http.yml \
-o concourse-bosh-deployment/cluster/operations/privileged-https.yml \
-o concourse-bosh-deployment/cluster/operations/basic-auth.yml \
-o concourse-bosh-deployment/cluster/operations/tls-vars.yml \
-o concourse-bosh-deployment/cluster/operations/tls.yml \
-o concourse-bosh-deployment/cluster/operations/uaa.yml \
-o concourse-bosh-deployment/cluster/operations/credhub-colocated.yml \
-o concourse-bosh-deployment/cluster/operations/offline-releases.yml \
-o concourse-bosh-deployment/cluster/operations/backup-atc-colocated-web.yml \
-o concourse-bosh-deployment/cluster/operations/secure-internal-postgres.yml \
-o concourse-bosh-deployment/cluster/operations/secure-internal-postgres-bbr.yml \
-o concourse-bosh-deployment/cluster/operations/secure-internal-postgres-uaa.yml \
-o concourse-bosh-deployment/cluster/operations/secure-internal-postgres-credhub.yml \
-o repo/ops-files/credhub-on-port-8000.yml \
-o operations.yml \
-l <(om interpolate --config vars.yml --vars-file terraform-outputs.yml) \
-l concourse-bosh-deployment/versions.yml
You might think you already have a CredHub and UAA on the BOSH Director. The CredHub and UAA releases Operations Manager deployed alongside the BOSH Director cannot be scaled out.
When you have finished deploying Concourse, see Connecting to Concourse, CredHub, and UAA for information about connecting to and testing Concourse, CredHub, and UAA.