پرش به مطلب اصلی

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

راهنمای جامع برای استفاده از رابط خط فرمان (CLI) آریانت برای مدیریت منابع ابری از طریق ترمینال.

نصب و راه اندازی

گزینه 1: Homebrew (توصیه شده)

brew install ariaservice/tap/arianet

گزینه 2: دانلود باینری از پیش ساخته‌شده

آخرین نسخه را از صفحه Releases در GitHub دانلود کنید:

chmod +x arianet
sudo mv arianet /usr/local/bin/

# تأیید نصب
arianet version

گزینه 3: ساخت از منبع

git clone https://github.com/ariaservice/arianet-cli.git
cd arianet-cli
go build -o arianet ./cmd/main.go
sudo mv arianet /usr/local/bin/

تنظیم اولیه

# تنظیم حساب شما
arianet login

# یا استفاده از توکن مستقیماً
arianet auth token set YOUR_API_TOKEN

# تأیید احراز هویت
arianet whoami

دستورات اساسی

احراز هویت

ورود به حساب

arianet login
# شما را به پخش مرورگر برای احراز هویت هدایت می‌کند

خارج شدن

arianet logout

بررسی کاربر جاری

arianet whoami

# خروجی:
# {
# "id": 1,
# "username": "john_doe",
# "email": "john@example.com"
# }

مدیریت توکن‌ها

# تعیین توکن
arianet auth token set YOUR_API_TOKEN

# نمایش توکن جاری
arianet auth token show

# حذف توکن
arianet auth token delete

سرورها

فهرست تمام سرورها

arianet servers list

# خروجی (فرمت جدول):
# ID NAME STATUS IP REGION OS
# 1 server-1 active 185.10.10.10 ir-tehran-1 Ubuntu 22.04
# 2 web-server active 185.20.20.20 ir-tehran-1 Ubuntu 20.04
# 3 db-server inactive 185.30.30.30 ir-isfahan-1 Debian 12

دریافت جزئیات سرور

arianet servers get <id>

# مثال:
arianet servers get 1

# خروجی (فرمت JSON):
# {
# "id": 1,
# "name": "server-1",
# "hostname": "server-1.arianet.io",
# "ip": "185.10.10.10",
# "status": "active",
# "os": "Ubuntu 22.04 LTS",
# "vcpu": 2,
# "ram": 2048,
# "disk": 50,
# "protected": true,
# "uptime_percentage": 99.95
# }

ایجاد سرور جدید

arianet servers create \
--name web-server-1 \
--os ubuntu-22.04 \
--plan shared-2c-2g \
--region ir-tehran-1 \
--ssh-keys 1,2

# خروجی:
# درخواست ایجاد سرور ارسال شد
# ID سرور جدید: 45

حذف سرور

arianet servers delete <id>

# مثال با تأیید:
arianet servers delete 45 --confirm

تغییر نام سرور

arianet servers rename <id> --name new-name

# مثال:
arianet servers rename 1 --name production-web-01

حفاظت سرور

# فعال‌سازی حفاظت
arianet servers protect <id> --enable

# غیرفعال‌سازی حفاظت
arianet servers protect <id> --disable

عملیات مدیریت سرویس

راه‌اندازی مجدد

arianet servers reboot <id>

# مثال:
arianet servers reboot 1
# Rebooting server...
# ✓ سرور با موفقیت راه‌اندازی مجدد شد

خاموشی

arianet servers shutdown <id>

# مثال:
arianet servers shutdown 2

روشن کردن

arianet servers power-on <id>

# مثال:
arianet servers power-on 3

نصب مجدد سیستم‌عامل

arianet servers reinstall <id> \
--os ubuntu-22.04 \
--ssh-keys 1,2

# مثال:
arianet servers reinstall 1 --os ubuntu-22.04

کلید‌های SSH

فهرست کلید‌های SSH

arianet ssh-keys list

# خروجی:
# ID NAME FINGERPRINT
# 1 work-machine a1:b2:c3:d4:e5:f6:g7:h8
# 2 home-machine x1:y2:z3:a4:b5:c6:d7:e8
# 3 backup-key m1:n2:o3:p4:q5:r6:s7:t8

اضافه کردن کلید SSH

arianet ssh-keys create \
--name my-key \
--public-key "$(cat ~/.ssh/id_rsa.pub)"

# مثال:
arianet ssh-keys create --name work-key --public-key "ssh-rsa AAAAB3..."
# ✓ کلید SSH با موفقیت اضافه شد (ID: 10)

حذف کلید SSH

arianet ssh-keys delete <id>

# مثال:
arianet ssh-keys delete 5

دیوار آتش (Firewall)

فهرست قوانین دیوار آتش

arianet firewalls list

# یا برای سرور خاص:
arianet firewalls list --server-id <id>

# خروجی:
# ID PROTOCOL PORT SOURCE ACTION
# 1 tcp 80 0.0.0.0/0 allow
# 2 tcp 443 0.0.0.0/0 allow
# 3 tcp 3306 192.168.1.0/24 allow

اضافه کردن قانون

arianet firewalls add-rule \
--firewall-id <id> \
--protocol tcp \
--port 3306 \
--source 192.168.1.0/24 \
--action allow

# مثال:
arianet firewalls add-rule --firewall-id 1 --protocol tcp --port 3306 --source 192.168.1.0/24 --action allow
# ✓ قانون با موفقیت اضافه شد

حذف قانون

arianet firewalls remove-rule --firewall-id <id> --rule-id <rule_id>

موجودی و تراکنش‌ها

نمایش موجودی

arianet balance

# خروجی:
# موجودی: 50,000 تومان
# استفاده شده این ماه: 15,000 تومان
# اعتبار باقی‌مانده: 35,000 تومان

سابقه تراکنش‌ها

arianet transactions list

# یا با فیلتر:
arianet transactions list --type debit --limit 20

# خروجی:
# ID TYPE AMOUNT DESCRIPTION DATE
# 1001 debit 5000 سرور ماهانه 2024-01-01
# 1002 credit 10000 تاپ‌آپ موجودی 2024-01-05

کاتالوگ

فهرست مناطق

arianet regions list

# خروجی:
# ID NAME COUNTRY
# ir-tehran-1 تهران IR
# ir-isfahan-1 اصفهان IR
# de-frankfurt-1 فرانکفورت DE
# us-new-york-1 نیویورک US

فهرست نقشه‌های قیمتی

arianet plans list

# خروجی:
# ID NAME vCPU RAM DISK PRICE/Month
# shared-1c-512m پایه 1 512MB 20GB 1,000 IRR
# shared-2c-2g استاندارد 2 2GB 50GB 3,500 IRR
# shared-4c-4g حرفه‌ای 4 4GB 100GB 7,000 IRR
# shared-8c-8g بسیار قوی 8 8GB 200GB 14,000 IRR

فهرست سیستم‌عامل‌ها

arianet operating-systems list

# خروجی:
# ID NAME CATEGORY
# ubuntu-22.04 Ubuntu 22.04 LTS Linux
# ubuntu-20.04 Ubuntu 20.04 LTS Linux
# debian-12 Debian 12 Linux
# rocky-9 Rocky Linux 9 Linux
# centos-7 CentOS 7 Linux

فرمت‌های خروجی

فرمت جدول (پیش‌فرض)

arianet servers list

فرمت JSON

arianet servers list --output json

# یا
arianet servers list -o json

فرمت YAML

arianet servers list --output yaml

# یا
arianet servers list -o yaml

فرمت CSV

arianet servers list --output csv

# یا
arianet servers list -o csv

کاربرد در اسکریپت‌ها

پردازش جیسون با jq

# دریافت تمام آي‌پی‌های فعال
arianet servers list -o json | jq '.[] | select(.status=="active") | .ip'

# شمارش سرورهای فعال
arianet servers list -o json | jq '[.[] | select(.status=="active")] | length'

# دریافت نام و IP سرورها
arianet servers list -o json | jq '.[] | {name, ip}'

حلقه سازی بر روی سرورها

# راه‌اندازی مجدد تمام سرورها
arianet servers list -o json | jq '.[] | .id' | while read id; do
arianet servers reboot $id
echo "سرور $id راه‌اندازی مجدد شد"
done

ذخیره خروجی در فایل

# صادر کردن تمام سرورها
arianet servers list -o json > servers.json

# صادر کردن در CSV
arianet servers list -o csv > servers.csv

جریان‌کاری استقرار

1. راه‌اندازی سرور

#!/bin/bash

# متغیرها
SERVER_NAME="web-server-1"
OS="ubuntu-22.04"
PLAN="shared-2c-2g"
REGION="ir-tehran-1"

# ایجاد سرور
echo "در حال ایجاد $SERVER_NAME..."
RESPONSE=$(arianet servers create \
--name $SERVER_NAME \
--os $OS \
--plan $PLAN \
--region $REGION \
-o json)

SERVER_ID=$(echo $RESPONSE | jq -r '.id')
echo "سرور با موفقیت ایجاد شد: ID=$SERVER_ID"

# انتظار برای راه‌اندازی
echo "در حال انتظار برای راه‌اندازی سرور..."
sleep 30

# بررسی وضعیت
STATUS=$(arianet servers get $SERVER_ID -o json | jq -r '.status')
echo "وضعیت سرور: $STATUS"

2. مقیاس‌بندی خودکار

#!/bin/bash

# اگر بیش از 5 سرور فعال نیست، سرور جدیدی ایجاد کنید
ACTIVE_COUNT=$(arianet servers list -o json | jq '[.[] | select(.status=="active")] | length')

if [ $ACTIVE_COUNT -lt 5 ]; then
echo "تعداد سرورها کافی نیست. در حال ایجاد سرور جدید..."
arianet servers create \
--name "auto-server-$(date +%s)" \
--os ubuntu-22.04 \
--plan shared-2c-2g \
--region ir-tehran-1
fi

3. برسی سلامت سرورها

#!/bin/bash

# بررسی هویت تمام سرورها
arianet servers list -o json | jq '.[]' | while read server; do
ID=$(echo $server | jq -r '.id')
NAME=$(echo $server | jq -r '.name')
UPTIME=$(echo $server | jq -r '.uptime_percentage')

if (( $(echo "$UPTIME < 95" | bc -l) )); then
echo "⚠️ هشدار: $NAME (ID: $ID) - آپ تايم: $UPTIME%"
else
echo "✓ $NAME - آپ تايم: $UPTIME%"
fi
done

متغیرهای محیطی

تنظیم محیط

# تعیین توکن API
export ARIANET_TOKEN="your_api_token"

# تعیین نقطه‌پایانی API
export ARIANET_API_URL="https://api.arianet.io"

# تعیین فرمت خروجی پیش‌فرض
export ARIANET_OUTPUT_FORMAT="json"

# فعال‌سازی حالت verbose
export ARIANET_DEBUG="true"

فایل تنظیمات

# پیکربندی در ~/.arianet/config
[default]
token = your_api_token
api_url = https://api.arianet.io
output_format = json

[production]
token = production_token
api_url = https://api.arianet.io

[staging]
token = staging_token
api_url = https://staging-api.arianet.io

برطرف کردن مشکلات

مشکل اتصال

# بررسی اتصال
arianet ping

# نمایش اطلاعات دقیق خطا
arianet servers list --debug

# بررسی نقطه‌پایانی API
curl -I https://api.arianet.io/health

مشکل احراز هویت

# تأیید توکن
arianet whoami

# بازتنظیم احراز هویت
arianet logout
arianet login

# بررسی فایل تکن
cat ~/.arianet/token

مشکل زمان‌بندی

# افزایش زمان انتظار
arianet servers list --timeout 30s

# بررسی سرعت شبکه
ping api.arianet.io

خطای نرخ محدودی

# اگر 429 دریافت کنید، بین درخواست‌ها منتظر بمانید
arianet servers list --retry-after 10

نمونه‌های عملی

بکاپ گیری از تمام سرورها

#!/bin/bash

BACKUP_DIR="./backups"
mkdir -p $BACKUP_DIR

# صادر کردن تمام سرورها
arianet servers list -o json > "$BACKUP_DIR/servers-$(date +%Y%m%d-%H%M%S).json"

# صادر کردن تمام کلید‌های SSH
arianet ssh-keys list -o json > "$BACKUP_DIR/ssh-keys-$(date +%Y%m%d-%H%M%S).json"

echo "✓ بکاپ گیری مکمل شد"

بررسی هشدار موجودی

#!/bin/bash

THRESHOLD=10000

BALANCE=$(arianet balance -o json | jq -r '.balance')

if [ $BALANCE -lt $THRESHOLD ]; then
echo "⚠️ هشدار: موجودی کم! ($BALANCE تومان)"
# ارسال ایمیل یا اعلان
else
echo "✓ موجودی کافی است ($BALANCE تومان)"
fi

راه‌اندازی مجدد دوره‌ای

#!/bin/bash

# راه‌اندازی مجدد تمام سرورها هر 7 روز
# (افزودن به crontab)
# 0 2 * * 0 /path/to/reboot-servers.sh

arianet servers list -o json | jq -r '.[] | .id' | while read id; do
echo "راه‌اندازی مجدد سرور $id..."
arianet servers reboot $id --confirm
sleep 5
done

echo "✓ راه‌اندازی مجدد دوره‌ای مکمل شد"

راهنمای تصحیح و توسعه

تثبیت نسخه خاص

# نسخه ۱.۲.۳ را نصب کنید
arianet update --version 1.2.3

اطلاعات نسخه

arianet --version

# خروجی:
# arianet version 1.5.0 (build: abc123, os: darwin/amd64)

فعال‌سازی حالت debug

# بطور موقت
arianet servers list --debug

# یا متغیر محیطی
export DEBUG=true

منابع و ارتباطات