Deploying a ROSA Classic cluster with Terraform
This content is authored by Red Hat experts, but has not yet been tested on every supported configuration.
This guide will walk you through deploying a ROSA cluster using Terraform. This is a great way to get started with ROSA and to automate the deployment of your clusters.
Pre-requisites
- You need the - gitbinary installed on your machine. You can download it from the git website .
- You need to have the - terraformbinary installed on your machine. You can download it from the Terraform website .
- You need to have the - jqbinary installed on your machine. You can download it from the jq website .
- You need to have the - ocbinary installed on your machine. You can download it from the OpenShift website .
- You need to have the - rosabinary installed on your machine. You can download it from the ROSA website .
- You need to have an OpenShift Cluster Manager (OCM) account. You can sign up for an account on the OCM website . 
- Get an OCM API token. You can do this by logging into OCM and going to the API tokens page . 
- You need to log in to OCM and create a refresh token. You can do this by running the following command: - rosa login- Use the OCM API token you created in the previous step to log in. 
ROSA Classic Cluster
- Clone down the terraform repository - git clone --depth=1 https://github.com/rh-mobb/terraform-rosa.git cd terraform-rosa
- Save some environment variables - Mac - export TF_VAR_token="$(jq -r .refresh_token ~/Library/Application\ Support/ocm/ocm.json)"- Linux - export TF_VAR_token="$(jq -r .refresh_token ~/.config/ocm/ocm.json)"- Note: You may want to customize some of these settings to match your needs. see the - variables.tffile for options.- export TF_VAR_cluster_name="$(whoami)" export TF_VAR_admin_password='Passw0rd12345!' export TF_VAR_developer_password='' export TF_VAR_private=false export TF_VAR_ocp_version=4.15.11 export TF_VAR_hosted_control_plane=false export TF_VAR_multi_az=false
- Create a Plan and Apply it - terraform init terraform plan -out tf.plan terraform apply tf.plan- If everything goes to plan, after about 45 minutes you should have a cluster available to use. - Apply complete! Resources: 0 added, 0 changed, 0 destroyed. Outputs: cluster_api_url = "https://api.pczarkow-virt.nga3.p3.openshiftapps.com:443" oidc_config_id = "2b607a5ufsjc51g41ul07k5vj12v7ivb" oidc_endpoint_url = "2b607a5ufsjc51g41ul07k5vj12v7ivb" private_subnet_azs = tolist([ "us-east-1a", ]) private_subnet_ids = tolist([ "subnet-09adee841dd979fdb", ]) public_subnet_azs = tolist([ "us-east-1a", ]) public_subnet_ids = tolist([ "subnet-0dca7ed3cddf65d87", ]) vpc_id = "vpc-0df19c93b93721ada"
- Log into OpenShift - oc login $(terraform output -raw cluster_api_url) \ --username admin --password $TF_VAR_admin_password