تكوين بيئة تنفيذ المنطقة

تشتمل بيئة تنفيذ Terraform على نسق المجلدات وملفات تكوين Terraform المطلوبة لإنشاء منظومة شبكة متعددة الطبقات.

حول بيئة تنفيذ المنطقة

تم تصميم نسق بيئة تنفيذ الإقليم للتعديل والنمو الآجل.

تمثل الأدلة والملفات التي تحتوي على تكوين Terraform بيئة التنفيذ. يمثل كل دليل فرعي وحدة نمطية لـ Terraform. وبالإضافة إلى ذلك ، تقوم الأدلة الفرعية بعمل مكتبة موارد قابلة لإعادة الاستخدام.

يمثل هيكل الدليل التالي بيئة التنفيذ التي تقوم بإنشائها في هذا الحل.

ما يلي هووصف local_directory_structure.png
وصف الشكل التوضيحي local_directory_structure.png

يقع التكوين بأكمله في الدليل الأولي الذي يحمل اسم من اختيارك. يجب أن يكون هذا الدليل فارغًا عند البدء.

بعد تكوين التكوين ، يشتمل الدليل الأولي على الأدلة والملفات التالية:

  • يحتوي الدليل compartments على معلمات التكوين الخاصة بـ compartments.
  • يحتوي الدليل iam على معلمات تكوين للأنظمة والمجموعات.
  • يحتوي دليل vcn على معلمات التكوين الخاصة بالشبكة السحابية الظاهرية والجيت واي.
  • الملفات التالية موجودة في الدليل الأولي:
    • datasources.tf يحدد عدد نطاقات الإتاحة في المنطقة والحصول على أسمائها.
    • provider.tf تعريف معلمات موفري Terraform المطلوب استخدامها.
    • root.tf تعريف الوحدات النمطية التي يجب أن تنفذها Terraform.
    • terraform.tvars تعريف قيم المتغيرات التي تمررها إلى Terraform.
    • variables.tf يقوم بتعريف المتغيرات التي تقوم الوحدات النمطية في استخدام التكوين.

تكوين الوحدة الأصلية

في الوحدة النمطية الأولية ، عليك تعريف المعلمات اللازمة للغة Terraform للاتصال بـ Oracle Cloud Infrastructure. كما يمكنك أيضًا تعريف البيانات والمتغيرات التي تستخدمها الوحدات في التكوين.

  1. على الكمبيوتر الذي قمت بتثبيت Terraform فيه ، قم بتكوين دليل ، مشار إليه على أنه الدليل الأولي في المتبقي من هذا الحل.
  2. قم بتكوين الأدلة الفرعية التالية في الدليل الأولي:
    • compartments
    • iam
    • vcn
  3. قم بتكوين ملف نصي باسم variables.tf في الدليل الأولي ، وألصق التعليمات البرمجية التالية في الملف.
    يعلن هذا الرمز المتغيرات التي تنطبق عليها الوحدات في استخدام تكوين Terraform. في الخطوة التالية ، يتم تحديد قيم هذه المتغيرات.
    variable "tenancy_ocid" {}
    variable "user_ocid" {}
    variable "fingerprint" {}
    variable "private_key_path" {}
    variable "private_key_password" {}
    variable "app_tag" {}
    variable "environment" {}
    variable "home_region" {}
    variable "region" {}
    variable "vcn_cidr" {
      default = "10.0.0.0/16"
    }
    
  4. قم بتكوين ملف نصي باسم terraform.tfvars في الدليل الأولي ، وألصق التعليمات البرمجية التالية في الملف.
    في هذه التعليمات البرمجية ، تقوم بتعريف قيم المتغيرات التي تم تعريفها في الخطوة السابقة.
    # Parameters to authenticate with Oracle Cloud Infrastructure
    tenancy_ocid="EXAMPLE: ocid1.tenancy.oc1..aaaaaaaaf76usem7gyfrakr35anvky4tyowvdvbik7kbrcizlyjsgfxpdg2a"
    user_ocid="EXAMPLE: ocid1.user.oc1..aaaaaaaa5tds42w2zzbsdflkjwerkjghswdjfbvbts7imlb5yru2p10a"
    fingerprint="EXAMPLE: 9b:6a:ab:ab:32:0b:7f:d5:5b:6w:c0:fe:54:72:f1:pl"
    private_key_path="YOUR_HOME_DIRECTORY/.oci/oci_api_key.pem"
    
    # Leave empty if your private key does not have a password
    private_key_password=""
    
    # See https://docs.oracle.com/pls/topic/lookup?ctx=cloud&id=oci_general_regions
    home_region="EXAMPLE: us-ashburn-1"
    region="EXAMPLE: us-phoenix-1"
    
    # A short identifier for the application, used as a prefix for naming the compartments and other resources
    app_tag="myapp"
    
    # The environment that you're creating resources for: test, dev, prod, or staging
    environment="dev"
    
    # Base CIDR for the VCN
    vcn_cidr="10.0.0.0/16"
  5. قم بتحديث قيم المتغيرات في terraform.tfvars كما هو موضح في الجدول التالي:
    متغير الوصف
    tenancy_ocid معرف Oracle Cloud (oci) للأرض المستأجرة.

    للبحث عن Ocd الخاص بالأرض المستأجرة ، اختر إدارة من قائمة الخدمات ثم انقر تفاصيل الأرض المستأجرة

    user_ocid معرف Oracle Cloud (OCID) الخاص بالمستخدم الذي تريد أن يقوم Terraform باستخدامه للتصديق باستخدام Oracle Cloud Infrastructure.

    للعثور على Ocd الخاص بالمستخدم ، اختر الهوية من قائمة الخدمات ، ثم اختر المستخدمون . ابحث عن اسم المستخدم في القائمة ، وقم بنسخ قيمة Ocd.

    بصمة الإصبع الطباعة لمفتاح توقيع API الذي قمت بتحميله
    private_key_path المسار إلى الملف الذي يحتوي على المفتاح الخاص بك.
    private_key_password عبارة المرور للمفتاح الخاص. إذا لم يكن للمفتاح عبارة مرور ، اترك هذا المتغير فارغًا.
    home_region المنطقة الرئيسية للأرض المستأجرة. يتم تكوين الأقسام والأنظمة والمجموعات في المنطقة الرئيسية.

    للحصول على المنطقة الرئيسية ، حدد إدارة من قائمة الخدمات ، وانقر تفاصيل الأرض المستأجرة ، ثم قم بنسخ القيمة الموجودة في حقل المنطقة الرئيسية .

    المنطقة المنطقة التي تريد تكوين شبكة الاتصال والحساب والموارد الأخرى فيها. قد تكون هذه المنطقة هي المنطقة الرئيسية أو أية منطقة Oracle Cloud Infrastructure أخرى.
    app_tag بادئة يتم استخدامها في أسماء الموارد ، للإشارة إلى التطبيق الذي ينتمي إليه كل مورد. أفضل الممارسات هي استخدام جميع الحروف الصغيرة.
    البيئة بادئة يتم استخدامها في أسماء الموارد الخاصة بك للإشارة إلى البيئة التي ينتمي إليها كل مورد: التطوير أو الاختبار أو التجهيز أو الإنتاج. أفضل الممارسات هي استخدام جميع الحروف الصغيرة.
    vcn_cidr نطاق عنوان Vcf ، بالصيغة cid. تخطيط هذا المدى بعناية. ولا يمكن تغييره لاحقًا.
  6. قم بتكوين ملف نصي باسم datasources.tf في الدليل الأولي ، وألصق التعليمات البرمجية التالية في الملف.
    الرمز الموجود في datasources.tf يحدد عدد نطاقات الإتاحة في المنطقة والأسماء الخاصة بها. تستخدم هذه التعليمات البرمجية المنطقة التي تحددها في المتغير region.
    data "oci_identity_availability_domains" "ad" {
      compartment_id = "${var.tenancy_ocid}"
    }
    
    data "template_file" "ad_names" {
      count    = "${length(data.oci_identity_availability_domains.ad.availability_domains)}"
      template = "${lookup(data.oci_identity_availability_domains.ad.availability_domains[count.index], "name")}"
    }
  7. قم بتكوين ملف نصي باسم provider.tf في الدليل الأولي ، وألصق التعليمات البرمجية التالية في الملف.
    التعليمة البرمجية في provider.tf تعرف المعلمات الخاصة بالموفر الذي يجب على Terraform استخدامه. يقوم الموفر بترجمة أوامر Terraform إلى استدعاءات API الخاصة بموفر خدمة السحابة.
    provider "oci" {
      alias                = "home"
      region               = "${var.home_region}"
      tenancy_ocid         = "${var.tenancy_ocid}"
      user_ocid            = "${var.user_ocid}"
      fingerprint          = "${var.fingerprint}"
      private_key_path     = "${var.private_key_path}"
      private_key_password = "${var.private_key_password}"
    }
    
    provider "oci" {
      region               = "${var.region}"
      tenancy_ocid         = "${var.tenancy_ocid}"
      user_ocid            = "${var.user_ocid}"
      fingerprint          = "${var.fingerprint}"
      private_key_path     = "${var.private_key_path}"
      private_key_password = "${var.private_key_password}"
    }
    يعرف هذا المثال موفرين. كلا الموفرين لـ Oracle Cloud Infrastructure. الموفر الأول هو للمنطقة الرئيسية ، حيث يمكن تكوين موارد Oracle Cloud Infrastructure Identity and Access Management. الموفر الثاني خاص بالمنطقة التي تريد تكوين شبكة الاتصال والحساب والموارد الأخرى فيها.
  8. قم بتكوين ملف نصي باسم root.tf في الدليل الأولي ، وألصق التعليمات البرمجية التالية في الملف.
    يحدد هذا الرمز الوحدات النمطية التي يجب تنفيذها مرة أخرى. تم تحديد الموفر بوضوح للوحدات compartments و iam النمطية ، لأنه يجب تكوين الأقسام والمجموعات والأنظمة في المنطقة الرئيسية.
    module "compartments" {
      source       = "./compartments"
      tenancy_ocid = "${var.tenancy_ocid}"
      app_tag      = "${var.app_tag}"
      environment  = "${var.environment}"
    
      providers = {
        oci = "oci.home"
      }
    }
    
    module "a_vcn" {
      source           = "./vcn"
      tenancy_ocid     = "${var.tenancy_ocid}"
      compartment_ocid = "${module.compartments.networks_id}"
      app_tag          = "${var.app_tag}"
      environment      = "${var.environment}"
      vcn_cidr         = "${var.vcn_cidr}"
    }
    
    module "iam" {
      source       = "./iam"
      tenancy_ocid = "${var.tenancy_ocid}"
      app_tag      = "${var.app_tag}"
      environment  = "${var.environment}"
    
      providers = {
        oci = "oci.home"
      }
    }
    ويفرض متغيري app_tag و environment مخطط تسمية. لا يلزم استخدام مخطط تسمية ، ولكنه أفضل أسلوب.