زیرساخت در گیت
همه سرورها، شبکهها و قوانین فایروال در کد ثبت میشوند؛ بازبینی، تاریخچه و بازگشت به نسخه قبل مثل بقیه کدهای پروژه.
سرور، شبکه خصوصی، فایروال، والیوم، آیپی شناور و لودبالانسر آریانت کلاد را در فایلهای Terraform تعریف کنید، تغییرات را پیش از اعمال ببینید و همان زیرساخت را هر بار دقیقا یکسان بسازید. منابعی که Terraform میسازد همان لحظه در پنل هم دیده میشوند.
همه سرورها، شبکهها و قوانین فایروال در کد ثبت میشوند؛ بازبینی، تاریخچه و بازگشت به نسخه قبل مثل بقیه کدهای پروژه.
terraform plan دقیقا نشان میدهد چه چیزی ساخته، تغییر یا حذف میشود.
محیط تست، staging و production را از یک تعریف بسازید تا تفاوت ناخواستهای بینشان نباشد.
سرورها و منابعی را که قبلا در پنل ساختهاید با terraform import زیر مدیریت Terraform بیاورید.
cloud:servers:read و cloud:servers:write بسازید (برای کلید SSH، دسترسی ssh_keys هم لازم است).ARIANET_TOKEN بدهید و هرگز آن را در کد ننویسید.terraform init را اجرا کنید تا provider از رجیستری دانلود شود، بعد terraform plan و terraform apply.terraform {
required_providers {
arianet = {
source = "ariaservice/arianet"
version = "0.1.0"
}
}
}
provider "arianet" {
token = var.arianet_token
}
variable "arianet_token" {
type = string
sensitive = true
}
# Any location code from data.arianet_locations / `arianet cloud datacenters`
variable "datacenter" {
type = string
}
این نمونه پلن را از دیتا سورس arianet_plans میخواند، کلید SSH را اضافه میکند، یک سرور اوبونتو با برچسب میسازد و فایروالی را روی همه سرورهای با برچسب role=web اعمال میکند.
data "arianet_plans" "dc" {
datacenter = var.datacenter
}
resource "arianet_ssh_key" "me" {
name = "laptop"
public_key = file("~/.ssh/id_ed25519.pub")
}
resource "arianet_server" "web" {
name = "web-1"
datacenter = var.datacenter
plan_id = data.arianet_plans.dc.plans[0].id
image = "ubuntu-24.04"
ssh_key_ids = [arianet_ssh_key.me.id]
labels = {
env = "prod"
role = "web"
}
}
resource "arianet_firewall" "web" {
name = "web"
rule {
direction = "in"
protocol = "tcp"
port = "443"
source_ips = ["0.0.0.0/0", "::/0"]
}
apply_to = [
{ label_selector = "role=web" },
]
}
arianet_serverarianet_volume, arianet_volume_attachmentarianet_network, arianet_network_subnet, arianet_network_routearianet_firewall, arianet_firewall_attachmentarianet_floating_ip, arianet_floating_ip_assignmentarianet_ssh_keyarianet_load_balancer, arianet_load_balancer_service, arianet_load_balancer_targetarianet_images, arianet_imagearianet_plans, arianet_locationsarianet_pricing, arianet_server_costsarianet_load_balancer_typesarianet_server, arianet_network, arianet_ssh_keyسرورها را روی یک شبکه خصوصی قرار دهید و ترافیک را با یک لودبالانسر بین همه سرورهای با برچسب role=web پخش کنید؛ سرور تازهای که همین برچسب را بگیرد، خودکار به لودبالانسر اضافه میشود.
resource "arianet_network" "private" {
name = "private"
datacenter = var.datacenter
ip_range = "10.0.0.0/16"
subnet_ip_range = "10.0.1.0/24"
}
resource "arianet_load_balancer" "lb" {
name = "web"
datacenter = var.datacenter
type = "lb11"
algorithm = "round_robin"
network_id = arianet_network.private.id
}
resource "arianet_load_balancer_service" "http" {
load_balancer_id = arianet_load_balancer.lb.id
protocol = "http"
listen_port = 80
destination_port = 8080
}
resource "arianet_load_balancer_target" "web" {
load_balancer_id = arianet_load_balancer.lb.id
type = "label_selector"
label_selector = "role=web"
use_private_ip = true
}
provider به دیتاسنتر خاصی وابسته نیست: کد لوکیشن را در متغیر datacenter بدهید و فهرست لوکیشنها را با دیتا سورس arianet_locations و قیمت هر پلن را با arianet_pricing بخوانید. مستندات کامل هر resource و همه گزینههایش در رجیستری Terraform است.
سرور، والیوم و اتصال آن، شبکه خصوصی با سابنت و مسیر، فایروال و اتصال آن به سرور یا لیبل، آیپی شناور و انتساب آن، کلید SSH و لودبالانسر با سرویس و هدف. دیتا سورسهایی هم برای ایمیجها، پلنها، لوکیشنها، قیمتها، هزینه سرور و نوع لودبالانسر دارد.
توکن را در پنل ابری آریانت بسازید و یا با متغیر حساس arianet_token به بلوک provider بدهید، یا آن را در متغیر محیطی ARIANET_TOKEN قرار دهید. توکن باید دسترسی cloud:servers:read و cloud:servers:write داشته باشد و برای مدیریت کلید SSH، دسترسی ssh_keys هم لازم است.
بله. همه منابع از terraform import پشتیبانی میکنند، پس میتوانید زیرساخت موجود را بدون ساخت دوباره زیر مدیریت Terraform بیاورید.
بله. provider همان API عمومی آریانت را صدا میزند و هر منبعی که بسازد یا تغییر دهد، بلافاصله در پنل دیده میشود.
بله. دیتا سورس arianet_pricing فهرست قیمت عمومی هر لوکیشن را میخواند و arianet_server_costs هزینه ساعتی و ماهانه یک سرور را برمیگرداند.