Set up concourse-bosh-deployment Directory on Your Local Machine

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.

  1. Create a directory called concourse-bosh-deployment in your working directory:

    mkdir concourse-bosh-deployment
    
  2. Untar the concourse-bosh-deployment.tgz file downloaded from the Broadcom Support portal

    tar -C concourse-bosh-deployment -xzf concourse-bosh-deployment.tgz
    

Deploy with BOSH

The deployment instructions below deploy the following:

  • A Concourse worker VM
  • A Concourse web VM with co-located CredHub and UAA
  • A Postgres Database VM
  • A single user for logging in to Concourse with basic auth

All files should be created in your working directory.

  1. 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.
  2. 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.
    
  3. 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}"
    
  4. 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
    

Note 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.

Next Steps

When you have finished deploying Concourse, see Connecting to Concourse, CredHub, and UAA for information about connecting to and testing Concourse, CredHub, and UAA.

check-circle-line exclamation-circle-line close-line
Scroll to top icon