'How to configure CircleCI IaC Terraform pipeline to provision AWS Services on multiple environments?

I have created a CircleCI pipeline to provision an S3 bucket on AWS.

I would like to configure this pipeline to provision S3 on multiple environments like DEV, SIT, UAT etc.

I am not sure how to configure this pipeline to run for multiple env (using different tfvars for each env)

So i would be using s3_dev.tfvars to provision dev env, s3_sit.tfvars to provision sit and so on.

Is there a way to pass a parameter at runtime (containing the env which i would like to provision) which I could check in config.yml and accordngly select the tfvars for that env and run the pipeline using that tfvars?

Please advise.

version: '2.1'
orbs:
  terraform: 'circleci/[email protected]'
jobs:
  single-job-lifecycle:
    executor: terraform/default
    steps:
      - checkout
      - run:
          command: >-
                GIT_SSH_COMMAND='ssh -vv -i ~/.ssh/id_rsa'
                git clone https://<url>/Tfvars.git
          name: GIT Clone TFvars repository
      - terraform/init:
          path: .
      - terraform/validate:
          path: .
      - run:
          name: "terraform plan"
          command: terraform plan -var-file "./Tfvars/tfvars/dev/s3.tfvars"
      - run:
          name: "terraform apply"
          command: terraform apply -auto-approve -var-file "./Tfvars/tfvars/dev/s3.tfvars"
    working_directory: ~/src
workflows:
  single-job-lifecycle:
    jobs:
      - single-job-lifecycle


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source