RoostGPT מאוחסן בעצמו - פריסה ב-AWS באמצעות Terraform
כדי לארח את ערימת RoostGPT באופן עצמאי, אנו זקוקים למשאבי התשתית הבאים.
- מסד נתונים MySQL או Postgres
- תעודות SSL ודומיין DNS
- מזהה לקוח, סוד ותצורת DNS הקשורים ליישום oAuth עבור הפניה מחדש
- זיהוי טווח IP CIDR ואזור זמינות של מרכז נתונים בענן לצורך הגדרת משאבי מחשוב ענן ורשת
המשאבים הבאים יוקצו באמצעות סקריפט Terraform
- VPC ותת-רשתות ציבוריות ופרטיות מתאימות ושער NAT
- מופעי Ubuntu Compute (EC2) ואמצעי אחסון נלווים
- מאזן עומסים של יישומים וקבוצות יעד
- 1. תחילת העבודה
- 2. הגדרת ספק OAuth
- 3. הגדרת מסד נתונים
- 4. משתני טראפורמה
- 5. שדרוג/תחזוקה של משטח הבקרה של RoostGPT
1. תחילת העבודה
Roost מספקת סקריפטים של Terraform כדי להפעיל ולקבוע את התצורה של פלטפורמת RoostGPT בקלות. להלן השלבים לפריסת Roost ב-AWS באמצעות Terraform.
ארכיטקטורה ברמה גבוהה
סקריפטים של Roost Terraform יוצרים את הרכיבים הבאים בענן AWS
דיאגרמה אינטראקטיבית בכתובת https://docs.roost.ai/arch
דרישות קדם
- חשבון משתמש עם הרשאות מנהל / מדיניות מופעלות להפעלת סקריפטים של terraform
- אֵזוֹר
- מזהה_אזור_מארח_מסלול53
- ec2_ami (עבור אובונטו ג'אמי 22.04)
- dns_ארגוני
- ip_block_vpc (VPC CIDR שבו יוקם Roost)
- okta_client_id או ספק אימות מתאים (אנא עיינו בסעיף הבא)
- שם החברה
הורד את הסקריפטים של Terraform
curl -LO https://github.com/roost-io/roost-support/raw/refs/heads/master/terraform-ec2.zip
2. הגדרת ספק OAuth
Roost תומך במנגנוני אימות שונים כפי שצוין להלן
- אוקטה
- גוגל
- מיקרוסופט ת'ור ADFS
הגדרת לקוח אימות OKTA
- היכנס לחשבון OKTA שלך עם הרשאות מנהל ( אם אין לך חשבון Okta קיים, הירשם בדף הבית | מפתח Okta )
- מתפריט הניווט השמאלי, עבור אל יישומים -> יישומים.
- בחר צור אינטגרציית אפליקציה ← OIDC - OpenID Connect ← יישום אינטרנט, לאחר מכן לחץ על הבא
- מלאו את שם האינטגרציה המתאים לאפליקציה, העלו את הלוגו.
- הוסף כתובות URI להפניה מחדש של כניסה
- https://<שם_DNS>/התחברות
- אפשר גישה למשתמשים דרך משימות → גישה מבוקרת
- בחר את קבוצות המשתמשים או אפשר גישה לכולם
- שמור ורשום לעצמך את מזהה הלקוח של Okta ואת סוד הלקוח (יש צורך בכך בהמשך בתצורה למטה)
- מתפריט הניווט השמאלי, עבור אל אבטחה -> API
- רשום לעצמך את ה-URI של המנפיק עבור שרת ההרשאות המוגדר כברירת מחדל
- משהו כמו https://{your_domain}.okta.com/oauth2/default
הגדרת לקוח אימות גוגל
-
שילוב כניסה מגוגל באפליקציית האינטרנט שלך | כניסה מגוגל לאתרי אינטרנט | מפתחי גוגל
-
צור אישורים, בחר לקוח OAuth וסוג יישום כאפליקציית אינטרנט
-
הוסף מקור JavaScript מורשה כ
-
https://<שם_DNS>
-
-
הוסף כתובות URI מורשות להפניה מחדש
-
https://<שם_DNS>/התחברות
-
https://<שם_DNS>/api/auth/redirect/google
-
-
הורד את קובץ ה-JSON
-
רשום לעצמך את מזהה הלקוח של גוגל ואת סוד הלקוח (נדרש בהמשך בתצורה למטה)
הגדרת לקוח אימות Azure ADFS
Roost 0Auth2 Setup - Windows Server 2016/2019 - ADFS 4.0
-
פתח את מנהל השרתים מתפריט התחל, בחר כלים > ניהול AD FS
-
ממסך ניהול AD FS , עבור אל AD FS ➜ קבוצות יישומים
-
לחץ על הוסף קבוצת יישומים בחלונית הימנית
-
מלא שם ( Roost ) עבור קבוצת היישומים
-
בחר דפדפן אינטרנט של יישום שרת שניגש ל-API אינטרנטי ולחץ על הבא
-
שימו לב לערך של מזהה הלקוח . זה יהיה הערך של
AZURE_ADFS_CLIENT_IDהמשתנה -
מלאו את כתובת ה-URI להפניה ( https://<DNS_NAME>/login ) ולחצו על הוסף, לאחר מכן על הבא
-
סמן את התיבה צור סוד משותף
-
השתמשו בלחצן העתק ללוח כדי לאחזר את הסוד. זה יהיה הערך של
AZURE_ADFS_CLIENT_SECRETהמשתנה. לחצו על הבא -
הזן את מזהה ה-Web API (זהה ל-RedirectUri - https://<DNS_NAME>/login ) ולחץ על הוסף, לאחר מכן על הבא.
-
במסך מדיניות בקרת גישה , בחר מדיניות, בדרך כלל אפשר לכולם ולחץ על הבא
-
במסך הגדרת הרשאות יישום , בחר את ה- openid של ההיקף ולחץ על הבא
-
סקור את ההגדרות ולחצו על הבא
-
סגור את האשף על ידי לחיצה על סגור . האפליקציה שלנו רשומה כעת ב- ADFS .
-
כעת, עלינו להגדיר את התביעות עבור היישום
-
פתחו את המאפיינים עבור קבוצת היישומים שזה עתה יצרנו.
-
בחר את ערך יישום האינטרנט ( Roost - Web API ) ולחץ על עריכה
-
בכרטיסייה כללי טרנספורמציה של הנפקה , לחץ על לחצן הוסף כלל
-
בחר שלח מאפייני LDAP כתביעות ולחץ על הבא
-
תן שם לכלל ( Roost Claims ) ובחר את Active Directory כמאגר המאפיינים.
-
כעת הגדר את התביעות הבאות ( תכונת LDAP => סוג תביעה יוצאת ):
-
כתובות דוא"ל => כתובת דוא"ל
-
שם פרטי => שם פרטי
-
שם משפחה => שם משפחה
-
שם חשבון SAM => שם חשבון Windows
-
שם משתמש ראשי => UPN
-
לחץ על סיום כדי לשמור את התביעות
-
כעת אתה אמור לראות את הכלל נוסף. לחץ על אישור מספר פעמים כדי לשמור את ההגדרות.
-
כעת ההתקנה הושלמה. קבענו את שלושת הערכים הבאים כמשתני סביבה:
-
AZURE_ADFS_CLIENT_ISSUER- תחום של שרת ADFS ( https://adfs.contoso.com ) -
AZURE_ADFS_CLIENT_ID- מזהה לקוח של יישום שרת -
AZURE_ADFS_CLIENT_SECRET- סוד הלקוח שהעתקנו ללוח
אם אינך רוצה להשתמש בסוד הלקוח, הוסף יישום מקורי והעביר AZURE_ADFS_CLIENT_SECRETאת המשתנה כריק.
3. הגדרת מסד נתונים
Roost מאחסן את סטטוס זרימת העבודה של GPT ומידע רלוונטי אחר במסד הנתונים. Roost תומך ב-MySQL, Postgres ו-Amazon Aurora DB. כל מסד נתונים נדרש כדי ש-RoostGPT יפעל.
להלן השלבים להגדרת RDS ב-AWS
אמזון אורורה (תואם ל-MySQL) או MySQL
-
בחר RDS
-
בחר צור מסד נתונים
-
בחר "יצירה קלה" עבור "Amazon Aurora עם תאימות MYSQL" או "MySQL"
-
שנה את קבוצת האבטחה של RDS כדי לאפשר גישה ליציאת TCP 3306 לקבוצת האבטחה של מופעי מישור הבקרה בלבד.
-
רשום לעצמך את נקודת הקצה, המשתמש והסיסמה של מסד הנתונים של מופע הכותב (יש צורך בכך בהמשך בתצורה שלהלן)
צור משתמש חדש עם הרשאות קריאה וכתיבה והימנע משימוש בהתחברות של מנהל מערכת.
# Sample command to create a user using MySQL CLI
# Provide password on prompt
mysql -h <SQL Host URL> -u <root|master|admin> -p
CREATE USER 'Roost'@'%' identified WITH mysql_native_password by 'Roost#123';
CREATE DATABASE roostio;
GRANT ALL on roostio.* to 'Roost'@'%';
# Execute the Roost Schema file, if available
\. /var/tmp/Roost/db/roost.sql
אמזון אורורה (תואם ל-PostgreSQL) או PostgreSQL
-
בחר RDS
-
בחר צור מסד נתונים
-
בחר "יצירה קלה" עבור "Amazon Aurora עם תאימות PostgreSQL" או "PostgreSQL"
-
שנה את קבוצת האבטחה של RDS כדי לאפשר גישה ליציאת TCP 5432 לקבוצת האבטחה של מופעי מישור הבקרה בלבד.
-
רשום לעצמך את נקודת הקצה, המשתמש והסיסמה של מסד הנתונים של מופע הכותב (יש צורך בכך בהמשך בתצורה שלהלן)
-
צור משתמש חדש עם הרשאות קריאה וכתיבה והימנע משימוש בהתחברות של מנהל מערכת.
psql "host=<PG Host URL> user=<admin> dbname=postgres port=5432 sslmode=require"
CREATE DATABASE roostio; -- creates app database [5]
CREATE USER roost WITH PASSWORD 'Roost#123'; -- creates login role [3]
GRANT ALL PRIVILEGES ON DATABASE roostio TO roost; -- DB-level grant [4]
-- Connect to the new DB (reconnect as admin or roost), then set schema privileges
\c roostio
GRANT USAGE ON SCHEMA public TO roost;
GRANT ALL ON ALL TABLES IN SCHEMA public TO roost;
GRANT USAGE ON ALL SEQUENCES IN SCHEMA public TO roost;
ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT ALL ON TABLES TO roost;
ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT USAGE ON SEQUENCES TO roost;
-- Execute the Roost Schema file, if available
\i /var/tmp/Roost/db/roost.sql
4. משתני טראפורמה
אנא בצעו את השלבים הבאים כדי לשנות קבצי terraform כדי לשלב את
- העתק
terraform.tfvars.originalכterraform.tfvars - מלאו את הפרטים הבאים (ערכי דוגמה כבר סופקו)
enterprise_dns = "subdomain.domain.com"
admin_email = "comma separated list of emails"
enterprise_email_domain = "email-domain.com"
company = ""
license_key = ""
roost_jwt_token = "32-character-secure-long-secret"
roost_version = "v1.1.17"
az1_suffix = "b"
az2_suffix = "c"
certificate_arn = "arn:aws:acm:region:account:certificate/cert-id"
ec2_ami = "ami-023a307f3d27ea427"
region = "region"
ip_block_vpc="172.32.255.192"
route53_hosted_zone_id = ""
key_pair = "roost-ssh"
azure_tenant_id = ""
azure_client_id = ""
azure_client_secret = ""
okta_client_id = "your client id"
okta_client_secret = "your client secret"
okta_issuer = "https://account.okta.com/oauth2/default"
is_own_mysql = false
mysql_db_name = "roostio"
mysql_host = "mysqldb_host_url"
mysql_password = "Roost#123"
mysql_port = 3306
mysql_root_password = "Admin#123"
mysql_username = "Roost"
Terraform הגדרות משתני
|
Field |
Values | Description |
| roost_version | "v1.1.17" | |
| license_key | ||
| prefix | "terraform-gpt" | |
| region | "us-west-1" | |
| az1_suffix | "b" | |
| az2_suffix | "c" | |
| deletion_protection | false | |
| route53_hosted_zone_id | ||
| enterprise_dns | "roostgpt.example.com" | |
| enterprise_ssl_certificate_path | "/var/tmp/Roost/certs/server.cer" | |
| enterprise_ssl_certificate_key_path | "/var/tmp/Roost/certs/server.key" | |
| certificate_arn | "" | |
| ec2_ami | "ami-03df6dea56f8aa618" | |
| key_pair | "roost-gpt-keypair" | |
| generate_key_pair | true | |
| device_name | "sdh" | |
| ip_block_vpc | "172.32.255.192" | |
| instance_type_controlplane | "c5a.2xlarge" | |
| instance_type_jumphost | "t3.micro" | |
| disk_roostgpt | 150 | |
| disk_jumphost | 150 | |
| disk_controlplane | 150 | |
| google_client_id | ||
| google_client_secret | ||
| github_client_id | ||
| github_client_secret | ||
| linkedin_client_id | ||
| linkedin_client_secret | ||
| azure_tenant_id | ||
| azure_client_id | ||
| azure_client_secret | ||
| okta_client_id | "0oa4bweaxcqn2sfTu5d7" | |
| okta_client_secret | "D5oRtWXUWcl9gp1312dVtuSoumU4vrECO4wSsqAO" | |
| okta_issuer | ||
| roost_jwt_token | ||
| company | ||
| company_logo | "https://roost.ai/hubfs/logos/Roost.ai-logo-gold.svg" | |
| enterprise_email_domain | "example.com" | |
| admin_email | "admin@email" | |
| admin_email_pass | "" | |
| senders_email | "sender@email" | |
| is_own_mysql | false | |
| db_type | "mysql" | |
| mysql_host | "mysqldb_host_url" | |
| mysql_password | "Roost#123" | |
| mysql_username | "Roost" | |
| mysql_port | 3306 | |
| mysql_db_name | "roostio" | |
| mysql_root_password | "Admin#123" | |
| senders_email_pass | ||
| email_smtp_host |
5. שדרוג/תחזוקה של משטח הבקרה של RoostGPT
ישנן מספר אפשרויות זמינות לרענון או שדרוג מחסנית RoostGPT. מהנדס התשתית יכול להשתמש בכל אחת מהגישות הללו.
RoostGPT א. שימוש בסקריפט Terraform לשדרוג גרסת
עדכון משתני Terraform ב- "terraform.tfvars" כדי לשקף את גרסת Roost המתאימה
|
שָׂדֶה |
ערכים |
|
גרסת_הרוסט |
1.1.17 גרסה |
הפעל את הפקודות הבאות:
terraform apply
ב. שימוש בסקריפט Terraform לרענון משטח הבקרה (ללא שינוי תצורה)
הפעל את הפקודות הבאות
terraform apply --replace="null_resource.provision-controlplane-system" --replace="null_resource.provision-roostgpt-server" --replace="null_resource.run-controlplane-services"
ג. שימוש ב-SSH לביצוע מופע במישור הבקרה
משטח הבקרה של RoostGPT מריץ סקריפט חיבור של docker וניתן לעדכן את כל ההיצע באמצעות השלבים הבאים.
- התחברות SSH למערכת הבסטיון של התשתית שלך כמשתמש אובונטו
- בצע את הקטע הבא עם גרסת Roost המתאימה (לאחר החלפת גרסה 1.1.17)
ssh cp "ROOST_VER='v1.1.17' /var/tmp/Roost/bin/roost-enterprise.sh -c /var/tmp/Roost/config.json -i roostai"
