آموزش نصب و راهاندازی Terraform
Terraform ابزاری مفید و محبوب از شرکت HashiCorp است که با استفاده از آن میتوانید از IaC (زیرساخت بهعنوان کد) بهمنظور تنظیم سریع و دقیق محیطهای مبتنیبر فناوریهای ابری استفاده کنید. دراینبین، یکی از مشکلات همیشگی کاربران نصب ابزار Terraform بوده است. در این مقاله از بلاگ آکادمی ابرها، میخواهیم نحوه نصب و راهاندازی Terraform را گامبهگام و بهصورت تصویری به شما آموزش دهیم؛ پس تا پایان با ما همراه باشید.
نصب و راهاندازی Terraform
Terraform در دو نسخه Open Source و Terraform Cloud عرضه میشود. Terraform Cloud پلتفرم میزبانی آنلاینی است که رابط کاربری برای اتوماسیون تسکها و مدیریت آنها دراختیار کاربر قرار میدهد؛ بااینحال، همچنان کدها باید بهصورت دستی توسعه یابند. همچنین برای مدیریت آسانتر Terraform، میتوانیم از پلتفرم تحلیل زیرساخت آسان Spacelift استفاده کنیم.
در این مطلب، با نسخه منبعباز Terraform کار خواهیم کرد. گفتنی است باینری این ابزار را میتوانیم از وبسایت Terraform آن دانلود کنیم.
لینک وبسایت : terraform.io
دانلود Terraform
پس از ورود به بخش دانلود وبسایت، براساس سیستمعامل و پکیج منیجر مدنظرمان، باید Terraform را دانلود کنیم. اسکرینشاتهایی که در این آموزش استفاده کردهایم، همگی براساس سیستمعامل macOS تهیه شدهاند؛ بااینحال، مراحل راهاندازی در تمامی سیستمعاملها یکسان است. بعد از دانلود و نصب، با استفاده از دستور نشاندادهشده در تصویر زیر، میتوانیم بررسی کنیم که آیا نسخه نصبشده همانی است که مدنظر داریم یا خیر.
sumeetninawe@Sumeets-MacBook-Pro tf-tuts % terraform -v Terraform v1.2.3 on darwin_arm64 sumeetninawe@Sumeets-MacBook-Pro tf-tuts %
AWS CLI
باتوجهبه اینکه در این آموزش با AWS (مخفف Amazon Web Service) کار خواهیم کرد تا زیرساختهای خود را با استفاده از Terraform تنظیم کنیم، باید AWS CLI را نیز نصب کنیم. پس از نصب موفق، میتوانیم نسخه AWS CLI را با استفاده از دستور زیر کنترل کنیم:
sumeetninawe@Sumeets-MacBook-Pro tf-tuts % aws --version aws-cli/2.7.9 Python/3.9.11 Darwin/21.3.0 exe/x86_64 prompt/off sumeetninawe@Sumeets-MacBook-Pro tf-tuts %
درادامه باید وارد AWS Web Console شویم و کاربری را برای Terraform ایجاد کنیم. کاربر ایجادشده باید دسترسی Programmatic داشته باشد. برای این منظور، گزینه Programmatic Access را باید فعال کنیم. این موضوع در تصویر زیر نشان داده شده است:
فعلاً باید نقش مدیریتی برای این کاربر تعریفشده ارائه شود. باوجوداین، توصیه میکنیم هنگام کار روی پروژهها، از اصل حداقل امتیاز پیروی کنید.
هنگامیکه کاربر با موفقیت ایجاد شد، Access Key ID و Secret Access Key را در جایی مطمئن یادداشت میکنیم؛ چون بعداً به آن نیاز خواهیم داشت.
حالا باید اعتبارنامههایی را در AWS CLI پیکربندی کنیم که نصب آن را در قسمتهای قبلی مشاهده کردید. برای این منظور، ترمینال را باز و دستور aws configure را برای پیکربندی اعتبار پیشفرض اجرا میکنیم. در مثال زیر، از منطقه زمانی پیشفرض استفاده کردهایم؛ ولی شما میتوانید براساس نیاز خود آن را تغییر دهید:
sumeetninawe@Sumeets-MacBook-Pro tf-tuts % aws configure AWS Access Key ID [****************PYVK]: ****PYVK AWS Secret Access Key [****************duMt]: ****duMt Default region name [eu-central-1]: Default output format [None]: sumeetninawe@Sumeets-MacBook-Pro tf-tuts %
با انجام این کار، موفق میشویم محیط خود را برای شروع کار با Terraform و AWS راهاندازی کنیم.
توجه: درصورتیکه بتوانید روشی دیگر را برای دسترسی به AWS پیدا کنید، Terraform این قابلیت را دارد که بدون نیاز به AWS CLI، Call های API را برقرار کند.
Providerهای Terraform
Terraform رویکردی مدولار را در معماری کاربردی خود پیادهسازی میکند. ماژول اصلی موردنیاز برای انجام توابع هسته اصلی Terraform، همان باینری بود که در قسمت قبلی آن را دانلود کردیم. هر عملیات یا دستور CLI هم که شامل فراخوانی هیچیک از APIهای ارائهدهنده ابری نباشند، ازجمله توابع اصلی این باینری هستند.
برای کار با Provider ابری مانند AWS در مثالی که در این آموزش به آن اشاره میکنیم، Terraform ماژول مرتبط را نمونهسازی و باینری را در دایرکتوری Root پروژه دانلود میکند. حالا باید با دستورهای کدنویسیشده به Terraform بگوییم تا از نسخهای خاص از ارائهدهنده AWS استفاده کند و پروژه Terraform ما بتواند منابع AWS را فراهم کند.
حال زمان ایجاد پروژه Terraform رسیده است. یک دایرکتوری را در محل مناسبی از سیستم خود ایجاد و این مسیر را در IDE خود باز میکنیم. تمامی کدهای Terraform در فایلی با پسوند .tf که در ریشه این دایرکتوری ایجاد شده است، قرار خواهند گرفت. فایلی با نام و پسوند provider.tf در این دایرکتوری خالی ایجاد میکنیم و بلوک Provider را مانند کدهای زیر مینویسیم:
terraform { required_providers { aws = { source = "hashicorp/aws" version = "~> 4.19.0" } } }
همانطورکه پیشتر گفتیم، Terraform از زبان HCL استفاده میکند. HCL زبان پیکربندی اعلانی است که به ما در اعلامکردن منابع ابریای کمک میکند که میخواهیم با استفاده از Terraform ارائه کنیم. در فایل provider.tf، یک بلوک terraform را مشخص کردهایم. در این بلوک، یک بلوک دیگر نیز با نام require_provider قرار دادهایم. بلوک require_provider یک اتریبیوت AWS دارد که شیئی با چند ویژگی به آن اختصاص داده شده است. این ویژگیها منبع و نسخه مدنظر ارائهدهنده AWS را تعریف میکنند. همچنین، اسناد خاص Provider در رجیستری نگهداری میشوند.
کدهایی که در بالا دیدیم، به Terraform دستور میدهند تا ارائهدهنده AWS را با نسخه ۴.۱۹.۰ بهصورت اولیه مقداردهی کند. حالا فایل provider.tf را ذخیره میکنیم. برای مقداردهی اولیه پروژه Terraform نیز، میتوانیم دستور terraform init را در دایرکتوری ریشه اجرا کنیم. در این صورت، باید یک خروجی مانند آنچه درادامه ارائه میشود، مشاهده کنیم:
sumeetninawe@Sumeets-MacBook-Pro tf-tuts % terraform init Initializing the backend... Initializing provider plugins... - Finding hashicorp/aws versions matching "~> 4.19.0"... - Installing hashicorp/aws v4.19.0... - Installed hashicorp/aws v4.19.0 (signed by HashiCorp) Terraform has created a lock file .terraform.lock.hcl to record the provider selections it made above. Include this file in your version control repository so that Terraform can guarantee to make the same selections by default when you run "terraform init" in the future. Terraform has been successfully initialized! You may now begin working with Terraform. Try running "terraform plan" to see any changes that are required for your infrastructure. All Terraform commands should now work. If you ever set or change modules or backend configuration for Terraform, rerun this command to reinitialize your working directory. If you forget, other commands will detect it and remind you to do so if necessary. sumeetninawe@Sumeets-MacBook-Pro tf-tuts %
همانطورکه در این خروجی نیز مشاهده میکنید، Teraform با موفقیت نسخه مدنظر AWS را راهاندازی کرده است. حالا اگر به دایرکتوری ریشه خود نیز مراجعه کنیم، موارد نشاندادهشده در تصویر زیر را در آن خواهیم دید:
همانطورکه میبینید، بهجز فایل provider.tf و README.md، در این پوشه فایل دیگری با نام .terraform.lock.hcl و زیرشاخهای با نام .terraform. در این پوشه قرار دارد. فایل terraform.lock در این قسمت برای مدیریت چک مقادیری استفاده میشود که در باینریهای ماژول دانلودشده کاربرد دارد. در قسمتهای بعدی همین مقاله از بلاگ پارس پک، به این موضوع هم خواهیم پرداخت. دایرکتوری فرعی .terraform نیز همان قسمتی است که باینری پلاگین ارائهدهنده AWS دانلود میشود. اگر تمام مراحل عنوانشده تا این قسمت را با موفقیت انجام داده باشید، احتمالاً باید دایرکتوری شما شبیه تصویر نشان دادهشده در بالا باشد.
تا این مرحله، موفق شدیم که ارائهدهنده Terraform را راهاندازی کنیم. حالا میخواهیم با استفاده از Terraform، برخی منابع را در کنسول AWS خود ایجاد کنیم.
منابع (Resources)
در اولین قدم، باید فایل دیگری با نام main.tf در همان دایرکتوری ایجاد کنیم. هدف از این فایل، اعلام Resourceهایی است که میخواهیم در AWS ایجاد کنیم. اگرچه میتوانیم با همان فایل provider.tf نیز همان کار را انجام دهیم و این فایل را ایجاد نکنیم، ایجاد فایل جداگانه برای مدیریت بهتر کدهای Terraform به ما کمک خواهد کرد. برای این منظور، کدهای زیر را به فایل main.tf خود اضافه میکنیم:
resource "aws_instance" "my_vm" { ami = "ami-065deacbcaac64cf2" //Ubuntu AMI instance_type = "t2.micro" tags = { Name = "My EC2 instance", } }
با استفاده از این کدها، یک بلوک منبع از نوع aws_instance ایجاد شده است. در این بلوک، Terraform یک منبع نمونه EC2 در AWS با ویژگیها و خصوصیات دادهشده ایجاد خواهد کرد. AWS در aws_instance کمک میکند تا ارائهدهندهای را شناسایی کند که برای انجام این تسک نیاز دارد. پارامتر دوم، یعنی my_mvm، شناسهای داخلی است که هدف آن ارجاع به نمونه EC2 در جایی دیگر از کد است؛ البته میتوانیم هر نام دیگری را نیز برای این شناسه در نظر بگیریم.
در میان اتریبیوتهای Resource، ما از AMI استفاده کردهایم که کار آن تعریفکردن تصویری است که میخواهیم از آن برای ایجاد نمونه EC2 بهره ببریم. AMI انتخابشده در این قسمت تصویری از Ubuntu در اروپایمرکزی است. همچنین، از instance_type برای تعریف اندازه نمونه EC2 استفاده شده است. علاوهبراین، از تگ Name نیز با مقدار My EC2 Instance استفاده کردهایم که در قسمت پایانی کد میتوانید آن را ببینید. با انجام این مراحل، توانستهایم با موفقیت کدی را با استفاده از Terraform برای ایجاد نمونه EC2 در AWS بهکارگیری کنیم.
Terraform CLI
تا اینجای مقاله، توانستهایم از کدهای Terraform برای تأمین Resourceهای AWS استفاده کنیم؛ اما هنوز این کدها را ارائه نکردهایم. در این بخش، نحوه انجام این کار را نیز خواهیم آموخت. قبلازآن اجازه دهید تا به برخی از دستورهای مهم Terraform CLI اشاره کنیم. این کار به ما در درک چرخه حیات منابع مدیریتشده Terraform کمک خواهد کرد.
۱. اصلاح فرمت فایلها با دستور fmt
در اغلب مواقع، اگرچه کدهای نوشتهشده در Terraform ازنظر سینتکس کاملاً بدون مشکل است، ازنظر خوانایی مشکلاتی دارند. اضافهکردن تورفتگی در کدها باعث میشوند تا خوانایی کدهای ما بیشتر شوند. دستور terraform format سبب میشوند تا فرمت کدهای نوشتهشده در Terraform برای تمامی فایلهای با پسوند .tf به شیوهای مناسب بهبود داده شود.
برای انجام این کار، کافی است تا در دایرکتوری پروژه خود، یعنی همان قسمتی که فایلهای main.tf و provider.tf را ایجاد کردهایم، فرمان terraform fmt را اجرا کنیم تا فرمت کدهای نوشتهشده در مدتزمان کوتاهی اصلاح شوند.
sumeetninawe@Sumeets-MacBook-Pro tf-tuts % terraform fmt main.tf sumeetninawe@Sumeets-MacBook-Pro tf-tuts %
خروجی این فرمان، تنها نشاندهنده فایلهایی است که فرمت آنها با استفاده از این فرمان اصلاح شده است.
۲. مقداردهی اولیه با دستور init
در قسمتهای قبلی این مقاله، از این دستور استفاده کردهایم. معمولاً استفاده از این دستور تا وقتی که از Provider استفاده میکنیم، در همان ابتدای پروژه کاربردی است. بااینحال، اگر حین پروژه تصمیم بگیریم Providerهای بیشتری اضافه کنیم، مجدداً به این دستور نیاز خواهیم داشت.
این نکته را مدنظر قرار دهید که اگر بدون استفاده از مقداردهی اولیه سعی کنید Provider اضافه یا تغییراتی در آن اِعمال کنید، با خطا مواجه خواهید شد. بهعنوان نمونه، اگر بخواهیم در فایل provider.tf، ویژگی نسخه AWS را از ۴.۱۹.۰ به ۴.۱۸.۰ تغییر دهیم و مجدداً دستور terraform plan را اجرا کنیم، با پیغام خطایی مشابه زیر مواجه خواهیم شد:
sumeetninawe@Sumeets-MacBook-Pro tf-tuts % terraform plan ╷ │ Error: Inconsistent dependency lock file │ │ The following dependency selections recorded in the lock file are inconsistent with the current configuration: │ - provider registry.terraform.io/hashicorp/aws: locked version selection 4.19.0 doesn't match the updated version constraints "~> 4.18.0" │ │ To update the locked dependency selections to match a changed configuration, run: │ terraform init -upgrade ╵ sumeetninawe@Sumeets-MacBook-Pro tf-tuts %
همانطورکه از این پیغام خطا مشخص است، Terraform متوجه این تغییر میشود و از ما میخواهد که این دایرکتوری را مجدداً مقداردهی کنیم تا ماژول Provider بتواند بهروز شود. حالا کافی است که دستور terraform init -upgrade را اجرا کنیم:
sumeetninawe@Sumeets-MacBook-Pro tf-tuts % terraform init -upgrade Initializing the backend... Initializing provider plugins... - Finding hashicorp/aws versions matching "~> 4.18.0"... - Installing hashicorp/aws v4.18.0... - Installed hashicorp/aws v4.18.0 (signed by HashiCorp) Terraform has made some changes to the provider dependency selections recorded in the .terraform.lock.hcl file. Review those changes and commit them to your version control system if they represent changes you intended to make. Terraform has been successfully initialized! You may now begin working with Terraform. Try running "terraform plan" to see any changes that are required for your infrastructure. All Terraform commands should now work. If you ever set or change modules or backend configuration for Terraform, rerun this command to reinitialize your working directory. If you forget, other commands will detect it and remind you to do so if necessary. sumeetninawe@Sumeets-MacBook-Pro tf-tuts %
همانطورکه در خروجی بالا مشاهده میکنید، با استفاده از دستور init توانستیم نسخه ماژول Provider را مجدداً مقداردهی کنیم.
۳. ارزیابی فایلهای پیکربندی با استفاده از دستور plan
دستور plan به ما کمک میکند تا اعلان منبعی (Resource) را اعتبارسنجی کنیم که با استفاده از Terraform انجام دادهایم. این فرمان تمامی فایلهای پیکربندی Terraform را ارزیابی و هرگونه خطای ناشی از اشتباه در Syntax، خطاهای مربوط به نداشتن تطابق نسخه و… را شناسایی میکند.
برای استفاده از این کد، در دایرکتوری کدها دستور terraform plan را اجرا میکنیم. در این صورت، باید با خروجیای مانند خروجی زیر مواجه شوید:
sumeetninawe@Sumeets-MacBook-Pro tf-tuts % terraform plan Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: + create Terraform will perform the following actions: # aws_instance.my_vm will be created + resource "aws_instance" "my_vm" { + ami = "ami-065deacbcaac64cf2" + 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) + disable_api_termination = (known after apply) + ebs_optimized = (known after apply) + get_password_data = false + host_id = (known after apply) + id = (known after apply) + instance_initiated_shutdown_behavior = (known after apply) + instance_state = (known after apply) + instance_type = "t2.micro" + ipv6_address_count = (known after apply) + ipv6_addresses = (known after apply) + key_name = (known after apply) + monitoring = (known after apply) + outpost_arn = (known after apply) + password_data = (known after apply) + placement_group = (known after apply) + placement_partition_number = (known after apply) + primary_network_interface_id = (known after apply) + private_dns = (known after apply) + private_ip = (known after apply) + public_dns = (known after apply) + public_ip = (known after apply) + secondary_private_ips = (known after apply) + security_groups = (known after apply) + source_dest_check = true + subnet_id = (known after apply) + tags = { + "Name" = "My EC2 instance" } + tags_all = { + "Name" = "My EC2 instance" } + tenancy = (known after apply) + user_data = (known after apply) + user_data_base64 = (known after apply) + user_data_replace_on_change = false + vpc_security_group_ids = (known after apply) + capacity_reservation_specification { + capacity_reservation_preference = (known after apply) + capacity_reservation_target { + capacity_reservation_id = (known after apply) + capacity_reservation_resource_group_arn = (known after apply) } } + ebs_block_device { + delete_on_termination = (known after apply) + device_name = (known after apply) + encrypted = (known after apply) + iops = (known after apply) + kms_key_id = (known after apply) + snapshot_id = (known after apply) + tags = (known after apply) + throughput = (known after apply) + volume_id = (known after apply) + volume_size = (known after apply) + volume_type = (known after apply) } + enclave_options { + enabled = (known after apply) } + ephemeral_block_device { + device_name = (known after apply) + no_device = (known after apply) + virtual_name = (known after apply) } + maintenance_options { + auto_recovery = (known after apply) } + metadata_options { + http_endpoint = (known after apply) + http_put_response_hop_limit = (known after apply) + http_tokens = (known after apply) + instance_metadata_tags = (known after apply) } + network_interface { + delete_on_termination = (known after apply) + device_index = (known after apply) + network_card_index = (known after apply) + network_interface_id = (known after apply) } + root_block_device { + delete_on_termination = (known after apply) + device_name = (known after apply) + encrypted = (known after apply) + iops = (known after apply) + kms_key_id = (known after apply) + tags = (known after apply) + throughput = (known after apply) + volume_id = (known after apply) + volume_size = (known after apply) + volume_type = (known after apply) } } Plan: 1 to add, 0 to change, 0 to destroy. ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── Note: You didn't use the -out option to save this plan, so Terraform can't guarantee to take exactly these actions if you run "terraform apply" now. sumeetninawe@Sumeets-MacBook-Pro tf-tuts %
همانطورکه میبینید، اطلاعات بسیار زیادی در این خروجی ارائه شده است. بهطورخلاصه، تمامی Resourceهای ایجادشده در این گزارش عنوان شدهاند. همچنین، ازآنجاکه برای اولینبار است که این فرمان را بهکار میگیریم، هیچ تغییر یا حذفی ایجاد نشده است. خلاصه گزارش دستور plan نیز روش مناسبی برای مطابقتدادن آمارها در مواقعی است که با مجموعه بزرگتری از Resourceها سروکار داریم.
۴. دستور apply برای فراهمسازی Resourceها
تا اینجای مطلب، توانستهایم اقداماتی را تأیید کنیم که Terraform درصورت اجرای این کدها انجام میدهد. حالا باید برای فراهمسازی Resourceها اقدام کنیم.
دستور terraform apply به ما کمک میکند تا تمام Resourceهای اعلامشده در فایل main.tf را فراهم کنیم. هنگامیکه از این دستور استفاده میکنیم، مجدداً خروجیای مشابه با دستور plan بازگردانده میشود و درنهایت نیز تأیید نهایی ما را بهصورت تصویر زیر درخواست خواهد کرد:
. . . + network_interface_id = (known after apply) } + root_block_device { + delete_on_termination = (known after apply) + device_name = (known after apply) + encrypted = (known after apply) + iops = (known after apply) + kms_key_id = (known after apply) + tags = (known after apply) + throughput = (known after apply) + volume_id = (known after apply) + volume_size = (known after apply) + volume_type = (known after apply) } } Plan: 1 to add, 0 to change, 0 to destroy. Do you want to perform these actions? Terraform will perform the actions described above. Only 'yes' will be accepted to approve. Enter a value:
حالا کافی است که عبارت yes را تایپ کنیم و کلید Enter را فشار دهیم:
Enter a value: yes aws_instance.my_vm: Creating... aws_instance.my_vm: Still creating... [10s elapsed] aws_instance.my_vm: Still creating... [20s elapsed] aws_instance.my_vm: Still creating... [30s elapsed] aws_instance.my_vm: Creation complete after 31s [id=i-0eba265e21a442a36] Apply complete! Resources: 1 added, 0 changed, 0 destroyed. sumeetninawe@Sumeets-MacBook-Pro tf-tuts %
در این صورت، Terraform ارائه نمونه EC2 با ویژگیهایی که قبلاً برای آن مشخص کردهایم، شروع خواهد کرد؛ البته برای تمامی ویژگیهایی که مقداری برایشان در نظر گرفته نشده است، مقداری پیشفرض انتخاب خواهد شد.
همانطورکه از خروجی بالا نیز روشن است، ارائه موفق EC2 بهوسیله Terraform با تمامی این ویژگیها، درحدود ۳۱ ثانیه طول کشیده است. با ورود به کنسول AWS خود نیز میتوانیم تأییدیه این موضوع را دریافت کنیم.
۵. حذف Resourceها با استفاده از دستور destroy
همانطورکه میدانید، Terraform مسئولیت مدیریت چرخه حیات زیرساخت را برعهده دارد. این بدانمعناست که اگر از این ابزار برای ایجاد Resource خاصی استفاده کنیم، مسئولیت حذف آن نیز برعهده Terraform است. با استفاده از دستور destroy، میتوانیم تمامی این منابع یا تعدادی از آنها را بهطورکامل حذف کنیم.
بهعنوان مثال، برای حذف نمونه EC2 ایجادشده با دستور apply، از دستور terraform destroy بهصورت زیر استفاده میکنیم:
. . . - instance_metadata_tags = "disabled" -> null } - root_block_device { - delete_on_termination = true -> null - device_name = "/dev/sda1" -> null - encrypted = false -> null - iops = 100 -> null - tags = {} -> null - throughput = 0 -> null - volume_id = "vol-009f1a15512afd580" -> null - volume_size = 8 -> null - volume_type = "gp2" -> null } } 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:
درادامه، باید مجدداً تأییدیه عملیات حذف را وارد کنیم. برای تأیید انجام عملیات، کافی است عبارت yes را وارد کنیم و Enter را فشار دهیم:
Enter a value: yes aws_instance.my_vm: Destroying... [id=i-0eba265e21a442a36] aws_instance.my_vm: Still destroying... [id=i-0eba265e21a442a36, 10s elapsed] aws_instance.my_vm: Still destroying... [id=i-0eba265e21a442a36, 20s elapsed] aws_instance.my_vm: Still destroying... [id=i-0eba265e21a442a36, 30s elapsed] aws_instance.my_vm: Destruction complete after 40s Destroy complete! Resources: 1 destroyed. sumeetninawe@Sumeets-MacBook-Pro tf-tuts %
همانطورکه از نتیجه خروجی نیز کاملاً مشخص است، Terraform نمونه EC2 را با موفقیت حذف کرده است. تأییدیه این موضوع را نیز میتوانیم از AWS دریافت کنیم:
جمعبندی
IaC یا زیرساخت بهعنوان کد یکی از روشهای کارآمد برای اِعمال تنظیمات در محیطهای ابری است. Terraform ازجمله ابزارهای محبوبی بهشمار میآید که برای استفاده از این روش طراحی شده است. در این مقاله از بلاگ آکادمی ابرها، علاوهبر آموزش نصب و راهاندازی این ابزار، توانستیم با دستورهای مهمی آشنا شویم که نمونههای مختلفی از AWS را ایجاد یا آن را حذف میکنند. این دستورها ازجمله دستورهایی مهمی هستند که هر توسعهدهندهای باید از آنها آگاهی داشته باشد. اهمیت این دستورها بدیندلیل اهمیت بیشتری مییابند که آنها چرخه حیات کامل Resourceهایی را تعریف میکنند که ازطریق Terraform مدیریت میشوند.
سؤالات متداول
۱. IaC یعنی چه؟
IaC مخفف Infrastructure as Code بهمعنای «زیرساخت بهعنوان کد» است. درواقع، IaC فرایند مدیریت و تهیه زیرساخت با استفاده از کد بهجای انجام آن بهصورت دستی است.
۲. Terraform چیست؟
Terraform ابزاری نرمافزاری است که بهصورت منبعباز طراحی شده است و به شما امکان میدهد تا زیرساخت مراکز داده را با استفاده از زبان پیکربندی اعلانی HCL یا JSON معرفی و ارائه کنید.
۳. Terraform روی چه سیستمهایی قابلیت ارائه دارد؟
نرمافزار Terraform تقریباً روی تمامی سیستمعاملهای معتبر، ازجمله Windows و macOS و Linux ارائه شده است.
۴. Ansible چیست؟
یکی از ابزارهای مهم و متنبازی است که برای اهداف IaC بهکارگیری میشود. از این ابزار بهویژه برای عملیاتهایی همچون کانفیگکردن سرور یا قراردادن برنامهها و سرویسها روی سرور استفاده میشود.
دیدگاهتان را بنویسید