Terraform 0.11

aws_instance




terraform

aws_instance

EC2 इंस्टेंस संसाधन प्रदान करता है। यह इंस्टेंस को बनाने, अपडेट करने और डिलीट करने की अनुमति देता है। उदाहरण भी provisioning समर्थन करते हैं।

उदाहरण उपयोग

# Create a new instance of the latest Ubuntu 14.04 on an
# t2.micro node with an AWS Tag naming it "HelloWorld"
provider "aws" {
  region = "us-west-2"
}

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_instance" "web" {
  ami           = "${data.aws_ami.ubuntu.id}"
  instance_type = "t2.micro"

  tags {
    Name = "HelloWorld"
  }
}

तर्क संदर्भ

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

  • ami - (आवश्यक) एएमआई उदाहरण के लिए उपयोग करने के लिए।
  • availability_zone - (वैकल्पिक) AZ उदाहरण में शुरू करने के लिए।
  • placement_group समूह - (वैकल्पिक) प्लेसमेंट समूह में उदाहरण शुरू करने के लिए।
  • tenancy - (वैकल्पिक) उदाहरण की किरायेदारी (यदि उदाहरण VPC में चल रहा है)। एकल-किरायेदार हार्डवेयर पर समर्पित रन के किरायेदारी के साथ एक उदाहरण। आयात-आवृत्ति आदेश के लिए होस्ट टेनेंसी समर्थित नहीं है।
  • ebs_optimized - (वैकल्पिक) यदि सही है, तो लॉन्च किया गया EC2 उदाहरण ईबीएस-अनुकूलित होगा। ध्यान दें कि यदि इसे ऐसे इंस्टेंस प्रकार पर सेट नहीं किया गया है, जो डिफ़ॉल्ट रूप से ऑप्टिमाइज़ किया गया है, तो यह अक्षम के रूप में दिखाई देगा, लेकिन यदि इंस्टेंस प्रकार डिफ़ॉल्ट रूप से ऑप्टिमाइज़ किया गया है, तो इसे सेट करने की कोई आवश्यकता नहीं है और इसे अक्षम करने का कोई प्रभाव नहीं है। अधिक जानकारी के लिए एडब्ल्यूएस उपयोगकर्ता गाइड का ईबीएस अनुकूलित अनुभाग देखें।
  • disable_api_termination - (वैकल्पिक) यदि सही है, EC2 इंस्टेंस समाप्ति सुरक्षा को सक्षम करता है
  • instance_initiated_shutdown_behavior - (वैकल्पिक) उदाहरण के लिए शटडाउन व्यवहार। अमेज़न ईबीएस समर्थित इंस्टेंसेस के लिए stop और इंस्टेंट-स्टोर इंस्टेंस के लिए इसे terminate लिए डिफॉल्ट stop । इंस्टेंट-स्टोर इंस्टेंस पर सेट नहीं किया जा सकता। अधिक जानकारी के लिए शटडाउन व्यवहार देखें।
  • instance_type - (आवश्यक) आरंभ करने के लिए उदाहरण का प्रकार। इस क्षेत्र के अपडेट EC2 इंस्टेंस के स्टॉप / स्टार्ट को ट्रिगर करेंगे।
  • key_name - (वैकल्पिक) उदाहरण के लिए उपयोग करने के लिए कुंजी जोड़ी का प्रमुख नाम; जिसे aws_key_pair संसाधन का उपयोग करके प्रबंधित किया जा सकता है।

  • get_password_data - (वैकल्पिक) यदि सही है, तो पासवर्ड डेटा उपलब्ध होने की प्रतीक्षा करें और इसे पुनः प्राप्त करें। Microsoft Windows चलाने वाले इंस्टेंस के लिए व्यवस्थापक पासवर्ड प्राप्त करने के लिए उपयोगी है। पासवर्ड डेटा को पासवर्ड_डेटा विशेषता में निर्यात किया जाता है। अधिक जानकारी के लिए GetPasswordData देखें।

  • monitoring - (वैकल्पिक) यदि सही है, तो लॉन्च किए गए EC2 उदाहरण में विस्तृत निगरानी सक्षम होगी। (V0.6.0 के बाद से उपलब्ध)

  • security_groups - (वैकल्पिक) सुरक्षा समूह के नामों की एक सूची जिसके साथ जुड़ना है।

  • vpc_security_group_ids - (वैकल्पिक) सुरक्षा समूह आईडी की सूची।
  • subnet_id - (वैकल्पिक) में लॉन्च करने के लिए subnet_id सबनेट आईडी।
  • associate_public_ip_address - (वैकल्पिक) VPC में एक उदाहरण के साथ एक सार्वजनिक आईपी पते को associate_public_ip_address । बूलियन मूल्य।
  • private_ip - (वैकल्पिक) VPC में उदाहरण के साथ संबद्ध करने के लिए निजी IP पता।
  • source_dest_check - (वैकल्पिक) नियंत्रित करता है कि गंतव्य स्थान पते उदाहरण से मेल नहीं खाता है, तो ट्रैफ़िक को उदाहरण के लिए रूट किया गया है। NAT या VPN के लिए उपयोग किया जाता है। चूक सत्य है।
  • user_data - (वैकल्पिक) उदाहरण लॉन्च करते समय प्रदान करने वाला उपयोगकर्ता डेटा। इस तर्क के माध्यम से ग़ज़ब-संकुचित डेटा पास न करें; इसके बजाय user_data_base64 देखें।
  • user_data_base64 - (वैकल्पिक) सीधे user_data -एन्कोडेड बाइनरी डेटा पास करने के लिए user_data बजाय उपयोग किया जा सकता है। जब भी मान एक मान्य UTF-8 स्ट्रिंग न हो, user_data बजाय इसका उपयोग करें। उदाहरण के लिए, gzip-encoded उपयोगकर्ता डेटा को आधार 64-एन्कोडेड होना चाहिए और भ्रष्टाचार से बचने के लिए इस तर्क से गुजरना चाहिए।
  • iam_instance_profile - (वैकल्पिक) IAM इंस्टेंस प्रोफाइल के साथ उदाहरण लॉन्च करने के लिए। इंस्टेंस प्रोफाइल के नाम के रूप में निर्दिष्ट। सुनिश्चित करें कि आपके क्रेडेंशियल्स को EC2 प्रलेखन , विशेष रूप से iam:PassRole अनुसार उदाहरण प्रोफ़ाइल को असाइन करने की सही अनुमति है।
  • ipv6_address_count - (वैकल्पिक) प्राथमिक नेटवर्क इंटरफ़ेस के साथ जुड़ने के लिए कई IPv6 पते। Amazon EC2 आपके सबनेट की रेंज से IPv6 एड्रेस चुनता है।
  • ipv6_addresses - (वैकल्पिक) सबनेट की श्रेणी से प्राथमिक नेटवर्क इंटरफ़ेस के साथ जुड़ने के लिए एक या अधिक IPv6 पते निर्दिष्ट करें
  • tags - (वैकल्पिक) संसाधन को असाइन करने के लिए टैग की मैपिंग।
  • volume_tags - (वैकल्पिक) लॉन्च समय पर उदाहरण द्वारा बनाए गए उपकरणों को असाइन करने के लिए टैग की मैपिंग।
  • root_block_device - (वैकल्पिक) उदाहरण के रूट ब्लॉक डिवाइस के बारे में विवरण अनुकूलित करें। विवरण के लिए नीचे ब्लॉक डिवाइस देखें।
  • उदाहरण के लिए संलग्न करने के लिए ebs_block_device - (वैकल्पिक) अतिरिक्त ईबीएस ब्लॉक डिवाइस। विवरण के लिए नीचे ब्लॉक डिवाइस देखें।
  • ephemeral_block_device - (वैकल्पिक) उदाहरण पर Ephemeral ("इंस्टेंस स्टोर" के रूप में भी जाना जाता है) संस्करणों को अनुकूलित करें। विवरण के लिए नीचे ब्लॉक डिवाइस देखें।
  • network_interface - (वैकल्पिक) उदाहरण के समय बूट में संलग्न होने के लिए नेटवर्क इंटरफेस को अनुकूलित करें। अधिक विवरण के लिए नीचे नेटवर्क इंटरफेस देखें।
  • credit_specification - (वैकल्पिक) उदाहरण के क्रेडिट विनिर्देश को अनुकूलित करें। अधिक विवरण के लिए नीचे क्रेडिट विशिष्टता देखें।

समय समाप्ति

timeouts ब्लॉक आपको कुछ कार्यों के लिए timeouts निर्दिष्ट करने की अनुमति देता है:

  • create - (10 मिनट तक की कमी) उदाहरण लॉन्च करते समय उपयोग किया जाता है (जब तक कि यह प्रारंभिक स्थिति में नहीं पहुंचता)
  • update - (10 मिनट में चूक) अद्यतन के दौरान आवश्यक होने पर रोकना और उदाहरण शुरू करना - उदाहरण के प्रकार बदलते समय
  • delete - (20 मिनट के लिए डिफ़ॉल्ट) उदाहरण समाप्त करते समय उपयोग किया जाता है

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

*_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 - (वैकल्पिक) वॉल्यूम पर ईबीएस एन्क्रिप्शन सक्षम करता है (डिफ़ॉल्ट: false )। snapshot_id साथ उपयोग नहीं किया जा सकता है।

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

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

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

नेटवर्क इंटरफेस

network_interface प्रत्येक ब्लॉक बूट समय के दौरान EC2 इंस्टेंस पर एक नेटवर्क इंटरफ़ेस देते हैं। हालाँकि, क्योंकि नेटवर्क इंटरफ़ेस बूट-टाइम पर संलग्न है, नेटवर्क इंटरफ़ेस को बदलने / संशोधित करने के लिए EC2 रोमांस का एक मनोरंजन ट्रिगर करेगा । यदि आपको उदाहरण के लिए नेटवर्क इंटरफ़ेस को अलग करने / संशोधित / फिर से संलग्न करने के लिए किसी भी बिंदु पर आवश्यकता है, तो इसके बजाय aws_network_interface या aws_network_interface_attachment संसाधनों का उपयोग करें।

network_interface कॉन्फ़िगरेशन ब्लॉक करता है , हालांकि, उपयोगकर्ताओं को EC0 इंस्टेंस पर डिफ़ॉल्ट नेटवर्क इंटरफ़ेस के रूप में उपयोग करने के लिए अपने नेटवर्क इंटरफेस की आपूर्ति करने की अनुमति देता है, जो कि eth0 पर संलग्न है।

प्रत्येक network_interface ब्लॉक निम्न का समर्थन करता है:

  • device_index - (आवश्यक) नेटवर्क इंटरफ़ेस अनुलग्नक का पूर्णांक सूचकांक। उदाहरण के प्रकार द्वारा सीमित।
  • network_interface_id - (आवश्यक) संलग्न करने के लिए नेटवर्क इंटरफ़ेस की आईडी।
  • delete_on_termination - (वैकल्पिक) उदाहरण समाप्ति पर नेटवर्क इंटरफ़ेस को हटाना या नहीं। false अवहेलना करता false । वर्तमान में, केवल मान्य मान false , क्योंकि यह केवल एक उदाहरण लॉन्च करते समय नए नेटवर्क इंटरफेस बनाते समय समर्थित है।

क्रेडिट विशिष्टता

क्रेडिट विनिर्देश किसी भी समय EC2 इंस्टेंस पर लागू / संशोधित किया जा सकता है।

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

  • cpu_credits - (वैकल्पिक) CPU उपयोग के लिए क्रेडिट विकल्प।

उदाहरण

resource "aws_vpc" "my_vpc" {
  cidr_block = "172.16.0.0/16"
  tags {
    Name = "tf-example"
  }
}

resource "aws_subnet" "my_subnet" {
  vpc_id = "${aws_vpc.my_vpc.id}"
  cidr_block = "172.16.10.0/24"
  availability_zone = "us-west-2a"
  tags {
    Name = "tf-example"
  }
}

resource "aws_network_interface" "foo" {
  subnet_id = "${aws_subnet.my_subnet.id}"
  private_ips = ["172.16.10.100"]
  tags {
    Name = "primary_network_interface"
  }
}

resource "aws_instance" "foo" {
    ami = "ami-22b9a343" # us-west-2
    instance_type = "t2.micro"
    network_interface {
     network_interface_id = "${aws_network_interface.foo.id}"
     device_index = 0
  }
}

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

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

  • id - उदाहरण आईडी।
  • availability_zone - उदाहरण का उपलब्धता क्षेत्र।
  • placement_group समूह - उदाहरण के प्लेसमेंट समूह।
  • key_name - उदाहरण का प्रमुख नाम
  • password_data - बेस -64 उदाहरण के लिए एन्क्रिप्टेड पासवर्ड डेटा। Microsoft Windows चलाने वाले इंस्टेंस के लिए व्यवस्थापक पासवर्ड प्राप्त करने के लिए उपयोगी है। यह विशेषता केवल निर्यात की जाती है यदि get_password_data सत्य है। ध्यान दें कि यह एन्क्रिप्टेड मूल्य सभी निर्यात विशेषताओं के साथ, राज्य फ़ाइल में संग्रहीत किया जाएगा। अधिक जानकारी के लिए GetPasswordData देखें।
  • public_dns - उदाहरण के लिए असाइन किया गया सार्वजनिक DNS नाम। EC2-VPC के लिए, यह केवल तभी उपलब्ध होता है जब आपने DNS होस्टनाम को अपने VPC के लिए सक्षम किया हो
  • public_ip - यदि लागू हो, तो सार्वजनिक IP पता, जिसे उदाहरण के लिए असाइन किया गया है। नोट : यदि आप अपने उदाहरण के साथ aws_eip का उपयोग कर रहे हैं, तो आपको सीधे EIP के पते का उल्लेख करना चाहिए और public_ip उपयोग नहीं करना public_ip , क्योंकि EIP संलग्न होने के बाद यह फ़ील्ड बदल जाएगी।
  • ipv6_addresses - निर्दिष्ट IPv6 पतों की सूची, यदि कोई हो
  • network_interface_id - नेटवर्क इंटरफ़ेस की ID जिसे उदाहरण के साथ बनाया गया था।
  • primary_network_interface_id - उदाहरण के प्राथमिक नेटवर्क इंटरफ़ेस की ID।
  • private_dns - निजी DNS नाम उदाहरण के लिए सौंपा गया है। केवल अमेज़ॅन EC2 के अंदर ही उपयोग किया जा सकता है, और केवल तभी उपलब्ध है जब आपने अपने VPC के लिए DNS होस्टनाम को सक्षम किया हो
  • private_ip - उदाहरण के लिए असाइन किया गया निजी IP पता
  • security_groups - संबंधित सुरक्षा समूह।
  • vpc_security_group_ids - गैर-डिफ़ॉल्ट VPC में संबद्ध सुरक्षा समूह
  • subnet_id - subnet_id सबनेट आईडी।
  • credit_specification - उदाहरण के क्रेडिट विनिर्देश।

किसी भी root_block_device और ebs_block_device लिए volume_id निर्यात किया जाता है। उदा aws_instance.web.root_block_device.0.volume_id

आयात

उदाहरणों को id का उपयोग करके आयात किया जा सकता है, जैसे

$ terraform import aws_instance.web i-12345678