راهنمای خط فرمان ابر یوتاب
اگر آشنایی کافی با خط فرمان ابر یوتاب ندارید، پیشنهاد میکنم اول این پست رو ببینید: با ابر یوتاب؛ چیکارا میشه کرد؟
در این پست سعی داریم برای تمام فرامین موجود در خط فرمان ابر یوتاب، یک راهنمای کلی به همراه چندین مثال عنوان کنیم. ما دستورات را به چهار دسته کلی تقسیم کردیم:
- لیست اطلاعات برای دریافت لیست اطلاعات یا دریافت جزئیات یک مورد
- اقدامهای اساسی برای اعمال یک خواسته بر روی کانتینرها
- وضعیت سرویس برای ایجاد تغییر در وضعیت یک کانتینر یا نمایش وضعیت آنها
- دستورات عمومی مابقی فرامین
لیست اطلاعات | اقدامهای اساسی | وضعیت سرویس | دستورات عمومی |
---|---|---|---|
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
برای آشنای بیشتر با مخزن ابری یوتاب میتوانید این پست را ببینید: مخازن اختصاصی داکر در ابر یوتاب
link
این دستور برای مدیریت اتصال اجزای مختلف به کار میرود. به طور مثال برای اتصال یک سرویس دیتابیس به یک اپلیکیشن یا اتصال دامنه به یک اپلیکیشن و … فقط میبایست نام دو جزء به عنوان flag آورده شود. موارد قابل اتصال به شرح ذیل میباشند:
Service <-> Application
امکان اتصال یک سرویس SaaS به اپلیکیشن کاربرVolume <-> Application
اتصال یک فضای ذخیرهسازی در یک مسیر مشخص به اپلیکیشن کاربرDomain <-> Application
امکان اتصال یک دامنه به اپلیکیشن کاربر با قابلیت مدیریت Endpoint و RoutingDomain <-> Service
امکان اتصال یک دامنه به یک سرویس SaaS با قابلیت مدیریت Endpoint و Routing
# Service &amp;amp;amp;amp;lt;-&amp;amp;amp;amp;gt; Domain &amp;amp;amp;amp;gt; yb link set \ --service="my-wordpress" \ --domain="example.com" # Service &amp;amp;amp;amp;lt;-/-&amp;amp;amp;amp;gt; Domain &amp;amp;amp;amp;gt; yb link unset \ --service="my-wordpress" \ --domain="example.com" # Application &amp;amp;amp;amp;lt;-&amp;amp;amp;amp;gt; Volume &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;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;gt; yb login # Username: test # Password: ******** # Login successful! &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;gt; yb create service postgresql \ --name="my-postgresql" &amp;amp;amp;amp;gt; yb portforward service my-postgresql # Forwarding ports: [5432] &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;gt; yb product service # - Name: postgresql # - Name: mysql # - Name: redis # - Name: wordpress # ... &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;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;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;gt; yb rm application phpmyadmin # application phpmyadmin deleted &amp;amp;amp;amp;gt; yb rm service my-postgresql # service my-postgresql deleted &amp;amp;amp;amp;gt; yb rm domain example.com # service example.com deleted
service
دستور service
برای دریافت لیست تمامی سرویسها و همچنین دریافت جزئیات یک سرویس به کار میرود. برای دریافت جزئیات، میبایست اسم سرویس در انتهای دستور ذکر شود.
&amp;amp;amp;amp;gt; yb service # Count: 12 # - Name: my-postgresql # State: Up # - Name: my-wordpress # State: Up # ... &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;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;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;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