التطبيق · فصل ٥

المتغيرات والمخرجات

variable · tfvars · TF_VAR_ · auto.tfvars · output · local
🎯 الهدف: تعرف مين اللي يكسب لو نفس المتغير جاي من البيئة ومن ملف ومن علم -var، وتطلع مخرج من غير ما تكرر النص.

المتغير

variables.tf
variable "greeting" {  type        = string  description = "text written into the file"  default     = "hello from terraform"}

default يشتغل لو محدش مدّ قيمة. من غيره، plan هيقف ويسأل، أو يفشل لو شغّلت -input=false في CI.

مين اللي يكسب

نفس المتغير اتقاس على 1.16.6. اللي تحت يكسب اللي فوقه:

  1. default جوه البلوك.
  2. متغير بيئة اسمه TF_VAR_greeting.
  3. ملف terraform.tfvars.
  4. أي ملف *.auto.tfvars، وبالترتيب الأبجدي لو أكتر من ملف.
  5. علم -var و-var-file. آخر علم في الأمر يكسب.

اللي ظهر في التشغيل: terraform.tfvars غطّى البيئة، وz.auto.tfvars غطّى terraform.tfvars، و-var 'greeting=from-flag' غطّى الاتنين.

متفتكرش إن ملف tfvars دايمًا آخر كلمة. علم الأمر أقوى، وملف auto أقوى من terraform.tfvars.
terminal
export TF_VAR_greeting="from-env"terraform apply -var 'greeting=from-flag'

في المثال ده اللي هيتكتب في الملف هو from-flag.

sensitive يخبي الواجهة

variables.tf
variable "greeting" {  type      = string  sensitive = true}output "greeting" {  value     = var.greeting  sensitive = true}

الخطة طبعت (sensitive value)، وبعد apply المخرج اتطبع بكلمة sensitive بين قوسين زاوية. فتح terraform.tfstate لقى secret-value جوه outputs ومعاها "sensitive": true. العلامة للعرض. الفصل السابق يحط الملف ده بره git.

local للمكرر

locals.tf
locals {  filename = "${path.module}/hello.txt"}resource "local_file" "note" {  filename = local.filename  content  = "${var.greeting}\n"}

local مش مدخل من بره. حساب جوه الملف عشان متكررش المسار في المورد والمخرج. الإشارة local.filename من غير var.

المخرج عقد بين الفولدرات

output هو اللي الموديول التاني أو سكربت CI يقرأه. في المعمل، path طبع مكان hello.txt. متطلّعش كل حقول المورد. طلّع اللي المستهلك محتاجه.

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

🧠 اختبر نفسك
١) فيه terraform.tfvars وفيه -var بنفس الاسم. مين يكسب؟
علم -var.
٢) ملف z.auto.tfvars وملف terraform.tfvars. مين يكسب؟
z.auto.tfvars. ملفات auto بعد terraform.tfvars.
٣) output حاطط sensitive. القيمة مش في الدفتر؟
لأ. الطرفية بس اللي بتخبيها. الدفتر فيه النص.