Terraform 0.11

aws_launch_configuration




terraform

aws_launch_configuration

एक नया लॉन्च कॉन्फ़िगरेशन बनाने के लिए एक संसाधन प्रदान करता है, जिसका उपयोग ऑटोस्कोलिंग समूहों के लिए किया जाता है।

उदाहरण उपयोग

data "aws_ami" "ubuntu" {
  most_recent = true

  filter {
    name   = "name"
    values = ["ubuntu/images/hvm-ssd/ubuntu-trusty-14.04-amd64-server-*"]
  }

  filter {
    name   = "virtualization-type"
    values = ["hvm"]
  }

  owners = ["099720109477"] # Canonical
}

resource "aws_launch_configuration" "as_conf" {
  name          = "web_config"
  image_id      = "${data.aws_ami.ubuntu.id}"
  instance_type = "t2.micro"
}

AutoScaling Group के साथ उपयोग करना

लॉन्च कॉन्फ़िगरेशन को अमेज़न वेब सेवा एपीआई के साथ निर्माण के बाद अपडेट नहीं किया जा सकता है। लॉन्च कॉन्फ़िगरेशन को अपडेट करने के लिए, Terraform मौजूदा संसाधन को नष्ट कर देगा और एक प्रतिस्थापन बनाएगा। किसी स्वतः कॉन्फ़िगरेशन समूह संसाधन के साथ लॉन्च कॉन्फ़िगरेशन संसाधन को प्रभावी ढंग से उपयोग करने के लिए, यह एक lifecycle ब्लॉक में create_before_destroy निर्दिष्ट करने के लिए अनुशंसित है। लॉन्च कॉन्फ़िगरेशन name विशेषता को छोड़ दें, या name_prefix साथ आंशिक नाम निर्दिष्ट करें। उदाहरण:

data "aws_ami" "ubuntu" {
  most_recent = true

  filter {
    name   = "name"
    values = ["ubuntu/images/hvm-ssd/ubuntu-trusty-14.04-amd64-server-*"]
  }

  filter {
    name   = "virtualization-type"
    values = ["hvm"]
  }

  owners = ["099720109477"] # Canonical
}

resource "aws_launch_configuration" "as_conf" {
  name_prefix   = "terraform-lc-example-"
  image_id      = "${data.aws_ami.ubuntu.id}"
  instance_type = "t2.micro"

  lifecycle {
    create_before_destroy = true
  }
}

resource "aws_autoscaling_group" "bar" {
  name                 = "terraform-asg-example"
  launch_configuration = "${aws_launch_configuration.as_conf.name}"
  min_size             = 1
  max_size             = 2

  lifecycle {
    create_before_destroy = true
  }
}

इस सेटअप के साथ Terraform आपके लॉन्च कॉन्फ़िगरेशन के लिए एक विशिष्ट नाम बनाता है और फिर पिछले लॉन्च कॉन्फ़िगरेशन को नष्ट करने से पहले संघर्ष के बिना AutoScaling समूह को अपडेट कर सकता है।

स्पॉट इंस्टेंस के साथ उपयोग करना

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

data "aws_ami" "ubuntu" {
  most_recent = true

  filter {
    name   = "name"
    values = ["ubuntu/images/hvm-ssd/ubuntu-trusty-14.04-amd64-server-*"]
  }

  filter {
    name   = "virtualization-type"
    values = ["hvm"]
  }

  owners = ["099720109477"] # Canonical
}

resource "aws_launch_configuration" "as_conf" {
  image_id      = "${data.aws_ami.ubuntu.id}"
  instance_type = "m4.large"
  spot_price    = "0.001"

  lifecycle {
    create_before_destroy = true
  }
}

resource "aws_autoscaling_group" "bar" {
  name                 = "terraform-asg-example"
  launch_configuration = "${aws_launch_configuration.as_conf.name}"
}

तर्क संदर्भ

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

  • name - (वैकल्पिक) लॉन्च कॉन्फ़िगरेशन का नाम। यदि आप इसे खाली छोड़ देते हैं, तो Terraform एक अद्वितीय नाम स्वतः उत्पन्न करेगा।
  • name_prefix - (वैकल्पिक) निर्दिष्ट उपसर्ग के साथ एक अद्वितीय नाम बनाता है। name साथ संघर्ष।
  • image_id - (आवश्यक) EC2 छवि ID लॉन्च करने के लिए।
  • instance_type - (आवश्यक) लॉन्च करने के लिए उदाहरण का आकार।
  • iam_instance_profile - (वैकल्पिक) लॉन्च उदाहरणों के साथ संबद्ध करने के लिए IAM उदाहरण प्रोफ़ाइल।
  • key_name - (वैकल्पिक) प्रमुख नाम जिसे उदाहरण के लिए उपयोग किया जाना चाहिए।
  • security_groups - (वैकल्पिक) संबद्ध सुरक्षा समूह IDS की एक सूची।
  • associate_public_ip_address - (वैकल्पिक) VPC में एक उदाहरण के साथ एक सार्वजनिक आईपी पते को associate_public_ip_address
  • vpc_classic_link_id - (वैकल्पिक) एक क्लासिकलिंक-सक्षम VPC की आईडी। केवल EC2- क्लासिक उदाहरणों पर लागू होता है। (उदा। vpc-2730681a )
  • vpc_classic_link_security_groups - (वैकल्पिक) निर्दिष्ट क्लासिकलिंक-सक्षम VPC (जैसे sg-46ae3d11 ) के लिए एक या एक से अधिक सुरक्षा समूहों की आईडी।
  • user_data - (वैकल्पिक) उदाहरण लॉन्च करते समय प्रदान करने वाला उपयोगकर्ता डेटा। इस तर्क के माध्यम से ग़ज़ब-संकुचित डेटा पास न करें; इसके बजाय user_data_base64 देखें।
  • user_data_base64 - (वैकल्पिक) सीधे user_data -एन्कोडेड बाइनरी डेटा पास करने के लिए user_data बजाय उपयोग किया जा सकता है। जब भी मान एक मान्य UTF-8 स्ट्रिंग न हो, user_data बजाय इसका उपयोग करें। उदाहरण के लिए, gzip-encoded उपयोगकर्ता डेटा को आधार 64-एन्कोडेड होना चाहिए और भ्रष्टाचार से बचने के लिए इस तर्क से गुजरना चाहिए।
  • enable_monitoring - (वैकल्पिक) विस्तृत निगरानी में सक्षम / अक्षम करता है। यह डिफ़ॉल्ट रूप से सक्षम है।
  • ebs_optimized - (वैकल्पिक) यदि सही है, तो लॉन्च किया गया EC2 उदाहरण ईबीएस-अनुकूलित होगा।
  • root_block_device - (वैकल्पिक) उदाहरण के रूट ब्लॉक डिवाइस के बारे में विवरण अनुकूलित करें। विवरण के लिए नीचे ब्लॉक डिवाइस देखें।
  • उदाहरण के लिए संलग्न करने के लिए ebs_block_device - (वैकल्पिक) अतिरिक्त ईबीएस ब्लॉक डिवाइस। विवरण के लिए नीचे ब्लॉक डिवाइस देखें।
  • ephemeral_block_device - (वैकल्पिक) उदाहरण पर Ephemeral ("इंस्टेंस स्टोर" के रूप में भी जाना जाता है) संस्करणों को अनुकूलित करें। विवरण के लिए नीचे ब्लॉक डिवाइस देखें।
  • spot_price - (वैकल्पिक; डिफ़ॉल्ट: ऑन-डिमांड मूल्य) स्पॉट इंस्टेंस को spot_price लिए उपयोग करने के लिए अधिकतम मूल्य।
  • placement_tenancy - (वैकल्पिक) उदाहरण की किरायेदारी। मान्य मान "default" या "dedicated" , अधिक विवरण के लिए AWS का लॉन्च लॉन्च कॉन्फ़िगरेशन देखें

उपकरणों को ब्लॉक करें

*_block_device विशेषताओं में से प्रत्येक AWS लॉन्च कॉन्फ़िगरेशन के "ब्लॉक डिवाइस मैपिंग" के एक हिस्से को नियंत्रित करता है। इन विशेषताओं का उपयोग करने के निहितार्थ को समझने के लिए एडब्ल्यूएस के ब्लॉक डिवाइस मैपिंग डॉक्स के साथ खुद को परिचित करना एक अच्छा विचार है।

root_block_device मैपिंग निम्नलिखित का समर्थन करती है:

  • volume_type - (वैकल्पिक) वॉल्यूम का प्रकार। "standard" , "gp2" , या "io1" । (डिफ़ॉल्ट: "standard" )।
  • volume_size - (वैकल्पिक) गीगाबाइट में वॉल्यूम का आकार।
  • iops - (वैकल्पिक) प्रावधानित IOPS की राशि। इसे "io1" volume_type के साथ सेट किया जाना चाहिए।
  • delete_on_termination - (वैकल्पिक) उदाहरण समाप्ति पर वॉल्यूम को नष्ट कर दिया जाना चाहिए या नहीं (डिफ़ॉल्ट: true )।

किसी भी root_block_device सेटिंग्स को संशोधित करने के लिए संसाधन प्रतिस्थापन की आवश्यकता होती है।

प्रत्येक ebs_block_device निम्नलिखित का समर्थन करता है:

  • device_name - (आवश्यक) डिवाइस को माउंट करने का नाम।
  • Snapshot_id - (वैकल्पिक) स्नैपशॉट ID को आरोहित करने के लिए।
  • volume_type - (वैकल्पिक) वॉल्यूम का प्रकार। "standard" , "gp2" , या "io1" । (डिफ़ॉल्ट: "standard" )।
  • volume_size - (वैकल्पिक) गीगाबाइट में वॉल्यूम का आकार।
  • iops - (वैकल्पिक) प्रावधानित IOPS की राशि। इसे "io1" volume_type के साथ सेट किया जाना चाहिए।
  • delete_on_termination - (वैकल्पिक) उदाहरण समाप्ति पर वॉल्यूम को नष्ट कर दिया जाना चाहिए या नहीं (डिफ़ॉल्ट: true )।
  • encrypted - (वैकल्पिक) वॉल्यूम को एन्क्रिप्ट किया जाना चाहिए या नहीं। यदि आप snapshot_id का उपयोग कर रहे हैं तो इस विकल्प का उपयोग न करें क्योंकि एन्क्रिप्टेड ध्वज स्नैपशॉट द्वारा निर्धारित किया जाएगा। (डिफ़ॉल्ट: false )।

वर्तमान में किसी भी ebs_block_device को संशोधित करने के लिए संसाधन प्रतिस्थापन की आवश्यकता होती है।

प्रत्येक ephemeral_block_device निम्नलिखित का समर्थन करता है:

प्रत्येक AWS इंस्टेंस प्रकार में अनुलग्नक के लिए उपलब्ध इंस्टेंस स्टोर ब्लॉक डिवाइस का एक अलग सेट होता है। AWS ने एक सूची प्रकाशित की जिसमें प्रत्येक प्रकार पर अल्पकालिक उपकरण उपलब्ध हैं। डिवाइस को हमेशा "ephemeral{0..N}" प्रारूप में virtual_name द्वारा पहचाना जाता है।

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

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

  • id - लॉन्च कॉन्फ़िगरेशन की आईडी।
  • name - लॉन्च कॉन्फ़िगरेशन का नाम।

आयात

लॉन्च कॉन्फ़िगरेशन को name का उपयोग करके आयात किया जा सकता है, जैसे

$ terraform import aws_launch_configuration.as_conf terraform-lg-123456