I only recently started figuring out how Terraform works, but I have a very specific problem that I need to address and I cannot find an easy way to do it so far. I would like to setup terraform config in such a way, that there is a shared part of configuration between two different providers, in my case AWS and Docker. For example, if I have a Postgres database and a VM with nginx, I would like to have some sort of "base" resource, which I can "inherit" from in more detailed Docker and AWS setups. I imagine I can use variables for that, but that will not work if I have to add some configuration lines to those containers, I will have to add a variable description and extra line in 2 module configurations, for Docker and AWS separately. Is there a way to do it "OOP" style, with some sort of inheritance?
Terraform - Cross provider resource config inheritance
121 Views Asked by Mika Drakolis At
1
There are 1 best solutions below
Related Questions in TERRAFORM
- Why does terraform aws_cognito_user_pool always show as "updated in-place" on every single terraform plan?
- Terraform - loop over complex data in data source
- Terraform cidrsubnets
- Encountered an error (ServiceUnavailable) from host runtime on Azure Function App
- Problem to add service principal permissions with terraform
- Multiple resources for the depends_on dependencies is throwing an Error
- Parametrizing backend in terraform on gcp
- AWS EKS Fargate pod scheduling issue with Prometheus deployment
- Terraform valdiate that one of N variables is set to "true"
- How to assign a value to a string variable, that includes embedded '=' in the value
- Terraform loop over Map variable to provision multiple Databricks catalogs
- Terraform OCI error when creating Network Load Balancer
- logiapp teams api connection terraform user sign in
- Difference between google_project_iam_* and other google_*_iam_* resources
- JSON representation of the current Terraform configuration
Related Questions in TERRAFORM-PROVIDER-AWS
- Terraform - loop over complex data in data source
- Terraform cidrsubnets
- Multiple resources for the depends_on dependencies is throwing an Error
- Terraform/AWS - Error while acquiring state lock
- Terraform: how to create a reusable module to create aws security groups
- Preventing Terraform from assigning reserved IP addresses to resources
- different instance in different environment provision using terraform
- Terraform Creating 2 Security groups
- Struggling to (if even possible) pass a dynamic provider.alias in a module for_each block
- Exporting openAPI specification with terraform + apigateway + AWS?
- Error: Provider configuration not present - when providers.tf comes from source module
- How can I automatically delete and create a Lambda function in a different region when updating the provider in a Terraform module?
- Configure tomcat in AWS beanstalk with .ebextensions
- How to launch Amazon RDS Multi_AZ DB Cluster Deployment (Instance with 2 standby Instances) using Terraform?
- Importing existing lambda layers into terraform
Related Questions in TERRAFORM-PROVIDER-DOCKER
- Setting Docker network as external via Terraform
- Terraform This object has no argument, nested block, or exported attribute named "latest"
- How to save docker logs in terraform
- panic: runtime error: index out of range when building docker image with terraform-provider-docker in github action runner
- "Force" docker image creation in Terraform with docker_registry_image (kreuzwerker/docker)
- Terraform issue on macOs
- using the docker provider with terraform cloud throws "Cannot connect to the Docker daemon at unix:///var/run/docker.sock"
- Use terraform to push docker image to azure container registry
- Terraform docker_registry_image error: 'unable to get digest: Got bad response from registry: 400 Bad Request'
- Terraform - Cross provider resource config inheritance
- How I config zk port for kafka in terraform
- Terraform asks for passphrase to Docker Host on each step
- How to select correct docker provider in terraform 0.14
- Terraform docker cannot authenticate with container registry for remote host
- How to force delete Docker image with terraform destroy
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
There is a way to do it but not in the programming language type of thinking. By using resource arguments and attributes you can create an implicit dependency between resources, meaning that if one is updated the second should reflect that change as well [1]. An example on how to reference attributes from a resource that is created can be found in [2].
There is also an explicit type of dependency and it is defined with the
depends_onmeta-argument [3]. With it, you are telling Terraform (and the reader of the code) that something has to happen prior to creating the resource that has thedepends_onblock defined.If you want to use modules there is also a way to pass the information between them using
outputvalues [4]. Note that output values can be used even without using modules.Additionally, if you are more inclined to work with infrastructure using programming languages, there is also Terraform CDK [5].
[1] https://www.terraform.io/language/resources/behavior#resource-dependencies
[2] https://www.terraform.io/language/expressions/references#references-to-resource-attributes
[3] https://www.terraform.io/language/meta-arguments/depends_on
[4] https://www.terraform.io/language/values/outputs
[5] https://www.terraform.io/cdktf