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
108 Views Asked by Mika Drakolis At
1
There are 1 best solutions below
Related Questions in TERRAFORM
- Why does a function show up as not defined
- CSV to XML XSLT: How to quote excape
- how to apply templates within xsl:for-each
- Java StreamSource from file in web application project
- How to move an attribute and its value from one element to another
- current index value in xsl
- XSLT list item position issue
- Error including one xslt to another
- xsl:fo how to check new page appears and special ouput
- Limit XSLT Variable to single character
Related Questions in TERRAFORM-PROVIDER-AWS
- Why does a function show up as not defined
- CSV to XML XSLT: How to quote excape
- how to apply templates within xsl:for-each
- Java StreamSource from file in web application project
- How to move an attribute and its value from one element to another
- current index value in xsl
- XSLT list item position issue
- Error including one xslt to another
- xsl:fo how to check new page appears and special ouput
- Limit XSLT Variable to single character
Related Questions in TERRAFORM-PROVIDER-DOCKER
- Why does a function show up as not defined
- CSV to XML XSLT: How to quote excape
- how to apply templates within xsl:for-each
- Java StreamSource from file in web application project
- How to move an attribute and its value from one element to another
- current index value in xsl
- XSLT list item position issue
- Error including one xslt to another
- xsl:fo how to check new page appears and special ouput
- Limit XSLT Variable to single character
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_on
meta-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_on
block defined.If you want to use modules there is also a way to pass the information between them using
output
values [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