Need complete suggested work flow for my use case

Actually we bulit webapp from there we are passing variables to the terraform by

like below

terraform apply -input=false -auto-approve -var ami="%ami%" -var region="%region%" -var icount="%count%" -var type="%instance_type%"

My main.tf like below

terraform {
backend “s3” {
bucket = “terraform-007”
key = “key”
region = “ap-south-1”
profile=“venu”
}
}
provider “aws” {
profile = “{var.aws_profile}" region = "{var.aws_region}”
}

resource “aws_instance” “VM” {

count = var.icount
ami = var.ami
instance_type = var.type

tags = {
Environment = “${var.env_indicator}”
}

}

vars.tf like

variable “aws_profile” {
default = “default”
description = “AWS profile name, as set in ~/.aws/credentials”
}

variable “aws_region” {
type = “string”
default = “ap-south-1”
description = “AWS region in which to create resources”
}

variable “env_indicator” {
type = “string”
default = “dev”
description = “What environment are we in?”
}

variable “icount” {

default = 1

}

variable “ami” {

default =“ami-54d2a63b”

}

variable “bucket”{

default=“terraform-002”
}

variable “type” {

default=“t2.micro”

}

output.tf like:

output “ec2_public_ip” {
value = ["${aws_instance.VM.*.public_ip}"]

}

output “ec2_private_ip” {
value = ["${aws_instance.VM.*.private_ip}"]

}

Actually the problem here was backend does not support variables i need to pass there values also form app.

Need some alternative approach to resolve this

I am using jenkins parameterized job to pass the values.

Can some one explain me the best workflow for me.

I mean file structure,ci/cd intergration and all.

Thanks in advance.