We have the below directory structure on the Linux system.
/root
├─dirA
│ ├─main.tf
│ ├─terraform.tfvars
│ └─variables.tf
└─dirB
└─main.tf
==FIRST==
We used the below snippet in main.tf file of dirA to create a local kubeconfig file.
resource "local_file" "kubeconfig" {
content = module.gke_auth.kubeconfig_raw
filename = "./kubeconfig"
}
Now we would like to access this kubeconfig file in the main.tf file of dirB inside the following snippet. Please suggest how to do that?
provider "kubernetes" {
config_path = "<PATH_TO_KUBECONFIG_FILE>"
}
==SECOND==
We have defined some variables inside the terraform.tfvars file of dirA and we would like to access those variables inside the main.tf file of dirB. Please suggest how to do this.
CodePudding user response:
We have solved both the issues with the setup below.
File dirA/main.tf contains something similar to
resource "local_file" "kubeconfig" {
content = module.gke_auth.kubeconfig_raw
filename = "${path.module}/kubeconfig"
}
output "kubeconfig_file" {
value = "${path.cwd}/kubeconfig"
}
File dirB/main.tf contains something similar to
data "terraform_remote_state" "kubeconfig_file" {
backend = "local"
config = {
path = "${path.module}/../dirA/terraform.tfstate"
}
}
provider "kubernetes" {
config_path = "${data.terraform_remote_state.kubeconfig_file.outputs.kubeconfig_file}"
}
Finally:
cd dirA
terraform apply
cd ../dirB
terraform apply
Note: In a similar way we can access variables from the stack in the different directory
