سرور مجازی

۲ مطلب با کلمه‌ی کلیدی «خرید vps» ثبت شده است

  • ۰
  • ۰

نحوه نصب و مدیریت Supervisor

ورود به سایت

معرفی

در بسیاری از محیط‌های VPS، معمولاً تعدادی برنامه کوچک خواهید داشت که می‌خواهید دائماً اجرا کنید، چه اسکریپت‌های پوسته کوچک، برنامه‌های Node.js یا هر بسته‌ای با اندازه بزرگ.

معمولاً بسته‌های خارجی با یک فایل واحد عرضه می‌شوند که به آنها اجازه می‌دهد توسط یک سیستم init مانند systemd مدیریت شوند یا به‌عنوان تصاویر docker بسته‌بندی شوند که می‌توانند توسط یک موتور کانتینر مدیریت شوند. با این حال، برای نرم افزارهایی که به خوبی بسته بندی نشده اند، یا برای کاربرانی که ترجیح می دهند با سیستم init سطح پایین روی سرور خود تعامل نداشته باشند، داشتن یک جایگزین سبک مفید است.

Supervisor یک مدیر فرآیند است که یک رابط منحصر به فرد برای مدیریت و نظارت بر تعدادی از برنامه های طولانی مدت ارائه می دهد. در این آموزش، Supervisor را بر روی یک سرور لینوکس نصب می‌کنید و یاد می‌گیرید که چگونه تنظیمات Supervisor را برای چندین برنامه مدیریت کنید.

پیش نیازها

برای تکمیل این راهنما، شما نیاز دارید:

  • یک سرور لینوکس و یک کاربر غیر ریشه با امتیازات sudo.

مرحله 1 – نصب

با نصب Supervisor شروع کنید:

sudo apt install supervisor

سرویس سرپرست پس از نصب به طور خودکار اجرا می شود. می توانید وضعیت آن را بررسی کنید:

sudo systemctl status supervisor

شما باید خروجی زیر را دریافت کنید:

 

Output

● supervisor.service - Supervisor process control system for UNIX
     Loaded: loaded (/lib/systemd/system/supervisor.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2021-11-17 22:56:48 UTC; 5min ago

اکنون که Supervisor را نصب کرده ایم، می توانیم اولین برنامه های خود را اضافه کنیم.

مرحله 2 – اضافه کردن یک برنامه

بهترین روش برای کار با Supervisor نوشتن یک فایل پیکربندی برای هر برنامه ای است که مدیریت می کند.

به منظور نشان دادن عملکرد Supervisor، ما یک اسکریپت پوسته ایجاد می کنیم که کاری جز تولید یک خروجی قابل پیش بینی در ثانیه انجام نمی دهد، اما به طور مداوم در پس زمینه اجرا می شود تا زمانی که به صورت دستی متوقف شود. با استفاده از nano یا ویرایشگر متن مورد علاقه خود، فایلی به نام idle.sh را در فهرست اصلی خود باز کنید:

nano ~/idle.sh

مطالب زیر را اضافه کنید:

~/idle.sh

#!/bin/bash
while true
do
    # Echo current date to stdout
    echo `date`
    # Echo 'error!' to stderr
    echo 'error!' >&2
    sleep 1
done

ذخیره کنید و فایل را ببندید. اگر از nano استفاده می کنید، Ctrl+X را فشار دهید، سپس وقتی از شما خواسته شد، Y و Enter را فشار دهید.

بعد، اسکریپت خود را قابل اجرا کنید:

chmod +x ~/idle.sh

فایل های پیکربندی هر برنامه برای برنامه های Supervisor در دایرکتوری /etc/supervisor/conf.d قرار دارند، معمولاً یک برنامه در هر فایل اجرا می شود و به .conf ختم می شود. ما یک فایل پیکربندی برای این اسکریپت به عنوان`/etc/supervisor/conf.d/idle.conf ایجاد می کنیم:

sudo nano /etc/supervisor/conf.d/idle.conf

این مطالب را اضافه کنید:

/etc/supervisor/conf.d/idle.conf

command=/home/ubuntu/idle.sh
autostart=true
autorestart=true
stderr_logfile=/var/log/idle.err.log
stdout_logfile=/var/log/idle.out.log

این را خط به خط مرور می کنیم:

command=/home/ubuntu/idle.sh

پیکربندی با تعریف برنامه ای با نام بیکار و مسیر کامل برنامه شروع می شود:

autostart=true
autorestart=true

دو خط بعدی رفتار خودکار اسکریپت را تحت شرایط خاصی تعریف می کند.

گزینه autostart به Supervisor می گوید که این برنامه باید هنگام بوت شدن سیستم راه اندازی شود. تنظیم این مورد روی false به شروع دستی پس از خاموش شدن سیستم نیاز دارد.

autorestart تعریف می کند که چگونه Supervisor باید برنامه را در صورت خروج از آن مدیریت کند:

false به Supervisor می‌گوید که پس از خروج برنامه هرگز آن را مجددا راه‌اندازی نکند.
true به Supervisor می گوید که همیشه برنامه را پس از خروج مجدداً راه اندازی کند.
unexpected به Supervisor می گوید که فقط در صورتی برنامه را مجدداً راه اندازی کند که با یک کد خطای غیرمنتظره (به طور پیش فرض هر چیزی غیر از کدهای 0 یا 2) خارج شود. برای کسب اطلاعات بیشتر در مورد کدهای خطا، به دستور errno نگاه کنید.

stderr_logfile=/var/log/idle.err.log
stdout_logfile=/var/log/idle.out.log

دو خط پایانی مکان دو فایل لاگ اصلی را برای برنامه مشخص می کند. همانطور که توسط نام گزینه پیشنهاد می شود، stdout و stderr به ترتیب به مکان های stdout_logfile و stderr_logfile هدایت می شوند. دایرکتوری های مشخص شده باید از قبل وجود داشته باشند، زیرا Supervisor سعی نخواهد کرد هیچ دایرکتوری گمشده ای ایجاد کند.

پیکربندی که ما در اینجا ایجاد کرده ایم یک الگوی حداقلی برای یک برنامه Supervisor است. اسناد Supervisor بسیاری از گزینه های پیکربندی اختیاری دیگر را فهرست می کند که برای تنظیم نحوه اجرای برنامه ها در دسترس هستند.

هنگامی که فایل پیکربندی ما ایجاد و ذخیره شد، می توانیم از طریق دستور supervisorctl برنامه جدید خود را به Supervisor اطلاع دهیم. ابتدا به Supervisor می‌گوییم که به دنبال تنظیمات برنامه جدید یا تغییر یافته در فهرست /etc/supervisor/conf.d با استفاده از:

sudo supervisorctl reread

 

Output

idle: available

هر زمان که تغییری در هر فایل پیکربندی برنامه ایجاد می کنید، اجرای دو دستور قبلی تغییرات را اعمال می کند.

در این مرحله برنامه ما اکنون باید در حال اجرا باشد. ما می توانیم خروجی آن را با مشاهده فایل گزارش خروجی بررسی کنیم:

sudo tail /var/log/idle.out.log

 

Output

Sat Nov 20 22:21:22 UTC 2021
Sat Nov 20 22:21:23 UTC 2021
Sat Nov 20 22:21:24 UTC 2021
Sat Nov 20 22:21:25 UTC 2021
Sat Nov 20 22:21:26 UTC 2021
Sat Nov 20 22:21:27 UTC 2021
Sat Nov 20 22:21:28 UTC 2021
Sat Nov 20 22:21:29 UTC 2021
Sat Nov 20 22:21:30 UTC 2021
Sat Nov 20 22:21:31 UTC 2021

در مرحله بعد، برخی دیگر از کاربردهای Supervisor را پوشش خواهیم داد.

مرحله 3 – مدیریت برنامه ها

فراتر از اجرای برنامه‌ها، می‌خواهید توقف، راه‌اندازی مجدد یا وضعیت آنها را ببینید. برنامه supervisorctl که در مرحله 2 از آن استفاده کردیم، یک حالت تعاملی نیز دارد که می توانیم از آن برای کنترل برنامه های خود استفاده کنیم.

برای وارد شدن به حالت تعاملی، supervisorctl را بدون آرگومان اجرا کنید:

sudo supervisorctl

supervisorctl در ابتدا وضعیت و زمان آپدیت تمام برنامه های پیکربندی شده را چاپ می کند و سپس خط فرمان آن را چاپ می کند. با وارد کردن راهنما، تمام دستورات موجود آن آشکار می‌شود:

supervisor> help

 

Output

default commands (type help <topic>):
=====================================
add    clear  fg        open  quit    remove  restart   start   stop  update
avail  exit   maintail  pid   reload  reread  shutdown  status  tail  version

شما می توانید یک برنامه را با دستورات مرتبط به دنبال نام برنامه شروع یا متوقف کنید:

supervisor> stop idle

 

Output

idle: stopped

supervisor> start idle

 

Output

idle: started

با استفاده از دستور tail، می‌توانید آخرین ورودی‌های فهرست‌های stdout و stderr را برای برنامه خود مشاهده کنید:

supervisor> tail idle

 

Output

Sun Nov 21 00:36:10 UTC 2021
Sun Nov 21 00:36:11 UTC 2021
Sun Nov 21 00:36:12 UTC 2021
Sun Nov 21 00:36:13 UTC 2021
Sun Nov 21 00:36:14 UTC 2021
Sun Nov 21 00:36:15 UTC 2021
Sun Nov 21 00:36:17 UTC 2021

supervisor> tail idle stderr

 

Output

error!
error!
error!
error!
error!
error!
error!

با استفاده از وضعیت می توانید پس از ایجاد هر گونه تغییر، وضعیت اجرای فعلی هر برنامه را دوباره مشاهده کنید:

supervisor> status

 

Output

idle                      STOPPED    Nov 21 01:07 AM

در نهایت، می‌توانید با Ctrl+C یا با وارد کردن quit در فرمان از supervisorctl خارج شوید:

supervisor> quit

نتیجه

در این آموزش نحوه نصب و مدیریت Supervisor را یاد گرفتید. همانطور که گفته شد، Supervisor با استانداردهای مدرن بسیار سبک وزن است، اما همچنان به خوبی نگهداری می شود و می تواند ابزار مفیدی برای استقرارهای کوچکتر باشد. همچنین روشی کم‌معنا و خودکفایی برای تولید لاگ‌ها به‌عنوان بخشی از یک استقرار بزرگ‌تر است.

اگر چندین برنامه کوچک را اجرا می کنید که نیاز به دسترسی به وب دارند، ممکن است بخواهید درباره پیکربندی Nginx به عنوان یک پروکسی معکوس نیز مطالعه کنید، که یکی دیگر از اجزای اساسی استقرارهای کوچک و قابل استفاده مجدد است.

 

 

https://vpsgol.net/product/vps-germany/

 

https://vpsgol.net/product/vps-usa/

 

https://vpsgol.net/product/vps-france/

 

https://vpsgol.net/product/vps-canada/

 

https://vpsgol.net/product/vps-poland/

 

https://vpsgol.net/product/vps-netherlands/

 

https://vpsgol.net/product/vps-england/

برچسب‌ها:Supervisorبرنامه supervisorctlپیکربندی Nginxخرید vpsخرید سرور مجازیراه اندازی سرور مجازیسرور مجازیسرور مجازی آمریکا

  • behnam gol mohamadi
  • ۰
  • ۰

نحوه مدیریت داده های زیرساخت با خروجی های Terraform

ورود به سایت

 

معرفی

خروجی های Terraform برای استخراج اطلاعات مربوط به منابع زیرساخت از حالت پروژه استفاده می شود. با استفاده از سایر ویژگی های زبان پیکربندی Hashicorp (HCL) ، که Terraform از آن استفاده می کند ، می توان اطلاعات منابع را جستجو کرد و به ساختارهای داده پیچیده تری مانند لیست ها و نقشه ها تبدیل کرد. خروجی ها برای ارائه اطلاعات به نرم افزارهای خارجی مفید هستند که می توانند بر روی منابع زیرساخت ایجاد شده کار کنند.

در این آموزش ، با نحوی خروجی Terraform و پارامترهای آن با ایجاد یک زیرساخت ساده که Droplets را مستقر می کند ، آشنا خواهید شد. شما همچنین می توانید خروجی ها را به صورت برنامه نویسی با تبدیل به JSON تجزیه کنید.

پیش نیازها

توکن vpsgol Personal Access Token ، که می توانید از طریق کنترل پنل vpsgol ایجاد کنید. دستورالعمل انجام این کار را می توانید در این پیوند مشاهده کنید: نحوه ایجاد یک رمز دسترسی شخصی.
Terraform بر روی دستگاه محلی شما نصب شده و پروژه ای با ارائه دهنده vpsgol تنظیم شده است. مرحله 1 و مرحله 2 نحوه استفاده از Terraform با vpsgol را تکمیل کنید و مطمئن شوید که پوشه پروژه را terraform-outputs ، به جای loadbalance نامگذاری کنید. در مرحله 2 ، متغیر pvt_key و منبع کلید SSH را وارد نکنید.
آشنایی با انواع داده ها و حلقه های HCL. برای اطلاعات بیشتر ، آموزش نحوه بهبود انعطاف پذیری با استفاده از متغیرهای Terraform ، وابستگی ها و شرایط را مشاهده کنید.

توجه: این آموزش به طور خاص با Terraform 1.0.2 آزمایش شده است.

تعریف خروجی ها

در این بخش ، یک Droplet را اعلام می کنید ، آن را در ابر مستقر می کنید و با تعیین خروجی هایی که آدرس IP Droplet را نشان می دهد ، با خروجی ها آشنا می شوید.

از فهرست راهنمای terraform-outputs که به عنوان پیش نیاز ایجاد کرده اید ، فایل droplets.tf را برای ویرایش ایجاد کرده و باز کنید:

nano droplets.tf

منبع Droplet و تعریف خروجی زیر را اضافه کنید:

terraform-outputs/droplets.tf

resource “vpsgol_droplet” “web” { image = “ubuntu-20-04-x64” name = “test-droplet” region = “fra1” size = “s-1vcpu-1gb” } output “droplet_ip_address” { value = vpsgol_droplet.web.ipv4_address }

ابتدا یک منبع Droplet به نام وب اعلام کنید. نام واقعی آن در ابر به صورت قطره ای و در منطقه fra1 با اوبونتو 20.04 اجرا می شود.

سپس ، خروجی ای به نام droplet_ip_address اعلام می کنید. در Terraform ، خروجی ها برای صادرات و نشان دادن مقادیر داخلی و محاسبه شده و اطلاعات مربوط به منابع استفاده می شوند. در اینجا ، پارامتر مقدار را که داده را به خروجی می پذیرد ، روی آدرس IP قطره اعلام شده تنظیم می کنید. در زمان اعلام ، نامشخص است ، اما پس از استقرار Droplet در دسترس قرار می گیرد. خروجی ها بعد از هر بار استقرار نشان داده می شوند و قابل دسترسی هستند.

فایل را ذخیره و ببندید ، سپس پروژه را با اجرای دستور زیر مستقر کنید:

terraform apply -var “do_token=${DO_PAT}”

برای درخواست در صورت درخواست ، بله را وارد کنید. انتهای خروجی مشابه این خواهد بود:

Output…
vpsgol_droplet.web: Creating…

vpsgol_droplet.web: Creation complete after 32s [id=207631771]

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

Outputs:

droplet_ip_address = ip_address

 

آدرس IP برجسته متعلق به Droplet جدید شماست. با استفاده از پروژه منابع را روی ابر مستقر می کند و خروجی ها را در پایان نشان می دهد ، زمانی که همه ویژگی های منبع در دسترس هستند. بدون خروجی droplet_ip_address ، Terraform اطلاعات بیشتری در مورد Droplet نشان نمی دهد ، مگر اینکه مستقر باشد.

خروجی ها را نیز می توان با استفاده از دستور خروجی نشان داد:

terraform output

خروجی تمام خروجی های پروژه را لیست می کند:

Output

droplet_ip_address = ip_address

همچنین می توانید یک خروجی خاص را با نام و با تعیین آن به عنوان یک آرگومان ، درخواست کنید:

terraform output output_name

برای droplet_ip_address ، خروجی فقط شامل آدرس IP است:

Output
ip_address

به جز تعیین مقدار اجباری ، خروجی ها دارای چند پارامتر اختیاری هستند:

توضیحات: مستندات کوتاهی را با جزئیات آنچه خروجی نشان می دهد ، جاسازی می کند.
varet_on: یک پارامتر متا در هر منبع موجود است که به شما امکان می دهد منابع را به طور صریح مشخص کنید که خروجی بستگی به این دارد که Terraform قادر نیست در طول برنامه ریزی به طور خودکار نتیجه گیری کند.
حساس: مقدار بولین را می پذیرد ، که در صورت تنظیم روی true از نمایش محتوای خروجی پس از استقرار جلوگیری می کند.
پارامتر حساس زمانی مفید است که سیاهههای مربوط به استقرار Terraform در دسترس عموم قرار گیرد ، اما محتویات خروجی باید مخفی نگه داشته شوند. اکنون آن را به تعریف منابع Droplet خود اضافه می کنید.

droplets.tf را برای ویرایش باز کرده و خط برجسته را اضافه کنید:

resource “vpsgol_droplet” “web” {
image = “ubuntu-20-04-x64”
name = “test-droplet”
region = “fra1”
size = “s-1vcpu-1gb”
}

output “droplet_ip_address” {
value = vpsgol_droplet.web.ipv4_address
sensitive = true
}

پس از اتمام کار فایل را ذخیره و ببندید. دوباره پروژه را با اجرای زیر اجرا کنید:

terraform apply -var “do_token=${DO_PAT}”

در صورت درخواست بله را وارد کنید. خواهید دید که خروجی تغییر یافته است:

Output…

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

Outputs:

droplet_ip_address = <sensitive>

حتی اگر به عنوان حساس علامت گذاری شده باشد ، خروجی و محتویات آن همچنان از طریق کانال های دیگر مانند مشاهده وضعیت Terraform یا پرسیدن مستقیم خروجی ها در دسترس خواهد بود.

در مرحله بعد ، یک ساختار Droplet و خروجی متفاوت ایجاد می کنید ، بنابراین با اجرای موارد زیر ، ساختارهای فعلی را از بین ببرید:

terraform destroy -var “do_token=${DO_PAT}”

خروجی در انتها خواهد بود:

Output

… Destroy complete! Resources: 1 destroyed.

شما یک Droplet را اعلام و مستقر کرده و خروجی ایجاد کرده اید که آدرس IP آن را نشان می دهد. اکنون با استفاده از خروجی ها برای نشان دادن ساختارهای پیچیده تر مانند لیست ها و نقشه ها آشنا خواهید شد.

خروجی سازه های پیچیده

در این بخش ، با استفاده از کلمه کلیدی count ، چند قطره از یک تعریف را مستقر کرده و آدرس IP آنها را در قالب های مختلف خروجی می دهید.

با استفاده از حلقه for

شما باید تعریف منبع Droplet را تغییر دهید ، بنابراین آن را برای ویرایش باز کنید:

nano droplets.tf

آن را اصلاح کنید تا به این شکل باشد:

resource “vpsgol_droplet” “web” {
count = 3
image = “ubuntu-20-04-x64”
name = “test-droplet-${count.index}”
region = “fra1”
size = “s-1vcpu-1gb”
}

شما مشخص کرده اید که سه قطره باید با استفاده از کلید شمارش ایجاد شود و فهرست فعلی را به نام قطره اضافه کنید ، تا بعداً بتوانید بین آنها تشخیص دهید. خروجی موجود زیر را حذف کنید. پس از اتمام کار ، فایل را ذخیره و ببندید.

کد را با اجرای زیر اعمال کنید:

terraform apply -var “do_token=${DO_PAT}”

Terraform برنامه ای برای ایجاد سه قطره شماره دار به نام های test-droplet-0 ، test-droplet-1 و test-droplet-2 خواهد داشت. وقتی از شما خواسته شد تا مراحل را به پایان برسانید بله را وارد کنید. در پایان خروجی زیر را مشاهده خواهید کرد:


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

این بدان معناست که هر سه Droplets با موفقیت مستقر شده اند و تمام اطلاعات مربوط به آنها در حالت پروژه ذخیره می شود.

ساده ترین راه برای دسترسی به ویژگی های منابع آنها استفاده از خروجی ها است ، اما ایجاد یکی برای هر Droplet مقیاس پذیر نیست. راه حل این است که از حلقه for برای عبور از لیست Droplets و جمع آوری ویژگی های آنها استفاده کنید ، یا از عبارت های splat استفاده کنید (که بعداً در این مرحله با آنها آشنا خواهید شد).

ابتدا یک خروجی تعریف می کنید که آدرس IP سه قطره را با نام آنها جفت می کند. droplets.tf را برای ویرایش باز کنید:

nano droplets.tf

خطوط زیر را اضافه کنید:

resource “vpsgol_droplet” “web” {
count = 3
image = “ubuntu-20-04-x64”
name = “test-droplet-${count.index}”
region = “fra1”
size = “s-1vcpu-1gb”
}

output “droplet_ip_addresses” {
value = {
for droplet in vpsgol_droplet.web:
droplet.name => droplet.ipv4_address
}
}

مقدار خروجی droplet_ip_addresses با استفاده از حلقه for ساخته می شود. از آنجا که توسط براکت احاطه شده است ، نوع حاصله یک نقشه خواهد بود. حلقه از لیست Droplets عبور می کند و برای هر نمونه ، نام آن را با آدرس IP آن جفت می کند و آن را به نقشه حاصل می افزاید.

فایل را ذخیره و ببندید ، سپس پروژه را دوباره اعمال کنید:

terraform apply -var “do_token=${DO_PAT}”

در صورت درخواست بله را وارد کنید و در پایان محتویات خروجی را دریافت خواهید کرد:

OutputApply complete! Resources: 0 added, 0 changed, 0 destroyed.

Outputs:

droplet_ip_addresses = {
“test-droplet-0” = “ip_address”
“test-droplet-1” = “ip_address”
“test-droplet-2” = “ip_address”
}

droplet_ip_addresses آدرس IP سه قطره مستقر شده را مشخص می کند.

با استفاده از فرمان خروجی Terraform ، می توانید محتویات خروجی را به عنوان JSON با استفاده از آرگومان فرمان آن دریافت کنید:

terraform output -json droplet_ip_addresses

نتیجه مشابه موارد زیر خواهد بود:

Output{“test-droplet-0″:”ip_address”,”test-droplet-1″:”ip_address”,”test-droplet-2″:”ip_address”}

تجزیه JSON به طور گسترده ای در بسیاری از زبان های برنامه نویسی مورد استفاده قرار می گیرد و پشتیبانی می شود. به این ترتیب ، می توانید به طور برنامه ای اطلاعات مربوط به منابع Droplet مستقر را تجزیه کنید.

استفاده از عبارت Splat

عبارات Splat یک روش جمع و جور برای تکرار در تمام عناصر یک لیست و جمع آوری محتویات یک ویژگی از هر یک از آنها را ارائه می دهد که منجر به ایجاد یک لیست می شود. یک عبارت splat که آدرس IP سه قطره مستقر را استخراج می کند دارای نحو زیر است:

vpsgol_droplet.web[*].ipv4_address

نماد [*] از فهرست سمت چپ خود می گذرد و برای هر یک از عناصر ، محتویات ویژگی مشخص شده در سمت راست را می گیرد. اگر مرجع در سمت چپ به خودی خود یک لیست نباشد ، به یکی تبدیل می شود که تنها عنصر باشد.

می توانید droplets.tf را برای ویرایش باز کنید و خطوط زیر را برای پیاده سازی آن اصلاح کنید:

resource “vpsgol_droplet” “web” {
count = 3
image = “ubuntu-20-04-x64”
name = “test-droplet-${count.index}”
region = “fra1”
size = “s-1vcpu-1gb”
}

output “droplet_ip_addresses” {
value = vpsgol_droplet.web[*].ipv4_address
}

پس از ذخیره فایل ، پروژه را با اجرای دستور زیر اعمال کنید:

terraform apply -var “do_token=${DO_PAT}”

خروجی دریافت خواهید کرد که اکنون یک لیست است و فقط شامل آدرس های IP Droplets است:

Output…
Apply complete! Resources: 0 added, 0 changed, 0 destroyed.

Outputs:

droplet_ip_addresses = [
“ip_address”,
“ip_address”,
“ip_address”,
]

برای دریافت خروجی به عنوان JSON ، دستور زیر را اجرا کنید:

terraform output -json droplet_ip_addresses

خروجی یک آرایه واحد خواهد بود:

Output[“ip_address”,”ip_address”,”ip_address”]

شما از خروجی ها همراه با عبارات splat و حلقه ها برای صادر کردن آدرس های IP قطره های مستقر استفاده کرده اید. شما همچنین محتویات خروجی را به عنوان JSON دریافت کرده اید و اکنون از jq – ابزاری برای فیلتر پویا JSON با توجه به عبارات داده شده – برای تجزیه آنها استفاده می کنید.

تجزیه خروجی ها با استفاده از jq

در این مرحله ، شما اصول اولیه jq ، ابزاری برای دستکاری اسناد JSON را نصب و یاد می گیرید. از آن برای تجزیه خروجی های پروژه Terraform خود استفاده خواهید کرد.

اگر از اوبونتو استفاده می کنید ، دستور زیر را برای نصب jq اجرا کنید:

sudo snap install jq

در macOS ، می توانید از Homebrew برای نصب آن استفاده کنید:

brew install jq

jq عبارت پردازش ارائه شده را بر روی ورودی داده شده اعمال می کند ، که می توان آن را وارد کرد. ساده ترین کار در jq این است که ورودی را به خوبی چاپ کنید:

terraform output -json droplet_ip_addresses | jq ‘.’

وارد کردن عملگر هویت (.) بدین معناست که کل سند JSON تجزیه شده از ورودی باید بدون هیچ گونه تغییری خروجی داده شود:

Output[
“first_ip_address”,
“second_ip_address”,
“third_ip_address”
]

شما می توانید فقط IP دوم را با استفاده از نماد براکت آرایه با شمارش صفر درخواست کنید:

terraform output -json droplet_ip_addresses | jq ‘.[1]’

خروجی خواهد بود:

Output”second_ip_address”

برای ایجاد نتیجه پردازش یک آرایه ، عبارت را در داخل پرانتز بپیچید:

terraform output -json droplet_ip_addresses | jq ‘[.[1]]’

شما یک آرایه JSON بسیار چاپ شده دریافت خواهید کرد:

Output[
“second_ip_address”
]

با تعیین طیف وسیعی از نمایه ها در داخل براکت ها می توانید قسمت هایی از آرایه ها را به جای تک عناصر بازیابی کنید:

terraform output -json droplet_ip_addresses | jq ‘.[0:2]’

خروجی خواهد بود:

Output[
“first_ip_address”,
“second_ip_address”
]

محدوده 0: 2 دو عنصر اول را برمی گرداند – قسمت بالای محدوده (2) شامل نمی شود ، بنابراین فقط عناصر در موقعیت های 0 و 1 واکشی می شوند.

اکنون می توانید منابع مستقر شده را با اجرای زیر از بین ببرید:

terraform destroy -var “do_token=${DO_PAT}”

در این مرحله ، jq را نصب کرده اید و از آن برای تجزیه و دستکاری خروجی پروژه Terraform خود ، که سه Droplet را استقرار می دهد ، استفاده کرده اید.

نتیجه

شما با خروجی های Terraform آشنا شده اید ، از آنها برای نشان دادن جزئیات در مورد منابع مستقر و صادرات ساختار داده برای پردازش خارجی بعدی استفاده کرده اید. شما همچنین از خروجی ها برای نشان دادن ویژگی های یک منبع واحد و همچنین برای نشان دادن نقشه های ساخته شده و لیست های حاوی ویژگی های منبع استفاده کرده اید.

Terraformخرید vpsخرید سرورفروش سرورمدیریت داده های زیرساخت

  • behnam gol mohamadi