RoostGPT מאוחסן בעצמו - פריסה ב-AWS באמצעות Terraform

כדי לארח את ערימת RoostGPT באופן עצמאי, אנו זקוקים למשאבי התשתית הבאים. 

המשאבים הבאים יוקצו באמצעות סקריפט Terraform

1. תחילת העבודה

Roost מספקת סקריפטים של Terraform כדי להפעיל ולקבוע את התצורה של פלטפורמת RoostGPT בקלות. להלן השלבים לפריסת Roost ב-AWS באמצעות Terraform. 

ארכיטקטורה ברמה גבוהה

סקריפטים של Roost Terraform יוצרים את הרכיבים הבאים בענן AWS 

RoostGPT-architecture-multiple-ec2.jpg

דיאגרמה אינטראקטיבית בכתובת https://docs.roost.ai/arch

דרישות קדם 

הורד את הסקריפטים של Terraform

curl -LO https://github.com/roost-io/roost-support/raw/refs/heads/master/terraform-ec2.zip

2. הגדרת ספק OAuth

Roost תומך במנגנוני אימות שונים כפי שצוין להלן

  1. אוקטה
  2. גוגל
  3. מיקרוסופט ת'ור ADFS

הגדרת לקוח אימות OKTA

הגדרת לקוח אימות גוגל

הגדרת לקוח אימות Azure ADFS

Roost 0Auth2 Setup - Windows Server 2016/2019 - ADFS 4.0

  1. פתח את מנהל השרתים מתפריט התחל, בחר כלים > ניהול AD FS

  2. ממסך ניהול AD FS , עבור אל AD FS ➜ קבוצות יישומים

  3. לחץ על הוסף קבוצת יישומים בחלונית הימנית

  1. מלא שם ( Roost ) עבור קבוצת היישומים

  2. בחר דפדפן אינטרנט של יישום שרת שניגש ל-API אינטרנטי ולחץ על הבא

  3. שימו לב לערך של מזהה הלקוח . זה יהיה הערך של AZURE_ADFS_CLIENT_IDהמשתנה

  4. מלאו את כתובת ה-URI להפניה ( https://<DNS_NAME>/login ) ולחצו על הוסף, לאחר מכן על הבא

  5. סמן את התיבה צור סוד משותף

  6. השתמשו בלחצן העתק ללוח כדי לאחזר את הסוד. זה יהיה הערך של AZURE_ADFS_CLIENT_SECRETהמשתנה. לחצו על הבא

  7. הזן את מזהה ה-Web API (זהה ל-RedirectUri - https://<DNS_NAME>/login ) ולחץ על הוסף, לאחר מכן על הבא.

  8. במסך מדיניות בקרת גישה , בחר מדיניות, בדרך כלל אפשר לכולם ולחץ על הבא

  9. במסך הגדרת הרשאות יישום , בחר את ה- openid של ההיקף ולחץ על הבא

  10. סקור את ההגדרות ולחצו על הבא

  11. סגור את האשף על ידי לחיצה על סגור . האפליקציה שלנו רשומה כעת ב- ADFS .

  1. כעת, עלינו להגדיר את התביעות עבור היישום

  1. פתחו את המאפיינים עבור קבוצת היישומים שזה עתה יצרנו.

  2. בחר את ערך יישום האינטרנט ( Roost - Web API ) ולחץ על עריכה

  3. בכרטיסייה כללי טרנספורמציה של הנפקה , לחץ על לחצן הוסף כלל

  4. בחר שלח מאפייני LDAP כתביעות ולחץ על הבא

  5. תן שם לכלל ( Roost Claims ) ובחר את Active Directory כמאגר המאפיינים.

  6. כעת הגדר את התביעות הבאות ( תכונת LDAP => סוג תביעה יוצאת ):

  1. כתובות דוא"ל => כתובת דוא"ל

  2. שם פרטי => שם פרטי

  3. שם משפחה => שם משפחה

  4. שם חשבון SAM => שם חשבון Windows

  5. שם משתמש ראשי => UPN

  1. לחץ על סיום כדי לשמור את התביעות

  2. כעת אתה אמור לראות את הכלל נוסף. לחץ על אישור מספר פעמים כדי לשמור את ההגדרות.

  1. כעת ההתקנה הושלמה. קבענו את שלושת הערכים הבאים כמשתני סביבה:

  1. AZURE_ADFS_CLIENT_ISSUER- תחום   של שרת ADFS https://adfs.contoso.com )

  2. AZURE_ADFS_CLIENT_ID  - מזהה לקוח של יישום שרת

  3. AZURE_ADFS_CLIENT_SECRET  - סוד הלקוח שהעתקנו ללוח

אם אינך רוצה להשתמש בסוד הלקוח, הוסף יישום מקורי והעביר AZURE_ADFS_CLIENT_SECRETאת המשתנה כריק.

3. הגדרת מסד נתונים

Roost מאחסן את סטטוס זרימת העבודה של GPT ומידע רלוונטי אחר במסד הנתונים. Roost תומך ב-MySQL, Postgres ו-Amazon Aurora DB. כל מסד נתונים נדרש כדי ש-RoostGPT יפעל.

להלן השלבים להגדרת RDS ב-AWS

אמזון אורורה (תואם ל-MySQL) או MySQL

  1. בחר RDS

  2. בחר צור מסד נתונים

  3. בחר "יצירה קלה" עבור "Amazon Aurora עם תאימות MYSQL" או "MySQL"

  4. שנה את קבוצת האבטחה של RDS כדי לאפשר גישה ליציאת TCP 3306 לקבוצת האבטחה של מופעי מישור הבקרה בלבד.

  5. רשום לעצמך את נקודת הקצה, המשתמש והסיסמה של מסד הנתונים של מופע הכותב (יש צורך בכך בהמשך בתצורה שלהלן)

צור משתמש חדש עם הרשאות קריאה וכתיבה והימנע משימוש בהתחברות של מנהל מערכת.

# 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

  1. בחר RDS

  2. בחר צור מסד נתונים

  3. בחר "יצירה קלה" עבור "Amazon Aurora עם תאימות PostgreSQL" או "PostgreSQL"

  4. שנה את קבוצת האבטחה של RDS כדי לאפשר גישה ליציאת TCP 5432 לקבוצת האבטחה של מופעי מישור הבקרה בלבד.

  5. רשום לעצמך את נקודת הקצה, המשתמש והסיסמה של מסד הנתונים של מופע הכותב (יש צורך בכך בהמשך בתצורה שלהלן)

  6. צור משתמש חדש עם הרשאות קריאה וכתיבה והימנע משימוש בהתחברות של מנהל מערכת.

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 כדי לשלב את  

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 cp "ROOST_VER='v1.1.17' /var/tmp/Roost/bin/roost-enterprise.sh -c /var/tmp/Roost/config.json -i roostai"