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
120 Views Asked by Mika Drakolis At
1
There are 1 best solutions below
Related Questions in TERRAFORM
- Terraform: associate an aws_iam_role with an aws_iam_policy
- How to change the subnet association from one route table to another route table using terraform?
- How to avoid the destroy action in terraform apply?
- Is there a way to create EMR security config with CloudFormation/Terraform
- Referring to variables in another terraform file you can't modify
- EC2 instances launched via Terraform do not pass the status checks or have insufficient data
- Recreate Same Security Group Rule Each time I execute "terrafrom apply/plan"
- Trouble setting terraform variable from CLI
- Terraform -var-file not working for file present in the same directory
- How to get the most recent ebs snapshot using terraform datasource?
- protocol Tcp with floatingIP disabled, must not be used with the same backend IP
- Shell script producing the escaping character (\) with escaped double qoutes
- vpc_zone_identifier should be a list
- Building a custom terraform provider errors out
- Create AWS RDS instance in non default VPC using terraform
Related Questions in TERRAFORM-PROVIDER-AWS
- How to make Terraform to read AWS Credentials file?
- conditionally add load_balancer to aws_ecs_service in terraform
- Take ECS Task Definition environment variables from Terraform input variables
- Terraform: lambda_function_association cloudfront distribution s3 origin m
- Terraform Error: Incorrect attribute value type for subnet_ids vpc modules
- How to add the same IAM role to assume_role_policy with Terraform?
- Referencing Terraform resource created in a different folder
- Terraform how to register known private ip address in target group of type "ip"
- Terraform - Multiple accounts with multiple environments (regions)
- Terraform is giving an error: "unsupported argument in module when running terraform plan"
- Migrate terraform modules to updated provider format
- terraform error: unsupported argument in module in tf plan
- Terraform to setup AWS Codepipline Notification Rule
- AWS WAF: How to block requests that do not contain a particular header using Terraform
- Terraform fails first time for ECS and Load Balancer
Related Questions in TERRAFORM-PROVIDER-DOCKER
- Terraform Docker Provider: Any way to execute command ON the Docker host?
- Terraform Docker Provider: "Bind" port to specific network
- Terraform: Specify specific Docker Network Name for Output
- panic: runtime error: index out of range when building docker image with terraform-provider-docker in github action runner
- How to save docker logs in terraform
- How to select correct docker provider in terraform 0.14
- "Force" docker image creation in Terraform with docker_registry_image (kreuzwerker/docker)
- How can I make the Docker provider in Terraform wait for an address to become available before attempting to connect to it?
- How I config zk port for kafka in terraform
- Terraform - Cross provider resource config inheritance
- Setting Docker network as external via Terraform
- Use terraform to push docker image to azure container registry
- using the docker provider with terraform cloud throws "Cannot connect to the Docker daemon at unix:///var/run/docker.sock"
- Terraform issue on macOs
- Terraform asks for passphrase to Docker Host on each step
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 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