{"id":12956,"date":"2023-08-17T02:44:42","date_gmt":"2023-08-17T02:44:42","guid":{"rendered":"https:\/\/www.devopsschool.com\/blog\/?p=12956"},"modified":"2023-08-17T02:46:45","modified_gmt":"2023-08-17T02:46:45","slug":"terraform-conditioning-example-program","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/terraform-conditioning-example-program\/","title":{"rendered":"Terraform Tutorials: How to set condition in Terraform Program?"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Method 1: conditional expression<\/h2>\n\n\n\n<p>Terraform doesn\u2019t support if statements. Luckily we can achieve the same result by using a specific parameter called count.<br>You can think about it this way: you can set count to 1 on a specific resource and get one copy of that resource.<br>However, setting the same count parameter to 0 you won\u2019t get any resource created.<\/p>\n\n\n\n<p>If condition is true then the result is true_val. If condition is false then the result is false_val.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity\"\/>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">CONDITION<\/span>&gt;<\/span> ? <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">TRUE_VAL<\/span>&gt;<\/span> <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">FALSE_VAL<\/span>&gt;<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-css-opacity\"\/>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">resource <span class=\"hljs-string\">\"aws_instance\"<\/span> <span class=\"hljs-string\">\"example\"<\/span> {\r\n  ami           = <span class=\"hljs-string\">\"ami-053b0d53c279acc90\"<\/span>\r\n  instance_type = <span class=\"hljs-string\">\"t2.micro\"<\/span>\r\n  count         = <span class=\"hljs-keyword\">var<\/span>.create_instance ? <span class=\"hljs-number\">1<\/span> : <span class=\"hljs-number\">0<\/span>\r\n\r\n  tags = {\r\n    Name = <span class=\"hljs-string\">\"My EC2 Instance\"<\/span>\r\n  }\r\n}\r\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Method 2: Depends_on<\/h2>\n\n\n\n<p>Implicit dependencies are the primary way that Terraform understands the relationships between your resources. Sometimes there are dependencies between resources that are not visible to Terraform, however. The depends_on argument is accepted by any resource or module block and accepts a list of resources to create explicit dependencies for.<\/p>\n\n\n\n<p>Add the following to main.tf. Since both the instance and the SQS Queue are dependent upon the S3 Bucket, Terraform waits until the bucket is created to begin creating the other two resources.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">\nvariable <span class=\"hljs-string\">\"instance_type\"<\/span> {\n  <span class=\"hljs-keyword\">default<\/span> = <span class=\"hljs-string\">\"t2.micro\"<\/span>\n}\n\nresource <span class=\"hljs-string\">\"aws_instance\"<\/span> <span class=\"hljs-string\">\"example\"<\/span> {\n  ami           = <span class=\"hljs-string\">\"ami-053b0d53c279acc90\"<\/span>\n  instance_type = <span class=\"hljs-keyword\">var<\/span>.instance_type\n\n  tags = {\n    Name = <span class=\"hljs-string\">\"My EC2 Instance\"<\/span>\n  }\n}\n\nresource <span class=\"hljs-string\">\"aws_s3_bucket\"<\/span> <span class=\"hljs-string\">\"example_bucket\"<\/span> {\n  depends_on = &#91;aws_instance.example]\n  bucket     = <span class=\"hljs-string\">\"my-unique-bucket-name\"<\/span>\n  acl        = <span class=\"hljs-string\">\"private\"<\/span>\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-css-opacity\"\/>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">resource <span class=\"hljs-string\">\"aws_s3_bucket\"<\/span> <span class=\"hljs-string\">\"example\"<\/span> {\n  acl    = <span class=\"hljs-string\">\"private\"<\/span>\n}\n\nresource <span class=\"hljs-string\">\"aws_instance\"<\/span> <span class=\"hljs-string\">\"example_c\"<\/span> {\n  ami           = data.aws_ami.amazon_linux.id\n  instance_type = <span class=\"hljs-string\">\"t2.micro\"<\/span>\n\n  depends_on = &#91;aws_s3_bucket.example]\n}\n\n<span class=\"hljs-built_in\">module<\/span> <span class=\"hljs-string\">\"example_sqs_queue\"<\/span> {\n  source  = <span class=\"hljs-string\">\"terraform-aws-modules\/sqs\/aws\"<\/span>\n  version = <span class=\"hljs-string\">\"2.1.0\"<\/span>\n\n  depends_on = &#91;aws_s3_bucket.example, aws_instance.example_c]\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-css-opacity\"\/>\n\n\n\n<script src=\"https:\/\/gist.github.com\/devops-school\/aac31eb1bfac1c4a63be58b0cf2573c8.js\"><\/script>\n\n\n\n<h2 class=\"wp-block-heading\">Example code for terraform calling multiple modules in dependson<\/h2>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-comment\"># main.tf<\/span>\nmodule <span class=\"hljs-string\">\"module1\"<\/span> {\n  source = <span class=\"hljs-string\">\".\/module1\"<\/span>\n}\n\nmodule <span class=\"hljs-string\">\"module2\"<\/span> {\n  source = <span class=\"hljs-string\">\".\/module2\"<\/span>\n}\n\nresource <span class=\"hljs-string\">\"aws_instance\"<\/span> <span class=\"hljs-string\">\"example\"<\/span> {\n  ami           = <span class=\"hljs-string\">\"ami-0c55b159cbfafe1f0\"<\/span>\n  instance_type = <span class=\"hljs-string\">\"t2.micro\"<\/span>\n\n  depends_on = &#91;\n    module.module1,\n    module.module2\n  ]\n}\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>In this example, we have two modules, <code>module1<\/code> and <code>module2<\/code>, and an EC2 instance defined in the <code>aws_instance<\/code> resource. The <code>depends_on<\/code> argument specifies that the instance should be created only after both <code>module1<\/code> and <code>module2<\/code> have been created.<\/p>\n\n\n<div class=\"epyt-gallery\" data-currpage=\"1\" id=\"epyt_gallery_16954\"><iframe loading=\"lazy\"  id=\"_ytid_40986\"  width=\"760\" height=\"427\"  data-origwidth=\"760\" data-origheight=\"427\" src=\"https:\/\/www.youtube.com\/embed\/?enablejsapi=1&#038;autoplay=0&#038;cc_load_policy=0&#038;cc_lang_pref=&#038;iv_load_policy=1&#038;loop=0&#038;rel=1&#038;fs=1&#038;playsinline=0&#038;autohide=2&#038;theme=dark&#038;color=red&#038;controls=1&#038;disablekb=0&#038;\" class=\"__youtube_prefs__  no-lazyload\" title=\"YouTube player\"  data-epytgalleryid=\"epyt_gallery_16954\"  allow=\"fullscreen; accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen data-no-lazy=\"1\" data-skipgform_ajax_framebjll=\"\"><\/iframe><div class=\"epyt-gallery-list\"><div>Sorry, there was a YouTube error.<\/div><\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>Method 1: conditional expression Terraform doesn\u2019t support if statements. Luckily we can achieve the same result by using a specific parameter called count.You can think about it this way: you&#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[5129],"tags":[],"class_list":["post-12956","post","type-post","status-publish","format-standard","hentry","category-terraform"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/12956","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=12956"}],"version-history":[{"count":8,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/12956\/revisions"}],"predecessor-version":[{"id":38339,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/12956\/revisions\/38339"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=12956"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=12956"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=12956"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}