البداية · فصل ١

ليه البنية تبقى ملف

infrastructure as code · desired state · provider · console drift
🎯 الهدف: تفهم إن Terraform بيوصف الشكل المطلوب، والـ provider هو اللي يكلّم الكلاود أو الجهاز.

الكونسول بينسى

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

الملف بيخلّي الرسمة في git. تراجعها، ترجّعها، وتشوف الفرق قبل ما أي حاجة تتلمس.

الكونسول كويس للتجربة. الملف هو اللي يفضل لما الحساب يبقى فيه حاجات الناس معتمدة عليها.

الملف هو الرسمة

Terraform لغة وصف. بتكتب الشكل اللي عايزه، مش خطوات «اعمل كليك هنا وبعدين هنا». الأداة تقارن الرسمة باللي موجود، وتطلّع قائمة التغييرات.

الاسم الشائع للموضوع: infrastructure as code. الكود هنا مش برنامج بيحسب، ده وصف للبنية.

الـ provider هو المترجم

Terraform نفسه مش عارف يعمل سيرفر على AWS. الـ provider إضافة بتفهم نوع معيّن من الحاجات:

  • hashicorp/aws يكلّم AWS.
  • hashicorp/local يكتب ملف على جهازك. ده اللي هنستخدمه في المعمل، عشان التجربة متحتاجش حساب كلاود.
  • فيه provider لكل خدمة تقريبًا، من الريجستري.

جوه الملف، بلوك resource هو حاجة واحدة عايزها تتعمل. نوعها ييجي من الـ provider. اسمها المحلي اسم أنت بتختاره عشان تشير له في باقي الملف.

الرسمة

ملفات .tf. دي اللي بتتحط في git.

المترجم

الـ provider. terraform init ينزّله.

قبل ما تكمّل

نزّل Terraform من صفحة التثبيت عند HashiCorp، وبعدين terraform version. الأوامر تحت اتشغّلت على 1.16.6. أول init محتاج نت عشان ينزّل الـ provider. بعد كده الأوامر بتشتغل من النسخة اللي اتسجلت في ملف القفل.

خلّصت الفصل لما

🧠 اختبر نفسك
١) ليه سكربت «اعمل سيرفر» ممكن يعمّل سيرفرات زيادة؟
لأنه بينفّذ خطوة، ومش بيسأل دفتر عن اللي اتعمل قبل كده.
٢) مين اللي يكلّم AWS؟
الـ provider، مش أمر terraform لوحده.
٣) ليه المعمل هنا ملف على الجهاز؟
عشان تجرب init وplan وapply من غير حساب كلاود. نفس الدورة على أي provider.