رفتن به محتوا
راه‌اندازی خودمیزبان

راه‌اندازی خودمیزبان

ارائه‌دهنده با Status200 خودتان همان‌طور کار می‌کند که با Status200 Cloud: همان منابع، همان ویژگی‌ها و همان کلیدهای API پروژه. آنچه تنظیمش با شماست: نشانی Status200 شما، نسخهٔ ارائه‌دهنده‌ای که با آن جور است، و هر جا لازم دارید، یک آینه برای ماشین‌های بدون دسترسی به اینترنت و اعتماد به یک مرجع صدور گواهی خصوصی.

flowchart TB R["Terraform Registry یا<br/>OpenTofu Registry یا<br/>آینهٔ شما"] -->|"terraform init"| T["Terraform یا OpenTofu"] T --> P["ارائه‌دهندهٔ Status200،<br/>نه جدیدتر از<br/>Status200 شما"] P -->|"HTTPS، با یک<br/>کلید API از پروژهٔ شما"| O["Status200 شما:<br/>نشانی آن، سپس /api"]

Terraform و Status200 خودتان

ارائه‌دهنده را به Status200 خود نشانه بگیرید

status200_url را به نشانی‌ای تنظیم کنید که داشبورد را با آن باز می‌کنید: scheme و میزبان، بدون مسیر. اگر نشانی scheme نداشته باشد ارائه‌دهنده https:// را می‌افزاید، و در انتها /api را، پس https://status200.example.com هر درخواست را به https://status200.example.com/api می‌فرستد.

main.tfHCL
terraform {
  required_providers {
    oneuptime = {
      source  = "oneuptime/status200"
      version = ">= 14.0, <= 14.0.88"
    }
  }
}

provider "oneuptime" {
  status200_url = "https://status200.example.com"
  # The API key comes from the STATUS200_API_KEY environment variable.
}

نشانی می‌تواند به‌جای آن از متغیر محیطی STATUS200_URL بیاید، تا یک پیکربندی بتواند به چند نصب اشاره کند:

Bash
export STATUS200_URL="https://status200.example.com"
export STATUS200_API_KEY="<your-api-key>"

نشانی همان میزبانی است که نصب شما روی آن سرو می‌شود: HOST و HTTP_PROTOCOL در config.env با Docker Compose، و host و httpProtocol در مقدارهای چارت Helm.

کلید، یک کلید API از پروژه‌ای است که مدیریت می‌کنید، ساخته‌شده در داشبورد Status200 شما در تنظیمات پروژه > پیشرفته > کلیدهای API، مانند Status200 Cloud. کلید API اصلی یک Status200 خودمیزبان به هیچ پروژه‌ای تعلق ندارد، پس ساختنی که با آن انجام شود با ProjectId required شکست می‌خورد.

نکته کاربردی

Status200 شما این بلوک را برایتان می‌نویسد. هر منبع یا فهرستی را در داشبورد باز کنید، سپس توسعه‌دهنده و Terraform را در منوی کناری آن: بلوک ارائه‌دهنده‌ای که نشان می‌دهد نشانی Status200 شما را دارد، و بازهٔ نسخه‌ای که با آن جور است.

نسخهٔ ارائه‌دهنده را برگزینید

از تازه‌ترین ارائه‌دهندهٔ منتشرشده‌ای استفاده کنید که از Status200 شما جدیدتر نیست. نسخه‌های ارائه‌دهنده از نسخه‌های Status200 پیروی می‌کنند: انتشاری از Status200 که ارائه‌دهنده را تغییر می‌دهد، آن را با شمارهٔ نسخهٔ خود همان انتشار منتشر می‌کند، و ارائه‌دهنده‌ای که از Status200 شما جدیدتر است ممکن است تنظیماتی بفرستد که Status200 شما هنوز ندارد.

پس بازه‌ای بنویسید که به نسخهٔ Status200 شما ختم شود، همان کاری که داشبورد می‌کند. بلوک بالا >= 14.0, <= 14.0.88 را می‌گیرد، بازه برای Status200ای که این مستندات از آن می‌آید: وقتی آن‌ها را روی Status200 خودتان می‌خوانید، آن بازه از آنِ شماست. وگرنه، نسخهٔ خودتان را بنویسید:

  1. نسخهٔ Status200 خود را پیدا کنید

    آن را از Status200 خود بپرسید:

    Bash
    curl https://status200.example.com/version

    پاسخ JSON است، مانند {"version":"14.0.40","commit":"..."}. به‌عنوان مدیر اصلی، می‌توانید برچسب نسخه را در سرصفحهٔ داشبورد مدیریت هم باز کنید: نسخهٔ فعلی خود را پیدا کنید را ببینید.

  2. آن را در بازه بنویسید

    بازه از نسخهٔ اصلی شروع می‌شود و به نسخهٔ شما ختم می‌شود. برای یک Status200 14.0.40:

    main.tfHCL
    terraform {
      required_providers {
        oneuptime = {
          source  = "oneuptime/status200"
          version = ">= 14.0, <= 14.0.40"
        }
      }
    }

    Terraform تازه‌ترین ارائه‌دهندهٔ درون بازه را برمی‌دارد. انتشاری از Status200 که ارائه‌دهنده را تغییر نداده است هیچ منتشر نمی‌کند، و بازه از روی نسخه‌هایی که وجود ندارند می‌گذرد.

  3. ارائه‌دهنده را بارگیری کنید

    terraform init را اجرا کنید. نسخه‌ای را که نصب کرده است چاپ می‌کند و آن را در .terraform.lock.hcl ثبت می‌کند.

هنگام ارتقا، نخست Status200 را ارتقا دهید. سپس انتهای بازه را به نسخهٔ تازهٔ آن برسانید، و terraform init -upgrade را اجرا کنید.

بدون دسترسی به اینترنت

وقتی ماشین‌هایی که Terraform را اجرا می‌کنند به رجیستری دسترسی ندارند، ارائه‌دهنده را یک بار در شبکهٔ خود کپی کنید، و Terraform را به آن نسخه نشانه بگیرید.

  1. ارائه‌دهنده را آینه کنید

    روی ماشینی با دسترسی به اینترنت، در پوشه‌ای که پیکربندی شما در آن است، ارائه‌دهنده را برای هر سکویی که ماشین‌هایتان اجرا می‌کنند بارگیری کنید. بدون -platform، فرمان ارائه‌دهنده را فقط برای سکوی خودش بارگیری می‌کند:

    Terraform

    Bash
    terraform providers mirror -platform=linux_amd64 -platform=darwin_arm64 /srv/terraform-mirror

    OpenTofu

    Bash
    tofu providers mirror -platform=linux_amd64 -platform=darwin_arm64 /srv/terraform-mirror

    پوشه ارائه‌دهنده را زیر نشانی رجیستری نگه می‌دارد، مانند registry.terraform.io/status200/status200/. آن را در شبکهٔ خود کپی کنید.

  2. Terraform را به آینه نشانه بگیرید

    یک فایل پیکربندی CLI بنویسید که ارائه‌دهندهٔ Status200 را از پوشه نصب کند، و هر چیز دیگر را مانند همیشه:

    Terraform

    mirror.tfrcHCL
    provider_installation {
      filesystem_mirror {
        path    = "/srv/terraform-mirror"
        include = ["registry.terraform.io/status200/status200"]
      }
      direct {
        exclude = ["registry.terraform.io/status200/status200"]
      }
    }

    OpenTofu

    mirror.tfrcHCL
    provider_installation {
      filesystem_mirror {
        path    = "/srv/terraform-mirror"
        include = ["registry.opentofu.org/status200/status200"]
      }
      direct {
        exclude = ["registry.opentofu.org/status200/status200"]
      }
    }

    نام آن را در TF_CLI_CONFIG_FILE بگذارید، که هم Terraform و هم OpenTofu آن را می‌خوانند: export TF_CLI_CONFIG_FILE=/etc/terraform/mirror.tfrc.

  3. راه‌اندازی اولیه

    terraform init را اجرا کنید: ارائه‌دهنده را از آینه نصب می‌کند. هشدار می‌دهد که فایل قفل اکنون فقط برای این سکو checksum دارد. برای ثبت آن‌ها برای هر سکو، terraform providers lock را با همان گزینه‌های -platform روی ماشینی که به اینترنت دسترسی دارد اجرا کنید، و .terraform.lock.hcl را همراه پیکربندی خود commit کنید.

هر بار که بازهٔ نسخه را بالا می‌برید، دوباره آینه کنید.

TLS و گواهی‌ها

ارائه‌دهنده گواهی Status200 شما را با انبارهٔ اعتماد ماشینی که Terraform را اجرا می‌کند بررسی می‌کند، و هیچ تنظیمی برای رد شدن از این بررسی وجود ندارد. وقتی گواهی از یک مرجع صدور گواهی خصوصی می‌آید، آن مرجع را به انبارهٔ اعتماد هر ماشین و اجراکنندهٔ CI که Terraform را اجرا می‌کند بیفزایید:

Debian / Ubuntu

Bash
sudo cp my-ca.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates

RHEL / Fedora

Bash
sudo cp my-ca.crt /etc/pki/ca-trust/source/anchors/
sudo update-ca-trust

در Linux، جایی که نمی‌توانید انبارهٔ اعتماد را تغییر دهید، مانند یک کانتینر CI، SSL_CERT_FILE را به فایلی تنظیم کنید که مرجع شما و مرجع‌های عمومی را دارد. در macOS و Windows، مرجع را به انبارهٔ گواهی سیستم بیفزایید.

  • پراکسی‌ها. ارائه‌دهنده درخواست‌هایش را از راه پراکسی‌ای که در HTTPS_PROXY است می‌فرستد، جز به میزبان‌های NO_PROXY. یک پراکسی معکوس جلوی Status200 باید هر مسیر /api و سرآیند APIKey را بدون تغییر عبور دهد.
  • HTTP ساده. یک نشانی http:// برای یک نصب آزمایشی کار می‌کند. کلید API با هر درخواستی سفر می‌کند، پس برای هر چیز دیگر از HTTPS استفاده کنید.

رفع اشکال

پیام «x509: certificate signed by unknown authority»

ماشینی که Terraform را اجرا می‌کند به گواهی Status200 شما اعتماد ندارد: مرجع صدور گواهی خود را همان‌طور که TLS و گواهی‌ها نشان می‌دهد بیفزایید.

پیام «invalid character '<' looking for beginning of value»

یک صفحهٔ وب به‌جای API پاسخ داده است: status200_url مسیری دارد، یا یک پراکسی پاسخ داده است. آن را فقط به نشانی Status200 خود تنظیم کنید.

پیام «no available releases match the given constraints»

هیچ ارائه‌دهندهٔ منتشرشده‌ای با قید نسخه جور نیست، برای نمونه قیدی که تنها نسخه‌ای را نام می‌برد که Status200 هرگز منتشر نکرده است. یک بازه بنویسید، همان‌طور که نسخهٔ ارائه‌دهنده را برگزینید نشان می‌دهد.

پیام «ProjectId required»

کلید، کلید API اصلی است که به هیچ پروژه‌ای تعلق ندارد. یک کلید API پروژه بسازید، در تنظیمات پروژه > پیشرفته > کلیدهای API.

رفع اشکال خطاهای دیگر را دارد، و اینکه هر کدام چه معنایی دارد.

گام‌های بعدی