مقالات
فرمان شخصی

راهنمای خط فرمان ابر یوتاب

اگر آشنایی کافی با خط فرمان ابر یوتاب ندارید، پیشنهاد می‌کنم اول این پست رو ببینید: با ابر یوتاب؛ چی‌کارا می‌شه کرد؟

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

  • لیست اطلاعات برای دریافت لیست اطلاعات یا دریافت جزئیات یک مورد
  • اقدام‌های اساسی برای اعمال یک خواسته بر روی کانتینر‌ها
  • وضعیت سرویس برای ایجاد تغییر در وضعیت یک کانتینر یا نمایش وضعیت آنها
  • دستورات عمومی مابقی فرامین

 

لیست اطلاعات اقدام‌های اساسی وضعیت سرویس دستورات عمومی
application create start login
service rm stop logout
volume update reset product
domain link open cli
image environment log help
portforward

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

دریافت cli

رابط کاربری ابر یوتاب Open Source است و در گیت‌هاب قرارداده شده است. برای سادگی در استفاده کاربران ما نسخه باینری مورد نیاز تمامی سیستم‌عامل‌ها را در صفحه YOTTAb releases پروژه cli قرار ‌می‌دهیم. شما می‌توانید آخرین نسخه را بر حسب سیستم‌عامل خود دانلود نمایید.

application

دستور application برای دریافت «لیست اپلیکیشن‌ها» ساخته شده از روی image داکر شخصی کاربران بکار می‌رود. همچنین این دستور به همراه اسم application به منظور دریافت «جزئیات یک اپلیکیشن» به کار می‌رود. برای دریافت جزئیات، می‌بایست اسم اپلیکیشن‌ در انتهای دستور ذکر شود.

> yb application
#   Count: 12
# - Name: phpmyadmin
#   State: Up
# - Name: mehrad
#   State: Up
	
>  yb application phpmyadmin
#   Service Name: phpmyadmin
#   State: Up 
#   Image: hub.yottab.io/test/phpmyadmin:latest
#   Internal-port: 80 
#   Minimum-scale: 1
#   Endpoints(Public URLs):
#   	1. https://phpmyadmin2.test.app.yottab.io:443 -> (http endpoint type)
#   Created: 2019-05-03T16:08:04+04:30 , Updated: 2019-05-03T16:08:04+04:30 
#   Environment variables:
#     PMA_HOST: wp-db 
#   VCAP_SERVICES: 
#   {
#     "wp-db": [
#       {
#         "name": "wp-db",
#         "label": "database",
#         "tags": [db, mysql],
#         "plan": "default",
#         "credentials": {}
#  	    }
#     ]
#   }

create

از دستور create برای ساختن Application ،Service ،Volume ،Domain و Worker استفاده می‌شود.

  • Application در واقع کانتینر‌های ساخته شده از روی imageهای هست که شما در مخزن ابر یوتاب آپلود کردید.
  • Service نرم‌افزار‌های که در ابر یوتاب به صورت سرویس‌ (SaaS) ارائه می‌شود. به طور مثال دیتا‌بیس‌ها یا سرویس‌های مدیریت محتوا و … جزء سرویس‌های ابر یوتاب می‌باشند. برای دریافت دریافت لیست سرویس‌های ارائه شده می‌توانید از دستور yb product service استفاد کنید.
  • Volume برای ایجاد فضای ذخیره‌سازی و اتصال آن به application به کار می‌رود. به این فضا ذخیره‌سازی persistent block storage هم گفته می‌شود. شما برای دریافت پلن‌های ارائه شده توسط خط فرمان ابر یوتاب می‌توانید از دستور yb product volume استفاد کنید.
  • Domain برای اتصال یک دامنه شخصی به یک اپلیکیشن به کار می‌رود. این دستور امکان مدیریت TLS را به شما می‌دهد تا سرویس شما به صورت اتوماتیک با پروتکل HTTPS سرویس‌دهی شود.
  • Worker برای اتصال Application به نرم‌افزارها مستقل ایجاد شده‌ است. شما می‌توانید worker‌ها را به صورت private با image دلخواه به یک Aplication متصل کنید و بهره لازم را ببرید.
# yb create  [COMMAND]  [FLAG]

> yb create application \
     --image="hub.yottab.io/test/dotnetcore:aspnetapp" \
     --name="myaspnetapp" \
     --port=80

> yb create domain \
     example.com \
     --TLS=true

> yb create service postgresql \
     --name="my-postgresql" \
     --plan="starter"
#   Service Name: my-postgresql 
#   Plan Name: starter 
#   State: Pending 
#   Created: 2019-05-03T16:08:04+04:30 , Updated: 2019-05-03T16:08:04+04:30 
#   Variable:
#   	 name: my-postgresql 
#   	 postgresPassword: DaRHem13dAX 
#   List of endpoints: None
#   Attached domains: None

> yb create volume \
     --name="my-volume" \
     --volume-type="persistant-2Gi"

domain

دستور domain برای دریافت «لیست دامنه‌های شخصی» ساخته شده توسط کاربر بکار می‌رود. همچنین این دستور به همراه اسم domain به منظور دریافت «جزئیات یک دامنه‌ به کار می‌رود. برای دریافت جزئیات، می‌بایست اسم دامنه‌ در انتهای دستور ذکر شود.

> yb domain
#   Count: 4	
#   - Domain Name: example.com
#     TLS: false
#     Routes: None
#     Created: 2019-05-03T16:08:04+04:30 , Updated: 2019-05-03T16:08:04+04:30
#   - Domain Name: secure.example.com
#     TLS: true
#     Routes: None
#     Created: 2019-05-03T16:08:08+04:30 , Updated: 2019-05-03T16:08:08+04:30

environment

دستور environment برای تغییر Environment Variables یا متغییر‌های محیطی در Service و Aplication می‌باشد. دستور environment set برای اضافه و دستور environment unset برای حذف کردن متغییر‌های محیطی از نرم‌افزارهای درحال اجرا بر روی ابر یوتاب می‌باشد. بعد از تنظیم هر متغییر، سرویس راه‌اندازی مجدد می‌شود.

# SET
# yb environment set [TYPE] [NAME] [variables]
> yb environment set application my-php-admin \
     --variable="PMA_HOST=mysql" \
     --variable="PMA_PORT=3306" \

> yb environment set service my-wordpress \
     --variable="externalDatabase.host=mysql" \
     --variable="mariadb.mariadbRootPassword=DaRHem13dAX" \



# UNSET
# yb environment unset [TYPE] [NAME] [variables]
> yb environment unset application my-php-admin \
     --variable="PMA_HOST" \
     --variable="PMA_PORT" \

شما می‌توانید برای محصول‌های که در ابر یوتاب به صورت ‌SaaS ارائه می‌شوند، متغییر‌های محیطی خود را تنظیم نمایید.

به طور مثال وردپرس یکی از محصولات ابر یوتاب است، اگر آن را به عنوان سرویس اجر کنید، می‌توانید متغییر‌های در نظر گرفته شده برای وردپرس را برای آن تنظیم‌نمایید. برای دریافت لیست متغییر‌های قابل مقدار‌دهی بر روی یک محصول از نوع سرویس دستور yb product service را به همراه نام محصول در انتهای آن وارد نمایید.

# yb product [type]  [product_name]
> yb product service wordpress
#   ...
#   Variables:
#   - Name: externalDatabase.host
#   - Name: externalDatabase.password
#   - Name: externalDatabase.database
#   - Name: wordpressPassword
#   - Name: wordpressUsername
#   ...

image

دستور image در خط فرمان ابر یوتاب برای دریافت لیست تمامی imageها داکر موجود در مخزن‌ ابری یوتاب است و همچنین برای دریافت جزئیات یک image به کار می‌رود. برای دریافت جزئیات، می‌بایست اسم image در انتهای دستور ذکر شود.

> yb image
# Count: 4
# - Name: hub.yottab.io/test/dotnetcore
#   Created: 2019-05-03T16:08:04+04:30 , Updated: 2019-05-03T16:08:04+04:30
# - Name: hub.yottab.io/test/hello-worl
#   Created: 2019-05-03T16:08:08+04:30 , Updated: 2019-05-03T16:08:08+04:30
# - Name: hub.yottab.io/test/phpmyadmin
#   Created: 2019-05-03T16:08:16+04:30 , Updated: 2019-05-03T16:08:16+04:30
# - Name: hub.yottab.io/test/nginx
#   Created: 2019-05-03T16:08:32+04:30 , Updated: 2019-05-03T16:08:32+04:30

> yb image hub.yottab.io/test/dotnetcore
#   Name: hub.yottab.io/test/dotnetcore
#   Tags: aspnetapp
#   Created: 2019-05-03T16:08:04+04:30 , Updated: 2019-05-03T16:08:04+04:30
 

برای آشنای بیشتر با مخزن ابری یوتاب می‌توانید این پست را ببینید: مخازن اختصاصی داکر در ابر یوتاب

این دستور برای مدیریت اتصال اجزای مختلف به کار می‌رود. به طور مثال برای اتصال یک سرویس دیتابیس به یک اپلیکیشن یا اتصال دامنه به یک اپلیکیشن و … فقط می‌بایست نام دو جزء به عنوان flag آورده شود. موارد قابل اتصال به شرح ذیل می‌باشند:

  • Service <-> Application امکان اتصال یک سرویس SaaS به اپلیکیشن کاربر
  • Volume <-> Application اتصال یک فضای ذخیره‌سازی در یک مسیر مشخص به اپلیکیشن کاربر
  • Domain <-> Application امکان اتصال یک دامنه به اپلیکیشن کاربر با قابلیت مدیریت Endpoint و Routing
  • Domain <-> Service امکان اتصال یک دامنه به یک سرویس SaaS با قابلیت مدیریت Endpoint و Routing
# Service &amp;amp;amp;amp;amp;lt;-&amp;amp;amp;amp;amp;gt; Domain
&amp;amp;amp;amp;amp;gt; yb link set \
     --service="my-wordpress" \
     --domain="example.com"

# Service &amp;amp;amp;amp;amp;lt;-/-&amp;amp;amp;amp;amp;gt; Domain
&amp;amp;amp;amp;amp;gt; yb link unset \
     --service="my-wordpress" \
     --domain="example.com"

# Application &amp;amp;amp;amp;amp;lt;-&amp;amp;amp;amp;amp;gt; Volume
&amp;amp;amp;amp;amp;gt; yb link set \
     --application="my-aspnetapp" \
     --volume="my-volume" \
     --path="/var/data"

log

این دستور برای دریافت اطلاعات خروجی Application به کار می‌رود. به صورتی که شما می‌توانید خروجی برنامه خود را به صورت زنده مشاهده نمایید.

# yb log [Application Name]
&amp;amp;amp;amp;amp;gt; yb log my-application
#   [warn] application - system properties: play.crypto.secret is deprecated, use play.http.secret.key instead
#   [info] play.api.Play - Application started (Prod) (no global state)
#   [info] AkkaHttpServer - Listening for HTTP on 0.0.0.0:8080
 

login

برای ورود در سرویس ابتدا می‌بایست از طریق سایت نام کاربری خود را ثبت نمایید. بعد با استفاده از خط فرمان ابر یوتاب با دستور yb login مشخصات کاربری خود را وارد نمایید. کلاینت بعد از موفقیت در ورود به سرور، بر روی کامپیوتر شخصی شما مشخصات token را ذخیره‌سازی می‌کند. می‌توانید مسیر نگهداری این اطلاعات را با پرچم --token تغییر دهید.

&amp;amp;amp;amp;amp;gt; yb login
#   Username: test
#   Password: ********
#   Login successful!

&amp;amp;amp;amp;amp;gt; yb login --token="~/home/Desktop/YOTTAb.token.json"
#   Username: test
#   Password: ********
#   Login successful!
 

logout

این دستور token یا همان اطلاعات مربوط به ورود کاربر را از سیستم شخصی شما حذف می‌کند.

open

در خط فرمان ابر یوتاب این دستور به کمک اسم یک application، آن را بر روی مرورگر باز می‌کند. هر application که شما در ابر یوتاب اجرا می‌کنید، یک آدرس بر روی ‌دامنه‌ app.YOTTAb.io برای آن ساخته می‌شود. این دامنه اختصاصی با توجه به «نام سازمان» و «نام اپلیکیشن» برای هر application به شکل زیر تعریف می‌شود:

  HTTPS:// <APPLICATION--NAME > . < USER--ID > .app.YOTTAb.io

portforward

ابر یوتاب برای ایجاد حداکثر امنیت و راحتی کاربر، امکان portforward را برای تمامی کانتینر‌ها و سرویس‌های در حال اجرا فراهم آورده. شما با خط فرمان ابر یوتاب می‌توانید به طور مستقیم و ایمن به نرم‌افزارهای خود دسترسی داشته باشد.

به طور مثال اگر دیتابیس postgresql را با نام my-postgresql ساخته باشیم، امکان دسترسی به آن در خارج از ابر یوتاب و به صورت موقت با قابلیت portforward فراهم می‌شود. با این دستور port ارتباط با نرم‌افزار بر روی کامپیوتر شخصی شما از آدرس localhost یا 127.0.0.1 در دسترس می‌باشد. در این مثال دیتابیس از آدرس 127.0.0.1:5432 در دسترس و اجرای فرامین با کلاینت دیتابیس به نام psql مهیا می‌باشد.

&amp;amp;amp;amp;amp;gt; yb create service postgresql \
     --name="my-postgresql"


&amp;amp;amp;amp;amp;gt; yb portforward service my-postgresql
#   Forwarding ports: [5432]


&amp;amp;amp;amp;amp;gt; psql \
    --host="127.0.0.1" \
    --port=5432 \
    --username=postgres
#   psql (9.6.13, server 9.6.2)
#   Type "help" for help.
#
#   postgres=#   CREATE DATABASE mydatabase WITH OWNER = postgres;
#   CREATE DATABASE
 

می‌توانید بعد از اتمام کار، اتصال ایمن خود را به دیتابیس قطع کنید. با این ساز و کار فقط پورت‌های ۸۰ و ۴۴۳ نرم‌افزار شما در دسترس عموم می‌باشد. دسترسی به مابقی سرویس‌ها موجود در زیرساخت شما مثل دیتابیس‌ها، از طریق یک تونل ایمن و به صورت موقت، فقط در دسترس شما قرار دارد.

product

دستور product برای دریافت لیست تمامی محصولات ارائه شده توسط ابر یوتاب به صورت سرویس (SaaS) به کار می‌رود. برای دریافت جزئیات، می‌بایست اسم محصول در انتهای دستور ذکر شود.

در حال حاضر محصولات به دو دسته کلی service و volume تقسیم می‌شود. در خط فرمان ابر یوتاب هر دو نوع این محصولات با دستور create ساخته می‌شوند.

  • service تمامی این نرم‌افزار‌ها به صورت (SaaS) قابلیت اجرا می‌باشند. همچنین در صورت نیاز قابل اتصال به applicationها را دارند. مثل دیتابیس‌ها
  • volume فضای ذخیرسازی پایدار به صورت Persistant Block Storage قابل ارائه و اتصال به applicationها را دارند.
&amp;amp;amp;amp;amp;gt; yb product service
# - Name: postgresql
# - Name: mysql
# - Name: redis
# - Name: wordpress
# ...
	
&amp;amp;amp;amp;amp;gt;  yb product service wordpress
#   Product Name: wordpress 
#   Plan:
#   - Name: starter
#   - Name: gold
#   Variables:
#   - Name: externalDatabase.password
#     Type: password
#     Default: none
#     Description: wordpress db pass
#     Is required: false
#   - Name: externalDatabase.user
#     Type: other
#     Default: none
#     Description: wordpress db user
#     Is required: false
#     ...

&amp;amp;amp;amp;amp;gt;  yb product volume
#   Count: 3
#   - Name: persistant-2Gi
#     Class: SSD
#     Size: 2Gi
#   - Name: persistant-4Gi
#     Class: SSD
#     Size: 4Gi
#   - Name: persistant-8Gi
#     Class: SSD
#     Size: 8Gi
 

reset

برای راه اندازی مجدد application‌ها و service‌ها از این دستور به همراه اسم نرم‌افزار، در خط فرمان ابر یوتاب استفاده می‌شود.

# yb reset  [TYPE]  [NAME]
&amp;amp;amp;amp;amp;gt; yb reset  application  phpmyadmin
#   Service Name: phpmyadmin 
#   State: Up
#   Image: hub.yottab.io/test/phpmyadmin:latest
#   Internal-port: 80
#   ...
 

rm

دستور rm برای حذف اطلاعات در‌ خط فرمان ابر یوتاب طراحی شده است. برای این دستور باید نوع اطلاعات و نام آن مشخص شود. این دستور قابلیت حذف انواع worker ،volume ،domain ،service ،application را دارد.

&amp;amp;amp;amp;amp;gt; yb rm application  phpmyadmin
#   application phpmyadmin deleted

&amp;amp;amp;amp;amp;gt; yb rm  service  my-postgresql
#   service my-postgresql deleted

&amp;amp;amp;amp;amp;gt; yb rm  domain  example.com
#   service example.com deleted
 

service

دستور service برای دریافت لیست تمامی سرویس‌ها و همچنین دریافت جزئیات یک سرویس به کار می‌رود. برای دریافت جزئیات، می‌بایست اسم سرویس در انتهای دستور ذکر شود.

&amp;amp;amp;amp;amp;gt; yb service
#   Count: 12
# - Name: my-postgresql
#   State: Up
# - Name: my-wordpress
#   State: Up
#   ...
	
&amp;amp;amp;amp;amp;gt;  yb service my-postgresql
#   Plan Name: starter 
#   State: Up 
#   Created: 2019-05-03T16:08:04+04:30 , Updated: 2019-05-03T16:08:04+04:30 
#   Variable:
#      name: my-postgresql
#      postgresPassword: DaRHem13dAX 
#   List of endpoints: None
#   Attached domains: None
 

start

برای راه اندازی application‌ها و service‌ها که در وضعیت DOWN هستند، از این دستور به همراه اسم نرم‌افزار، استفاده می‌شود.

# yb start  [TYPE]  [NAME]
&amp;amp;amp;amp;amp;gt; yb start  application  phpmyadmin
#   Service Name: mehrad 
#   State: Up
#   Image: hub.yottab.io/test/phpmyadmin:latest
#   Internal-port: 80
#   ...
 

stop

برای توقف application‌ها و service‌ها که در وضعیت UP هستند، از این دستور به همراه اسم نرم‌افزار، استفاده می‌شود.

# yb stop  [TYPE]  [NAME]
&amp;amp;amp;amp;amp;gt; yb stop  application  phpmyadmin
#   Service Name: mehrad 
#   State: Down
#   Image: hub.yottab.io/test/phpmyadmin:latest
#   Internal-port: 80
#   ...
 

update!

volume

دستور volume برای دریافت «لیست تمامی فضا‌های ذخیره‌سازی» و همچنین دریافت «جزئیات یک فضا‌های ذخیره‌سازی» به کار می‌رود. برای دریافت جزئیات، می‌بایست اسم Volume در انتهای دستور ذکر شود.

این دستور نام Application که Volume به آن متصل شده به همراه مسیر Mount مشخص می‌شود. در صورتی که Volume به هیچ Application متصل نباشد، می‌توانید به کمک دستور link، آن را به یک Application متصل نمایید.

&amp;amp;amp;amp;amp;gt; yb volume
#   Count: 7
#   - Name: wordpress-2g
#     Spec: persistant-2Gi
#     AttachedTo: none
#     MountPath: none
#     Created: 2019-05-03T16:08:04+04:30 , Updated: 2019-05-03T16:08:04+04:30
#   - Name: wordpress-8g
#     Spec: persistant-8Gi
#     AttachedTo: my-wordpress
#     MountPath: /etc/data
#     Created: 2019-05-03T16:08:08+04:30 , Updated: 2019-05-03T16:08:08+04:30