البدء مع تيرافورم ويندوز وتيرافورم EC2

في مجال البنية التحتية كرمز (IaC)، أحد أدوات الاستفادة الأكثر فائدة التي ظهرت في السنوات العديدة الماضية هو Terraform لـ HashiCorp. القدرة على توثيق البنية التحتية، وتأمين الموارد تلقائيًا، وتنفيذها عبر مزودي سحابة مختلفة كبيرة بالنسبة لأي سير عمل DevOps والتأتأة.

أحد الاستخدامات لـ Terraform هو في CI/CD. يسمح لك Terraform بـ:

فيديوهاتي الأحدث

  • إنشاء بيئة اختبار
  • نشر تطبيق
  • تشغيل اختبارات التكامل
  • تدمير بيئة الاختبار

يتم تنفيذ جميع الخطوات تلقائيًا أيضًا. ولا يتطلب مركز بيانات!

المتطلبات المسبقة

هذه المقالة هي دليل تفصيلي لتشغيل Terraform على نظام التشغيل Windows. إذا كنت ترغب في متابعة الخطوات، يرجى التأكد من توفر المتطلبات المسبقة التالية.

  • A Windows 10 device
  • حساب AWS
  • تثبيت وتكوين AWS CLI على تلك الجهاز. يمكنك معرفة كيفية تثبيته هنا وكيفية تكوينه هنا.
  • (اختياري) Visual Studio Code مع امتداد Terraform

تثبيت تطبيق Terraform لنظام التشغيل Windows

لاستغلال قوة Terraform ، يجب أن تقوم أولاً بتثبيته على نظام التشغيل الذي تفضله. في هذه المقالة ، سأركز على نظام التشغيل Windows. ولكن اعلم أنه يمكن تشغيل Terraform على أنظمة تشغيل أخرى. إذا كنت لا تستخدم نظام التشغيل Windows ، فتحقق من وثائق التثبيت.

الطريقة الصعبة

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

  1. قم بتنزيل الإصدار المناسب من Terraform من صفحة تنزيل HashiCorp. في حالتي ، إنه الإصدار 64 بت لنظام Windows.
  2. أنشئ مجلدًا في محرك C:\ حيث يمكنك وضع ملف تنفيذي Terraform. أنا أفضل وضع المثبتات في مجلد فرعي (على سبيل المثال C:\tools) حيث يمكنك وضع الملفات الثنائية.
  3. بعد انتهاء التنزيل ، ابحث عنه في مستكشف الملفات. استخرج ملف الضغط إلى المجلد الذي أنشأته في الخطوة 2.
  4. افتح قائمة “البدء” واكتب “بيئة” وأول شيء يظهر يجب أن يكون تحرير متغيرات بيئة النظام . انقر فوق ذلك ويجب أن ترى هذه النافذة.
System Properties

5. انقر على متغيرات البيئة… في الأسفل وسترى هذا:

Windows environment variables

6. في القسم السفلي حيث يقول متغيرات النظام، ابحث عن واحد يسمى المسار وانقر على تحرير. سترى بعد ذلك قائمة بمكان البرامج الثنائية التي قد يحتاجها Windows لأي سبب من الأسباب.

7. انقر فوق جديد وأضف مسار المجلد حيث يقع terraform.exe إلى أسفل القائمة. يجب أن يبدو كما يلي عند الانتهاء.

Editing the system path

8. انقر موافق على كل القوائم التي قمت بفتحها حتى لا يتبقى شيء.

9. للتأكد من أن Windows يكتشف المسار الجديد، افتح سطر الأوامر/PowerShell الجديد وأدخل refreshenv.

10. تحقق من نجاح التثبيت عن طريق إدخال terraform --version. إذا عادت نسخة، فأنت جاهز.

الطريقة السهلة

يا له من العمل الكثير! سيكون من المروع القيام بذلك في كل مرة تحتاج فيها إلى تثبيت برنامج جديد على جهازك. دعنا نستخدم بدلاً من ذلك مدير حزمة. هناك العديد من مديري الحزم التي يمكنك استخدامها لتثبيت Terraform على Windows. بالنسبة لـ Windows، المفضل لدي هو Chocolatey. يجعل تثبيت البرامج وإزالتها وتحديثها بسيطة مثل أمر واحد، ولا يختلف الأمر في حالة Terraform.

لتثبيت Terraform باستخدام Chocolatey، قم باتباع الخطوات التالية:

  1. افتح سطر الأوامر / PowerShell كمسؤول وقم بتثبيت Chocolatey باستخدام الأمر الموجود في صفحة التثبيت الخاصة بهم.
  2. بمجرد الانتهاء من ذلك، قم بتشغيل choco install terraform. إذا أردت، يمكنك أيضًا إضافة -y في النهاية للموافقة التلقائية على تثبيته على جهازك.

بعد تشغيل هذا الأمر، ستحصل على شيء مشابه لهذا:

Chocolatey v0.10.13
2 validations performed. 1 success(es), 1 warning(s), and 0 error(s).

Installing the following packages:
terraform
By installing you accept licenses for the packages.
Progress: Downloading terraform 0.12.6... 100%

terraform v0.12.6 [Approved]
Downloading terraform 64 bit
  from 'https://releases.hashicorp.com/terraform/0.12.6/terraform_0.12.6_windows
Download of terraform_0.12.6_windows_amd64.zip (15.32 MB) completed.
--SNIP--

3.   تحقق من نجاح التثبيت عن طريق إدخال terraform --version.

الطريقة اللينكسية

I can almost hear what you’re thinking. Wait a minute Chris, didn’t you say this was going to cover installing Terraform on Windows?

نعم، لا تزال كذلك. ولكن إحدى الميزات في ويندوز 10 هي نظام ويندوز لنظام لينكس، أو WSL. يتيح لك هذا تشغيل الأوامر اللينكسية على ويندوز.

  1. قم بتثبيت WSL. لن أشرح كيفية تثبيت وإعداد WSL هنا، ولكن إذا كنت ترغب في المتابعة وليس لديك تكوينها بالفعل. يمكن العثور على فيديو توضيحي عن هذا الموضوع في الرابط أدناه.

2.   في واجهة سطر الأوامر الخاصة بـ WSL، قم بتشغيل apt-get install unzip. ستحتاج إلى ذلك لاستخراج ملفات تيرافورم لاحقًا.

3.   قم بتنزيل تيرافورم عن طريق تشغيل الأمر wget https://releases.hashicorp.com/terraform/0.12.6/terraform_0.12.6_linux_amd64.zip. تذكر استبدال الإصدار والهندسة المعمارية بتلك التي تناسب جهازك بشكل أفضل. يمكنك العثور على قائمة كاملة بإصدارات تيرافورم هنا.

4. تشغيل unzip terraform_0.12.6_linux_amd64.zip terraform لفك ضغط محتويات الملف المضغوط إلى مجلد يسمى terraform.

5. بمجرد فك ضغط الملف المضغوط، ستحتاج إلى نقله إلى مكان يمكن الوصول إليه من قبل مسار النظام. لحسن الحظ، لدى نظام Linux مجلد يمكن للمستخدمين إضافة البرامج الثنائية إليه افتراضيًا. قم بنقل البرنامج الثنائي لـ Terraform إلى هناك عن طريق تشغيل mv terraform /usr/local/bin/. يتم تعيين المجلد /usr/local/bin بالفعل في مسار النظام الخاص بك.

6. تحقق من نجاح التثبيت عن طريق تشغيل terraform --version.

توتيرم أمازون ويب سيرفس إي سي 2 بواسطة تيرافورم

الآن بعد تثبيت تيرافورم، يمكنك البدء في استخدامه. في هذا المنشور، سأقوم بشرح بناء مثال بسيط لمثيل EC2 في أمازون ويب سيرفس باستخدام تيرافورم. ولكن اعلم أن تيرافورم يمكنه توفير المئات من أنواع البنية التحتية المختلفة.

للبدء، ستحتاج أولاً إلى دليل لتشغيل سكربتات تيرافورم EC2 منه. من المهم أن يكون لديك دليل منفصل لكل بيئة. في الوقت الذي أكتب فيه هذا، لا يوجد لدى تيرافورم طريقة لتصفية ما يتم تشغيله. سيتم تشغيل كل سكربت في دليل العمل الحالي.

إعداد سكربت تيرافورم

  1. في سطر الأوامر أو وحدة التحكم بويرشيل التي يتم تشغيلها كمسؤول، قم بتشغيل mkdir hello-terraform ثم cd ./hello-terraform
  2. بمجرد أن تحصل على دليل، ستحتاج إلى نص برمجي لـ Terraform. فيما يلي مثال لنص برمجي يمكنك استخدامه. هذا هو نص برمجي نموذجي لـ Terraform باستخدام موفر AWS لإنشاء مورد لـ AWS instance.

إذا كنت ترغب في الحصول على النص البرمجي بالكامل، قم بنسخه أدناه. إذا كنت ترغب في فهم ما يقوم به هذا النص البرمجي، فاقرأ أدناه.

# Terraform HCL

provider "aws" {
  region = "us-east-1"
  shared_credentials_file = "~/.aws/credentials"
  profile = "default"
}

resource "aws_instance" "ubuntu" {
  ami           = "ami-07d0cf3af28718ef8"
  instance_type = "t2.micro"

  tags = {
    Name = "HelloTerraform"
  }
}

# Terraform HCL

3. احفظ النص البرمجي أعلاه باسم main.tf في الدليل العامل الخاص بك.

فهم نصوص TF

#Terraform HCL

provider "aws" {
  region = "us-east-1"
  shared_credentials_file = "~/.aws/credentials"
  profile = "default"
}

قبل أن تتقدم أكثر، انظر إلى الكود أدناه وما يتم إعلانه فيه.

# Terraform HCL

يخبر هذا الكود Terraform EC2 بالموفر الذي يجب استخدامه. يوجد موفرون لجميع موردي السحابة الرئيسيين، بالإضافة إلى بعض موردي الخوادم الخاصة. إذا كنت متقدمًا وتعرف كيفية كتابة Golang، فيمكنك أيضًا كتابة موفر خاص بك.

يخبر هذا الكود Terraform بأن يستخدم موفر AWS ومفاتيح الوصول الموجودة في ملف ~/.aws/credentials تحت اسم الملف الشخصي default. يتم إنشاء هذا الملف عند إعداد AWS CLI باستخدام أمر aws config كما هو مذكور في المتطلبات الأولية.

من الجدير بالذكر أيضًا أن ~/ هو اختصار لدليل المستخدم الحالي. إذا كنت تأتي من خلفية ويندوز، فإن هذا يعادل $env:USERPROFILE أو %USERPROFILE%. ولكن Terraform لا يدعم هذا التعبير في وقت الكتابة.

#Terraform HCL

resource "aws_instance" "ubuntu" {
  ami           = "ami-07d0cf3af28718ef8"
  instance_type = "t2.micro"

  tags = {
    Name = "HelloTerraform"
  }
}

الكتلة التالية تصف مثيل EC2 في Terraform وكيفية بنائه. إذا نظرت إلى توثيق Terraform لـ aws_instance، يمكنك رؤية أن بعض المعاملات مطلوبة والبعض اختياري. في هذه الحالة، المعاملات المطلوبة هي معرف AMI (ami-07d0cf3af28718ef8) لـ Ubuntu 18.04 LTS و t2.micro لنوع المثيل.

من خلال تمرير كتلة وسم بالمفتاح Name والقيمة HelloTerraform، سيتم تعيين هذا الوسم أيضًا للمثيل الذي يتم إنشاؤه. هذا اختياري.

terraform init

#Terraform HCL

Refreshing Terraform state in-memory prior to plan...
The refreshed state will be used to calculate this plan, but will not be
persisted to local or remote state storage.

------------------------------------------------------------------------

An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
  + create

Terraform will perform the following actions:

  بناء مثيل EC2 في AWS Terraform: اختبار
  + resource "aws_instance" "ubuntu" {
      + ami                          = "ami-07d0cf3af28718ef8"
      + arn                          = (known after apply)
      + associate_public_ip_address  = (known after apply)
      + availability_zone            = (known after apply)
      + cpu_core_count               = (known after apply)
      + cpu_threads_per_core         = (known after apply)
      + get_password_data            = false
...
--SNIP--

Plan: 1 to add, 0 to change, 0 to destroy.

------------------------------------------------------------------------

Note: You didn't specify an "-out" parameter to save this plan, so Terraform
can't guarantee that exactly these actions will be performed if
"terraform apply" is subsequently run.

الآن بمجرد إعداد النص، قم بتشغيل terraform init من الدليل العامل الخاص بك. سيقوم هذا بتنزيل جميع التبعيات وموفر في مجلد يُسمى .terraform. إذا تمت العملية بنجاح، يجب أن تحصل على شيء مشابه لهذا:

قبل أن تجري أي تغييرات، يتيح لك Terraform EC2 رؤية ما سيتم إنشاؤه من خلال تشغيل terraform plan. هنا ما سيتم إخراجه:

Do you want to perform these actions?
  Terraform will perform the actions described above.
  Only 'yes' will be accepted to approve.

  Enter a value:    

# سيتم إنشاء aws_instance.ubuntu

aws_instance.ubuntu: Creating...
aws_instance.ubuntu: Still creating... [10s elapsed]
aws_instance.ubuntu: Still creating... [20s elapsed]
aws_instance.ubuntu: Still creating... [30s elapsed]
aws_instance.ubuntu: Creation complete after 33s [id=i-07cefd2a426a179b5]

Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

بناء مثيل EC2 في AWS: الإنشاء

الآن أنت مستعد لتشغيله بنفسك عن طريق تشغيل terraform apply. سترى أدناه الإخراج مثل terraform plan، ولكن مع إضافة استفسار للتأكيد على أنك فعلاً ترغب في تطبيق هذه التغييرات.

بمجرد كتابة “نعم”، ستبدأ Terraform EC2 في توفير نسخة Terraform EC2 عن طريق استدعاء واجهات برمجة التطبيق (APIs) لـ AWS باستخدام مفتاح الوصول الموجود في ملف الاعتماد الخاص بك. قد يستغرق ذلك بعض الوقت. عند الانتهاء، سترى شيئًا مشابهًا لما يلي:

Plan: 0 to add, 0 to change, 1 to destroy.

Do you really want to destroy all resources?
  Terraform will destroy all your managed infrastructure, as shown above.
  There is no undo. Only 'yes' will be accepted to confirm.

  Enter a value: 

تدمير إنشاءة EC2 الخاصة بـ AWS

aws_instance.ubuntu: Destroying... [id=i-07cefd2a426a179b5]
aws_instance.ubuntu: Still destroying... [id=i-07cefd2a426a179b5, 10s elapsed]
aws_instance.ubuntu: Still destroying... [id=i-07cefd2a426a179b5, 20s elapsed]
aws_instance.ubuntu: Still destroying... [id=i-07cefd2a426a179b5, 30s elapsed]
aws_instance.ubuntu: Destruction complete after 30s

Destroy complete! Resources: 1 destroyed.

عند الانتهاء من بيئة الاختبار، يمكنك تدمير الإنشاءة.

في وحدة التحكم الخاصة بك في سطر الأوامر / PowerShell، اكتب terraform destroy. مثل أمر apply، سترى قائمة بالموارد التي ستقوم Terraform بتدميرها ثم تتلقى رسالة تأكيد قبل تدميرها فعليًا.

بمجرد كتابة “نعم”، ستبدأ Terraform EC2 في تدمير الإنشاءة وتؤكد عند الانتهاء.

Source:
https://adamtheautomator.com/terraform-windows/