Terraform 0.11

google_compute_instance_template




terraform

google_compute_instance_template

GCE के भीतर VM आवृत्ति टेम्पलेट संसाधन का प्रबंधन करता है। अधिक जानकारी के लिए आधिकारिक दस्तावेज और API

उदाहरण उपयोग

resource "google_compute_instance_template" "default" {
  name        = "appserver-template"
  description = "This template is used to create app server instances."

  tags = ["foo", "bar"]

  labels = {
    environment = "dev"
  }

  instance_description = "description assigned to instances"
  machine_type         = "n1-standard-1"
  can_ip_forward       = false

  scheduling {
    automatic_restart   = true
    on_host_maintenance = "MIGRATE"
  }

  // Create a new boot disk from an image
  disk {
    source_image = "debian-cloud/debian-8"
    auto_delete  = true
    boot         = true
  }

  // Use an existing disk resource
  disk {
    source      = "foo_existing_disk"
    auto_delete = false
    boot        = false
  }

  network_interface {
    network = "default"
  }

  metadata {
    foo = "bar"
  }

  service_account {
    scopes = ["userinfo-email", "compute-ro", "storage-ro"]
  }
}

इंस्टा ग्रुप मैनेजर के साथ प्रयोग करना

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

resource "google_compute_instance_template" "instance_template" {
  name_prefix  = "instance-template-"
  machine_type = "n1-standard-1"
  region       = "us-central1"

  // boot disk
  disk {
    # ...
  }

  // networking
  network_interface {
    # ...
  }

  lifecycle {
    create_before_destroy = true
  }
}

resource "google_compute_instance_group_manager" "instance_group_manager" {
  name               = "instance-group-manager"
  instance_template  = "${google_compute_instance_template.instance_template.self_link}"
  base_instance_name = "instance-group-manager"
  zone               = "us-central1-f"
  target_size        = "1"
}

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

तर्क संदर्भ

ध्यान दें कि इस संसाधन के लिए किसी भी क्षेत्र को बदलने से एक नया संसाधन बनने के लिए बाध्य होता है।

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

  • disk - (आवश्यक) इस टेम्प्लेट से निर्मित इंस्टेंस को संलग्न करने के लिए डिस्क। यह कई डिस्क के लिए कई बार निर्दिष्ट किया जा सकता है। संरचना नीचे प्रलेखित है।

  • machine_type - (आवश्यक) बनाने के लिए मशीन का प्रकार।

    नोट: यदि आप आरंभिक निर्माण के बाद इस मान (VM को आकार बदलें) को अपडेट करना चाहते हैं, तो आपको allow_stopping_for_update को true सेट करना होगा।

    एक कस्टम प्रकार (जैसे विस्तारित मेमोरी) के साथ एक मशीन बनाने के लिए, 6 vCPU और 20GB RAM के लिए custom-VCPUS-MEM_IN_MB जैसे custom-6-20480 जैसे custom-6-20480 को प्रारूपित करें।

  • name - (वैकल्पिक) उदाहरण टेम्पलेट का नाम। यदि आप इसे खाली छोड़ देते हैं, तो Terraform एक अद्वितीय नाम स्वतः उत्पन्न करेगा।

  • name_prefix - (वैकल्पिक) निर्दिष्ट उपसर्ग के साथ एक अद्वितीय नाम बनाता है। name साथ संघर्ष।

  • can_ip_forward - (वैकल्पिक) गैर-मिलान स्रोत या गंतव्य IP के साथ पैकेट भेजने और प्राप्त करने की अनुमति देना है या नहीं। यह असत्य को झुठलाता है।

  • description - (वैकल्पिक) इस संसाधन का एक संक्षिप्त विवरण।

  • instance_description - (वैकल्पिक) इस टेम्पलेट से बनाए गए उदाहरणों के लिए उपयोग करने के लिए एक संक्षिप्त विवरण।

  • labels - (वैकल्पिक) इस टेम्प्लेट से बनाए गए उदाहरणों को असाइन करने के लिए कुंजी / मान लेबल जोड़े का एक सेट,

  • metadata - (वैकल्पिक) मेटाडेटा कुंजी / मान जोड़े इस टेम्पलेट से निर्मित उदाहरणों से उपलब्ध कराने के लिए।

  • metadata_startup_script - (वैकल्पिक) स्टार्टअप-स्क्रिप्ट मेटाडेटा कुंजी का उपयोग करने के लिए एक विकल्प, जो कि ज्यादातर compute_instance संसाधन से मेल खाता है। यह स्टार्टअप-स्क्रिप्ट मेटाडेटा कुंजी को बनाए गए उदाहरण पर बदल देता है और इस प्रकार दो तंत्रों को एक साथ उपयोग करने की अनुमति नहीं है।

  • network_interface - (आवश्यक) नेटवर्क इस टेम्पलेट से बनाए गए उदाहरणों से जुड़ने के लिए। यह कई नेटवर्क के लिए कई बार निर्दिष्ट किया जा सकता है। संरचना नीचे प्रलेखित है।

  • project - (वैकल्पिक) उस परियोजना की आईडी जिसमें संसाधन है। यदि यह प्रदान नहीं किया जाता है, तो प्रदाता परियोजना का उपयोग किया जाता है।

  • region - (वैकल्पिक) एक उदाहरण टेम्पलेट एक वैश्विक संसाधन है जो किसी क्षेत्र या क्षेत्र से जुड़ा नहीं है। हालाँकि, आप अभी भी कुछ क्षेत्रीय संसाधनों को एक उदाहरण टेम्पलेट में निर्दिष्ट कर सकते हैं, जो टेम्पलेट को उस क्षेत्र में प्रतिबंधित करता है जहाँ वह संसाधन रहता है। उदाहरण के लिए, एक कस्टम subnetwork संसाधन एक विशिष्ट क्षेत्र से जुड़ा हुआ है। यदि कोई मूल्य नहीं दिया जाता है तो प्रदाता के क्षेत्र में चूक।

  • scheduling - (वैकल्पिक) उपयोग करने के लिए शेड्यूलिंग रणनीति। इस कॉन्फ़िगरेशन विकल्प के बारे में अधिक जानकारी नीचे दी गई है।

  • service_account - (वैकल्पिक) सेवा खाता उदाहरण के लिए संलग्न करने के लिए। संरचना नीचे प्रलेखित है।

  • tags - (वैकल्पिक) उदाहरण के लिए संलग्न करने के लिए टैग।

  • guest_accelerator - (वैकल्पिक) उदाहरण के लिए एक्सीलरेटर कार्ड के प्रकार और गिनती की सूची। नीचे दिए गए दस्तावेज़।

  • min_cpu_platform - (वैकल्पिक) एक न्यूनतम सीपीयू मंच निर्दिष्ट करता है। लागू मूल्य CPU प्लेटफ़ॉर्म के अनुकूल नाम हैं, जैसे Intel Haswell या Intel Skylake । यहां देखें पूरी लिस्ट

disk ब्लॉक का समर्थन करता है:

  • auto_delete - (वैकल्पिक) डिस्क को स्वतः हटाया जाना चाहिए या नहीं। यह सत्य के लिए चूक है।

  • boot - (वैकल्पिक) इंगित करता है कि यह एक बूट डिस्क है।

  • device_name - (वैकल्पिक) एक अद्वितीय उपकरण का नाम जो उदाहरण के भीतर चल रहे लिनक्स ऑपरेटिंग सिस्टम के / देव / वृक्ष में परिलक्षित होता है। यदि निर्दिष्ट नहीं है, तो सर्वर इस डिस्क पर लागू करने के लिए एक डिफ़ॉल्ट डिवाइस नाम चुनता है।

  • disk_name - (वैकल्पिक) डिस्क का नाम। जब प्रदान नहीं किया जाता है, तो यह उदाहरण के नाम को डिफॉल्ट करता है।

  • source_image - (यदि स्रोत सेट नहीं है तो आवश्यक है) वह छवि जिससे इस डिस्क को इनिशियलाइज़ किया जा सके। यह एक हो सकता है: छवि का self_link , projects/{project}/global/images/{image} , projects/{project}/global/images/family/{family} , global/images/{image} , global/images/family/{family} , family/{family} , {project}/{family} , {project}/{image} , {family} , या {image}

  • interface - (वैकल्पिक) डिस्क को संलग्न करने के लिए उपयोग करने के लिए डिस्क इंटरफ़ेस निर्दिष्ट करता है।

  • mode - (वैकल्पिक) वह मोड जिसमें इस डिस्क को संलग्न करना है, या तो READ_WRITE या READ_ONLY। यदि आप बूट डिस्क अटैच कर रहे हैं या बना रहे हैं, तो इसे पढ़ना-लिखना मोड होना चाहिए।

  • source - (आवश्यक है अगर source_image सेट नहीं है) डिस्क का नाम (जैसे कि google_compute_disk द्वारा प्रबंधित) संलग्न करने के लिए।

  • disk_type - (वैकल्पिक) GCE डिस्क प्रकार। या तो "pd-ssd" , "local-ssd" , या "pd-standard"

  • disk_size_gb - (वैकल्पिक) गीगाबाइट में छवि का आकार। यदि निर्दिष्ट नहीं किया गया है, तो यह अपनी आधार छवि के आकार का वारिस करेगा।

  • type - (वैकल्पिक) GCE डिस्क का प्रकार, "SCRATCH" या "PERSISTENT"

network_interface block सपोर्ट करता है:

  • network - (वैकल्पिक) इस इंटरफ़ेस को संलग्न करने के लिए नेटवर्क का नाम या स्वयं_लिंक। कस्टम सबनेटेड नेटवर्क के लिए लिगेसी या ऑटो सबनेटिड नेटवर्क और subnetwork लिए network एट्रिब्यूट का उपयोग करें।

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

  • subnetwork_project - (वैकल्पिक) उस परियोजना की आईडी जिसमें सबनेटवर्क संबंधित है। यदि यह प्रदान नहीं किया जाता है, तो प्रदाता परियोजना का उपयोग किया जाता है।

  • address - (वैकल्पिक) उदाहरण के लिए निर्दिष्ट करने के लिए निजी आईपी पता। यदि खाली है, तो पता स्वचालित रूप से असाइन किया जाएगा।

  • access_config - (वैकल्पिक) एक्सेस कॉन्फ़िगरेशन, यानी आईपी जिसके माध्यम से इस उदाहरण को इंटरनेट के माध्यम से एक्सेस किया जा सकता है। यह सुनिश्चित करने के लिए कि इंटरनेट से पहुंच सुलभ नहीं है, इसका मतलब यह है कि ssh प्रावधान तब तक काम नहीं करेंगे जब तक कि आप चल रहे हैं जब तक कि Terraform इंस्टेंस के नेटवर्क पर ट्रैफ़िक नहीं भेज सकता (जैसे सुरंग के माध्यम से या क्योंकि यह उस नेटवर्क पर किसी अन्य क्लाउड इंस्टेंस पर चल रहा है) इस ब्लॉक को कई बार दोहराया जा सकता है।

  • alias_ip_range - (वैकल्पिक) इस नेटवर्क इंटरफ़ेस के लिए उपनाम आईपी रेंज की एक सरणी है। केवल सबनेट-मोड नेटवर्क पर नेटवर्क इंटरफेस के लिए निर्दिष्ट किया जा सकता है। नीचे दिए गए दस्तावेज़।

access_config ब्लॉक का समर्थन करता है:

  • nat_ip - (वैकल्पिक) आईपी पता जो कि 1: 1 होगा उदाहरण के नेटवर्क आईपी से मैप किया गया। यदि नहीं दिया गया है, तो एक उत्पन्न किया जाएगा।

  • network_tier - (वैकल्पिक) इस उदाहरण टेम्पलेट को कॉन्फ़िगर करने के लिए उपयोग किया जाने वाला नेटवर्किंग टियर । यह फ़ील्ड निम्न मान ले सकती है: प्रीमियम या मानक। यदि यह फ़ील्ड निर्दिष्ट नहीं है, तो इसे PREMIUM माना जाता है।

alias_ip_range block का समर्थन करता है:

  • ip_cidr_range - IP CIDR रेंज इस उर्फ ​​आईपी रेंज द्वारा प्रस्तुत की जाती है। यह IP CIDR श्रेणी निर्दिष्ट सबनेटवर्क से संबंधित होनी चाहिए और इसमें सिस्टम द्वारा आरक्षित IP पते या अन्य नेटवर्क इंटरफेस द्वारा उपयोग नहीं किया जा सकता है। केवल एक netmask (उदाहरण के लिए / 24) लिखने के समय, CIDR प्रारूप के साथ एक API त्रुटि हो सकती है।

  • subnetwork_range_name - (वैकल्पिक) subnetwork द्वितीयक श्रेणी नाम उस द्वितीयक श्रेणी को निर्दिष्ट करता है जिसमें से इस alias IP श्रेणी के लिए IP CIDR रेंज आवंटित की जाती है। यदि अनिर्दिष्ट छोड़ा गया है, तो सबनेटवर्क की प्राथमिक श्रेणी का उपयोग किया जाएगा।

service_account ब्लॉक समर्थन करता है:

  • email - (वैकल्पिक) सेवा खाता ई-मेल पता। यदि नहीं दिया गया है, तो डिफ़ॉल्ट Google कंप्यूट इंजन सेवा खाते का उपयोग किया जाता है।

  • scopes - (आवश्यक) सेवा scopes की एक सूची। OAuth2 URL और gcloud दोनों छोटे नाम समर्थित हैं। सभी क्लाउड एपीआई पर पूर्ण पहुंच की अनुमति देने के लिए, cloud-platform स्कोप का उपयोग करें। here scopes की एक पूरी सूची देखें।

scheduling ब्लॉक का समर्थन करता है:

  • automatic_restart - (Optional) यह निर्दिष्ट करता है कि क्या उदाहरण स्वचालित रूप से पुनरारंभ होना चाहिए, यदि यह Compute Engine द्वारा समाप्त किया गया हो (किसी उपयोगकर्ता द्वारा समाप्त नहीं किया गया)। यह सत्य के लिए चूक है।

  • on_host_maintenance - (वैकल्पिक) इस उदाहरण के लिए रखरखाव व्यवहार को परिभाषित करता है।

  • preemptible - (ऑप्शनल) उदाहरण को प्रीमेप्ट किया जा सकता है। यह असत्य को झुठलाता है। इस पर अधिक यहाँ पढ़ें।

guest_accelerator ब्लॉक का समर्थन करता है:

  • type (आवश्यक) - इस उदाहरण को उजागर करने के लिए त्वरक प्रकार संसाधन। उदा nvidia-tesla-k80

  • count (आवश्यक) - इस उदाहरण के सामने आने वाले अतिथि त्वरक कार्ड की संख्या।

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

ऊपर सूचीबद्ध तर्कों के अलावा, निम्नलिखित गणना की गई विशेषताएँ निर्यात की जाती हैं:

आयात

इंस्टेंस टेम्प्लेट को name का उपयोग करके आयात किया जा सकता है, जैसे

$ terraform import google_compute_instance_template.default appserver-template