Terraform 0.11

aws_codedeploy_deployment_group




terraform

aws_codedeploy_deployment_group

एक CodeDeploy Application के लिए एक CodeDeploy तैनाती समूह प्रदान करता है

उदाहरण उपयोग

resource "aws_iam_role" "example" {
  name = "example-role"

  assume_role_policy = <<EOF
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "codedeploy.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
EOF
}

resource "aws_iam_role_policy_attachment" "AWSCodeDeployRole" {
  policy_arn = "arn:aws:iam::aws:policy/service-role/AWSCodeDeployRole"
  role       = "${aws_iam_role.example.name}"
}

resource "aws_codedeploy_app" "example" {
  name = "example-app"
}

resource "aws_sns_topic" "example" {
  name = "example-topic"
}

resource "aws_codedeploy_deployment_group" "example" {
  app_name              = "${aws_codedeploy_app.example.name}"
  deployment_group_name = "example-group"
  service_role_arn      = "${aws_iam_role.example.arn}"

  ec2_tag_set {
    ec2_tag_filter {
      key   = "filterkey1"
      type  = "KEY_AND_VALUE"
      value = "filtervalue"
    }

    ec2_tag_filter {
      key   = "filterkey2"
      type  = "KEY_AND_VALUE"
      value = "filtervalue"
    }
  }

  trigger_configuration {
    trigger_events     = ["DeploymentFailure"]
    trigger_name       = "example-trigger"
    trigger_target_arn = "${aws_sns_topic.example.arn}"
  }

  auto_rollback_configuration {
    enabled = true
    events  = ["DEPLOYMENT_FAILURE"]
  }

  alarm_configuration {
    alarms  = ["my-alarm-name"]
    enabled = true
  }
}

ब्लू ग्रीन तैनाती का उपयोग करना

resource "aws_codedeploy_app" "example" {
  name = "example-app"
}

resource "aws_codedeploy_deployment_group" "example" {
  app_name              = "${aws_codedeploy_app.example.name}"
  deployment_group_name = "example-group"
  service_role_arn      = "${aws_iam_role.example.arn}"

  deployment_style {
    deployment_option = "WITH_TRAFFIC_CONTROL"
    deployment_type   = "BLUE_GREEN"
  }

  load_balancer_info {
    elb_info {
      name = "example-elb"
    }
  }

  blue_green_deployment_config {
    deployment_ready_option {
      action_on_timeout    = "STOP_DEPLOYMENT"
      wait_time_in_minutes = 60
    }

    green_fleet_provisioning_option {
      action = "DISCOVER_EXISTING"
    }

    terminate_blue_instances_on_deployment_success {
      action = "KEEP_ALIVE"
    }
  }
}

तर्क संदर्भ

निम्नलिखित तर्क समर्थित हैं:

  • app_name - (आवश्यक) आवेदन का नाम।
  • deployment_group_name - (आवश्यक) परिनियोजन समूह का नाम।
  • service_role_arn - (आवश्यक) सेवा रोल ARN जो परिनियोजन की अनुमति देता है।
  • autoscaling_groups - (वैकल्पिक) परिनियोजन समूह के साथ संबद्ध ऑटोसालिंग समूह।
  • deployment_config_name - (वैकल्पिक) समूह की परिनियोजन कॉन्फ़िगरेशन का नाम। डिफ़ॉल्ट "CodeDeployDefault.OneAtATime" है।
  • ec2_tag_filter - (वैकल्पिक) परिनियोजन समूह से संबंधित टैग फ़िल्टर। विवरण के लिए AWS डॉक्स देखें।
  • ec2_tag_set - (वैकल्पिक) परिनियोजन समूह से संबंधित टैग फ़िल्टर के समूह, जिन्हें दस्तावेज़ में टैग समूहों के रूप में संदर्भित किया जाता है। विवरण के लिए AWS डॉक्स देखें।
  • on_premises_instance_tag_filter - (वैकल्पिक) समूह से जुड़े आधार टैग फ़िल्टर पर। विवरण के लिए AWS डॉक्स देखें।
  • trigger_configuration - (वैकल्पिक) तैनाती समूह के लिए ट्रिगर कॉन्फ़िगरेशन (नीचे दस्तावेज)।
  • auto_rollback_configuration - (वैकल्पिक) परिनियोजन समूह (नीचे दस्तावेज़ में) के साथ संबद्ध स्वचालित रोलबैक कॉन्फ़िगरेशन।
  • alarm_configuration - (वैकल्पिक) परिनियोजन समूह (नीचे प्रलेखित) से जुड़े अलार्म के बारे में जानकारी।
  • deployment_style - (वैकल्पिक) परिनियोजन के प्रकार के बारे में जानकारी, इन-प्लेस या ब्लू / ग्रीन, आप चलाना चाहते हैं और लोड बैलेंसर (नीचे दस्तावेज) के पीछे परिनियोजन ट्रैफ़िक को रूट करना है या नहीं।
  • load_balancer_info - (वैकल्पिक) ब्लू / ग्रीन परिनियोजन (नीचे प्रलेखित) में उपयोग करने के लिए लोड बैलेंसर के बारे में जानकारी।
  • blue_green_deployment_config - (वैकल्पिक) एक तैनाती समूह (नीचे दस्तावेज) के लिए नीले / हरे रंग की तैनाती के विकल्प के बारे में जानकारी।

टैग फ़िल्टर

दोनों ec2_tag_filter और on_premises_tag_filter निम्नलिखित का समर्थन करते हैं:

  • key - (वैकल्पिक) टैग फ़िल्टर की कुंजी।
  • type - (वैकल्पिक) टैग फ़िल्टर का प्रकार, या तो KEY_ONLY , VALUE_ONLY या KEY_AND_VALUE
  • value - (वैकल्पिक) टैग फ़िल्टर का मूल्य।

ec2_tag_filter की कई घटनाओं को अनुमति दी जाती है, जहां कम से कम एक टैग फ़िल्टर से मेल खाने वाले किसी भी उदाहरण का चयन किया जाता है।

टैग समूह

आप ec2_tag_set में टैग फ़िल्टर का एक सेट लगाकर एक टैग समूह बना सकते हैं। यदि कई टैग समूह निर्दिष्ट किए जाते हैं, तो प्रत्येक टैग समूह के कम से कम एक टैग फ़िल्टर से मेल खाने वाला कोई भी उदाहरण चुना जाता है।

ट्रिगर कॉन्फ़िगरेशन

समूह में परिनियोजन या उदाहरण से संबंधित घटनाओं के बारे में सूचनाएं प्राप्त करने के लिए एक तैनाती समूह में ट्रिगर जोड़ें। ट्रिगर से जुड़े SNS विषय के ग्राहकों को सूचनाएं भेजी जाती हैं। CodeDeploy को इस परिनियोजन समूह से विषय को प्रकाशित करने की अनुमति होनी चाहिए trigger_configuration निम्नलिखित का समर्थन करता है:

  • trigger_events - (आवश्यक) घटना प्रकार या प्रकार जिसके लिए सूचनाएं ट्रिगर की जाती हैं। कुछ मान जो समर्थित हैं: DeploymentStart , DeploymentSuccess , DeploymentFailure , DeploymentStop , DeploymentRollback , InstanceStart , InstanceSuccess , InstanceFailure । सभी संभावित मूल्यों के लिए कोडडिप्लॉय प्रलेखन देखें।
  • trigger_name - (आवश्यक) अधिसूचना ट्रिगर का नाम।
  • trigger_target_arn - (आवश्यक) SNS विषय का ARN जिसके माध्यम से सूचनाएं भेजी जाती हैं।

ऑटो रोलबैक कॉन्फ़िगरेशन

आप एक तैनाती समूह को स्वचालित रूप से रोलबैक करने के लिए कॉन्फ़िगर कर सकते हैं जब एक तैनाती विफल हो जाती है या जब आपके द्वारा निर्दिष्ट एक निगरानी सीमा पूरी होती है। इस स्थिति में, अनुप्रयोग संशोधन का अंतिम ज्ञात अच्छा संस्करण परिनियोजित किया जाता है। auto_rollback_configuration निम्नलिखित का समर्थन करता है:

  • enabled - (वैकल्पिक) इंगित करता है कि क्या इस परिनियोजन समूह के लिए एक परिभाषित स्वचालित रोलबैक कॉन्फ़िगरेशन वर्तमान में सक्षम है। यदि आप स्वचालित रोलबैक सक्षम करते हैं, तो आपको कम से कम एक ईवेंट प्रकार निर्दिष्ट करना होगा।
  • events - (वैकल्पिक) घटना प्रकार या प्रकार जो एक रोलबैक को ट्रिगर करते हैं। समर्थित प्रकार DEPLOYMENT_FAILURE और DEPLOYMENT_STOP_ON_ALARM

केवल एक `ऑटोलरैक कॉन्फ़िगरेशन` की अनुमति है।

अलार्म कॉन्फ़िगरेशन

क्लाउडवॉच अलार्म का पता लगाता है कि एक मीट्रिक नीचे से नीचे गिर गया है या परिभाषित सीमा से अधिक हो गया है, तो आप रोकने के लिए परिनियोजन को कॉन्फ़िगर कर सकते हैं। alarm_configuration निम्नलिखित का समर्थन करता है:

  • alarms - (वैकल्पिक) परिनियोजन समूह के लिए कॉन्फ़िगर किए गए अलार्म की एक सूची। एक तैनाती समूह में अधिकतम 10 अलार्म जोड़े जा सकते हैं
  • enabled - (वैकल्पिक) इंगित करता है कि अलार्म कॉन्फ़िगरेशन सक्षम है या नहीं। यह विकल्प तब उपयोगी होता है जब आप बाद में फिर से समान अलार्म जोड़ने के लिए एक तैनाती समूह के लिए अलार्म निगरानी को अस्थायी रूप से निष्क्रिय करना चाहते हैं।
  • ignore_poll_alarm_failure - (वैकल्पिक) इंगित करता है कि क्या तैनाती जारी रहनी चाहिए अगर अलार्म की वर्तमान स्थिति के बारे में जानकारी CloudWatch से पुनर्प्राप्त नहीं की जा सकती है। डिफ़ॉल्ट मान false
    • true : तैनाती तब भी आगे बढ़ेगी जब अलार्म की स्थिति की जानकारी पुनः प्राप्त नहीं की जा सकती है।
    • false : अलार्म स्थिति की जानकारी पुनर्प्राप्त नहीं की जा सकती तो परिनियोजन रुक जाएगा।

केवल एक alarm_configuration की अनुमति है

तैनाती शैली

आप तैनाती के प्रकार को कॉन्फ़िगर कर सकते हैं, या तो इन-प्लेस या ब्लू / ग्रीन, आप चलाना चाहते हैं और लोड बैलेंसर के पीछे तैनाती ट्रैफ़िक को रूट करना चाहते हैं या नहीं। deployment_style निम्नलिखित का समर्थन करता है:

  • deployment_option - (वैकल्पिक) इंगित करता है कि लोड बैलेंसर के पीछे परिनियोजन ट्रैफ़िक को रूट करें या नहीं। वैध मान WITH_TRAFFIC_CONTROL या WITHOUT_TRAFFIC_CONTROL

  • deployment_type - (वैकल्पिक) इंगित करता है कि इन-प्लेस परिनियोजन या ब्लू / ग्रीन परिनियोजन चलाना है या नहीं। वैध मान IN_PLACE या BLUE_GREEN

केवल एक deployment_style की अनुमति है

लोड बैलेंसर जानकारी

आप परिनियोजन में उपयोग करने के लिए लोड बैलेंसर को कॉन्फ़िगर कर सकते हैं। load_balancer_info निम्नलिखित का समर्थन करता है:

  • elb_info - (वैकल्पिक) एक तैनाती में उपयोग करने के लिए लोड बैलेंसर।
  • target_group_info - (वैकल्पिक) एक परिनियोजन में उपयोग करने के लिए लक्षित समूह।

load_balancer_info केवल एक load_balancer_info प्रति परिनियोजन समूह समर्थित है।

elb_info निम्नलिखित का समर्थन करता है:

  • name - (वैकल्पिक) लोड बैलेंसर का नाम जो मूल उदाहरणों से यातायात को नीले / हरे रंग में तैनाती में बदलने के लिए उपयोग किया जाएगा। इन-प्लेस परिनियोजन के लिए, लोड बैलेंसर का नाम जो इंस्टेंसेस से हटा दिया गया है, इसलिए वे परिनियोजन के दौरान ट्रैफ़िक की सेवा नहीं कर रहे हैं, और फिर परिनियोजन पूर्ण होने के बाद फिर से पंजीकृत किया जाता है।

target_group_info निम्नलिखित का समर्थन करता है:

  • name - (ऑप्शनल) लक्ष्य समूह का नाम जो मूल वातावरण में इंस्टेंसेस से डीरजिस्टर किया जाता है, और उसके साथ पंजीकृत प्रतिस्थापन वातावरण में इंस्टेंसेस। इन-प्लेस परिनियोजन के लिए, लक्षित समूह का नाम जिसे इंस्टेंस से हटा दिया गया है, इसलिए वे परिनियोजन के दौरान ट्रैफ़िक की सेवा नहीं कर रहे हैं, और तब परिनियोजन पूर्ण होने के बाद फिर से पंजीकृत किया जाता है।

तैनाती में केवल एक ही elb_info या target_group_info का इस्तेमाल किया जा सकता है।

ब्लू ग्रीन परिनियोजन कॉन्फ़िगरेशन

आप नीली / हरी तैनाती के लिए विकल्पों को कॉन्फ़िगर कर सकते हैं। blue_green_deployment_config निम्नलिखित का समर्थन करता है:

  • deployment_ready_option - (वैकल्पिक) कार्रवाई के बारे में जानकारी जब नव प्रावधानित उदाहरण एक नीली / हरी तैनाती (नीचे दस्तावेज) में यातायात प्राप्त करने के लिए तैयार हैं।

  • green_fleet_provisioning_option - (वैकल्पिक) एक नीली / हरी तैनाती (नीचे दस्तावेज में) के प्रतिस्थापन पर्यावरण के लिए कैसे उदाहरणों के बारे में जानकारी दी गई है।

  • terminate_blue_instances_on_deployment_success - (वैकल्पिक) जानकारी के बारे में कि क्या ब्लू / ग्रीन परिनियोजन (नीचे प्रलेखित) के दौरान मूल बेड़े में उदाहरणों को समाप्त करना है।

केवल एक blue_green_deployment_config की अनुमति है

आप कॉन्फ़िगर कर सकते हैं कि नीली / हरी परिनियोजन में प्रतिस्थापन वातावरण में ट्रैफ़िक को कैसे पुन: व्यवस्थित किया जाता है। deployment_ready_option ही निम्नलिखित का समर्थन करता है:

  • action_on_timeout - (वैकल्पिक) जब मूल वातावरण से ट्रैफ़िक को एक नीली / हरी परिनियोजन में प्रतिस्थापन वातावरण में फिर से action_on_timeout

    • CONTINUE_DEPLOYMENT : प्रतिस्थापन वातावरण में इंस्टेंस पर नया एप्लिकेशन संशोधन स्थापित होने के तुरंत बाद लोड बैलेंसर के साथ नए इंस्टेंसेस पंजीकृत करें।
    • STOP_DEPLOYMENT : जब तक ट्रैफ़िक मैन्युअल रूप से पुन: STOP_DEPLOYMENT नहीं किया जाता है, तब तक लोड बैलेंसर के साथ नए इंस्टेंसेस पंजीकृत न करें। यदि निर्दिष्ट प्रतीक्षा अवधि के अंत से पहले ट्रैफ़िक को मैन्युअल रूप से फिर से चालू नहीं किया जाता है, तो तैनाती स्थिति को स्टॉप्ड में बदल दिया जाता है।
  • wait_time_in_minutes - (वैकल्पिक) एक नीली / हरी तैनाती की स्थिति से पहले प्रतीक्षा करने के लिए मिनटों की संख्या को रोक दिया गया यदि मैन्युअल रूप से पुन: प्रारंभ नहीं किया गया है। केवल STOP_DEPLOYMENT लिए STOP_DEPLOYMENT विकल्प पर लागू होता है।

आप कॉन्फ़िगर कर सकते हैं कि ब्लू / ग्रीन परिनियोजन में प्रतिस्थापन वातावरण में कैसे इंस्टेंस जोड़े जाएंगे। green_fleet_provisioning_option निम्नलिखित का समर्थन करता है:

  • action - (वैकल्पिक) प्रतिस्थापन वातावरण में उदाहरण जोड़ने के लिए उपयोग की जाने वाली विधि।

    • DISCOVER_EXISTING : ऐसे उदाहरणों का उपयोग करें जो पहले से मौजूद हैं या मैन्युअल रूप से बनाए जाएंगे।
    • COPY_AUTO_SCALING_GROUP : एक नए ऑटो स्केलिंग समूह में उदाहरणों को परिभाषित करने और बनाने के लिए एक निर्दिष्ट ऑटो स्केलिंग समूह से सेटिंग का उपयोग करें। COPY_AUTO_SCALING_GROUP चयन करते समय सटीक रूप से एक ऑटो स्केलिंग समूह COPY_AUTO_SCALING_GROUP किया जाना चाहिए । ऑटो स्केलिंग समूह को निर्दिष्ट करने के लिए autoscaling_groups का उपयोग करें।

आप कॉन्फ़िगर कर सकते हैं कि जब नीले / हरे रंग की तैनाती सफल होती है, तो मूल वातावरण में उदाहरण कैसे समाप्त हो जाते हैं। terminate_blue_instances_on_deployment_success निम्नलिखित का समर्थन करता है:

  • action - (वैकल्पिक) एक सफल नीले / हरे रंग की तैनाती के बाद मूल वातावरण में उदाहरणों पर कार्रवाई करने के लिए।

    • TERMINATE : एक निर्दिष्ट प्रतीक्षा समय के बाद उदाहरण समाप्त हो जाते हैं।
    • KEEP_ALIVE : लोड बैलेंसर से हटाए जाने और परिनियोजन समूह से निकाले जाने के बाद इंस्टेंस चल रहे हैं।
  • termination_wait_time_in_minutes - (वैकल्पिक) मूल वातावरण से उदाहरण समाप्त करने से पहले एक सफल नीले / हरे रंग की तैनाती के बाद प्रतीक्षा करने के लिए मिनट की संख्या।

संदर्भ संदर्भित करता है

उपरोक्त सभी तर्कों के अलावा, निम्नलिखित विशेषताएँ निर्यात की जाती हैं:

  • id - तैनाती समूह की आईडी।
  • app_name - समूह का असाइन किया गया एप्लिकेशन।
  • deployment_group_name - समूह का नाम।
  • service_role_arn - समूह की सेवा भूमिका ARN।
  • autoscaling_groups - आटोस्कलिंग समूह परिनियोजन समूह से संबंधित है।
  • deployment_config_name - समूह की परिनियोजन कॉन्फ़िगरेशन का नाम।