במדריך הזה מוסבר איך לייבא משאבים לפריסה של Infrastructure Manager ב- Google Cloud . אפשר לייבא רק משאבים שהוקצו באמצעות Terraform.
אם יש לכם הגדרות Terraform ועדיין לא פרסתם אותן ב-Google Cloud, תוכלו לקרוא את המאמר פריסת תשתית באמצעות Infrastructure Manager.
במדריך הזה נתחיל בפריסת ענן וירטואלי פרטי (VPC) ב-Google Cloud באמצעות Terraform CLI. בהמשך המדריך מוסבר איך לייבא את המשאבים האלה שנפרסו אל Infrastructure Manager כדי שאפשר יהיה לנהל אותם כפריסה של Infrastructure Manager.
אפשר להשתמש בדוגמה שבמדריך הזה כדי להבין איך לייבאGoogle Cloud משאבים אחרים אל Infra Manager. כדי לייבא את הפריסה אל Infra Manager, ההגדרות של Terraform ששימשו להקצאת המשאבים צריכות לעמוד במגבלות, והמשאבים צריכים להיות מוקצים באמצעות גרסה נתמכת של Terraform.
עלויות
במדריך הזה השתמשנו ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:
לפני שמתחילים
-
נכנסים לחשבון Google.
אם עדיין אין חשבון, יוצרים חשבון חדש.
-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init -
יוצרים או בוחרים Google Cloud פרויקט.
תפקידים שנדרשים כדי לבחור או ליצור פרויקט
- Select a project: כדי לבחור פרויקט לא צריך תפקיד IAM ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
-
יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד Project Creator (יצירת פרויקטים) (
roles/resourcemanager.projectCreator), שכולל את ההרשאהresourcemanager.projects.create. איך מקצים תפקידים
-
יוצרים Google Cloud פרויקט:
gcloud projects create PROJECT_ID
מחליפים את
PROJECT_IDבשם של פרויקט Google Cloud שיוצרים. -
בוחרים את הפרויקט שיצרתם: Google Cloud
gcloud config set project PROJECT_ID
מחליפים את
PROJECT_IDבשם הפרויקט ב- Google Cloud .
מפעילים את Infrastructure Manager API:
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (
roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאהserviceusage.services.enable. איך מקצים תפקידיםgcloud services enable config.googleapis.com
-
מגדירים את האימות:
-
מוודאים שיש לכם את תפקיד ה-IAM Create Service Accounts (
roles/iam.serviceAccountCreator) ואת תפקיד ה-IAM Project Admin (roles/resourcemanager.projectIamAdmin). איך מקצים תפקידים -
יוצרים את חשבון השירות:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
מחליפים את הערך
SERVICE_ACCOUNT_NAMEבשם שרוצים לתת לחשבון השירות. -
מקצים לחשבון השירות את התפקיד
roles/config.agentב-IAM:gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=roles/config.agent
מחליפים את מה שכתוב בשדות הבאים:
SERVICE_ACCOUNT_NAME: השם של חשבון השירותPROJECT_ID: מזהה הפרויקט שבו יצרתם את חשבון השירות
-
מוודאים שיש לכם את תפקיד ה-IAM Create Service Accounts (
-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init -
יוצרים או בוחרים Google Cloud פרויקט.
תפקידים שנדרשים כדי לבחור או ליצור פרויקט
- Select a project: כדי לבחור פרויקט לא צריך תפקיד IAM ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
-
יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד Project Creator (יצירת פרויקטים) (
roles/resourcemanager.projectCreator), שכולל את ההרשאהresourcemanager.projects.create. איך מקצים תפקידים
-
יוצרים Google Cloud פרויקט:
gcloud projects create PROJECT_ID
מחליפים את
PROJECT_IDבשם של פרויקט Google Cloud שיוצרים. -
בוחרים את הפרויקט שיצרתם: Google Cloud
gcloud config set project PROJECT_ID
מחליפים את
PROJECT_IDבשם הפרויקט ב- Google Cloud .
מפעילים את Infrastructure Manager API:
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (
roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאהserviceusage.services.enable. איך מקצים תפקידיםgcloud services enable config.googleapis.com
-
מגדירים את האימות:
-
מוודאים שיש לכם את תפקיד ה-IAM Create Service Accounts (
roles/iam.serviceAccountCreator) ואת תפקיד ה-IAM Project Admin (roles/resourcemanager.projectIamAdmin). איך מקצים תפקידים -
יוצרים את חשבון השירות:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
מחליפים את הערך
SERVICE_ACCOUNT_NAMEבשם שרוצים לתת לחשבון השירות. -
מקצים לחשבון השירות את התפקיד
roles/config.agentב-IAM:gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=roles/config.agent
מחליפים את מה שכתוב בשדות הבאים:
SERVICE_ACCOUNT_NAME: השם של חשבון השירותPROJECT_ID: מזהה הפרויקט שבו יצרתם את חשבון השירות
-
מוודאים שיש לכם את תפקיד ה-IAM Create Service Accounts (
- מתקינים גרסה נתמכת של Terraform.
פריסת משאבים ב Google Cloud
המשאב Google Cloud שפורס במדריך הזה הוא VPC. בקטע הזה מוסבר איך פורסים את המשאב כדי להשתמש בו כדוגמה לייבוא משאבים שנפרסו אל Infra Manager.
במדריך הזה נעשה שימוש באזור us-central1. אם רוצים להשתמש באזור אחר, אפשר להשתמש בכל מיקום שבו Infra Manager פועל. ראו מיקומי Infrastructure Manager לקבלת רשימת המיקומים התקפים.
הענקת הרשאות למשאבים בהגדרה
הענקתם את ההרשאות שדרושות להפעלת Infra Manager, אבל אתם צריכים להעניק גם הרשאות שספציפיות למשאבים שמתוארים בהגדרה שאתם פורסים.
נותנים הרשאות ליצירת רשת ה-VPC, שהיא המשאב שמוגדר בתצורת Terraform:
gcloud projects add-iam-policy-binding PROJECT_ID \
--member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
--role=roles/compute.networkAdmin
מחליפים את מה שכתוב בשדות הבאים:
- SERVICE_ACCOUNT_NAME: השם של חשבון השירות.
- PROJECT_ID: מזהה הפרויקט.
פריסת משאבים באמצעות Terraform CLI
יוצרים רשת VPC באמצעות תצורת Terraform הבאה. כדי לעשות זאת, מריצים את הפקודה הבאה:
mkdir vpc_to_import cd vpc_to_import cat <<EOF > main.tf variable "project_id" { type = string } resource "google_compute_network" "vpc_network" { name = "my-custom-mode-network" project = var.project_id } EOFפורסים את ההגדרה באמצעות Terraform CLI באמצעות הפקודה הבאה:
terraform init echo "************** TERRAFORM APPLY ******************" terraform apply -var="project_id=PROJECT_ID" -auto-approve cd ..
כש-VPC מוקצה, מוצגת פלט שמתחיל בטקסט Creation complete.
ה-VPC שהוגדר בתצורת Terraform נפרס עכשיו ב- Google Cloud. Terraform יוצר קובץ מצב, והקובץ הזה נמצא במערכת הקבצים לצד הקובץ main.tf.
יצירת פריסת placeholder ב-Infrastructure Manager
כדי לייבא משאבים ל-Infra Manager, צריך פריסה קיימת ב-Infra Manager.
במדריך הזה נעשה שימוש בקטגוריית אחסון לאחסון הגדרת Terraform. אם אתם משתמשים במדריך הזה כדי להבין איך לייבא פריסות אחרות אל Infra Manager, אתם יכולים לאחסן את ההגדרה של Terraform בקטגוריית אחסון, במאגר Git ציבורי או במחשב המקומי.
מוסיפים לקטגוריית האחסון הגדרה ריקה של Terraform:
gcloud storage buckets create gs://import-deployment-configuration --project=PROJECT_ID mkdir placeholder_deployment cd placeholder_deployment cat <<EOF > main.tf EOF gcloud storage cp main.tf gs://import-deployment-configuration cd ..יצירת פריסה באמצעות Infra Manager.
gcloud infra-manager deployments apply projects/PROJECT_ID/locations/us-central1/deployments/import-deployment \ --gcs-source gs://import-deployment-configuration \ --input-values project_id=PROJECT_ID \ --service-account projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNTבסיום הפריסה, יוצג:
Creating the deployment...done
עכשיו יש לכם פריסה של Infra Manager. לאחר מכן, צריך להוסיף את קובץ המצב ואת ההגדרות של Terraform לפריסה הזו, כדי שהפריסה הזו תנהל את ה-VPC.
ייבוא קובץ המצב וההגדרה של Terraform
כדי לנהל את המשאב שנפרס (ה-VPC) באמצעות Infra Manager, צריך להוסיף את קובץ המצב ואת ההגדרות של Terraform ל-Infra Manager.
נעילת הפריסה
נועלים את הפריסה של Infra Manager כדי שתוכלו לבצע שינויים במצב שלה.
LOCK_ID=$(gcloud infra-manager deployments lock projects/PROJECT_ID/locations/us-central1/deployments/import-deployment --format="get(lockId)")
ייבוא קובץ המצב של Terraform אל Infra Manager
מייבאים את קובץ המצב של המשאבים שפרסתם. קובץ המצב הזה נוצר על ידי Terraform כשפרסתם את ה-VPC באמצעות Terraform CLI.
מעלים את קובץ המצב של Terraform לפריסת Infra Manager.
SIGNED_STATE_UPLOAD_URL=$(gcloud infra-manager deployments import-statefile projects/PROJECT_ID/locations/us-central1/deployments/import-deployment --lock-id ${LOCK_ID} --format="get(signedUri)")
cd vpc_to_import
curl -s -X PUT --upload-file terraform.tfstate $SIGNED_STATE_UPLOAD_URL
העלאת הגדרת Terraform לקטגוריה של Cloud Storage
אחרי שמעלים את קובץ המצב של Terraform, צריך גם להעלות את ההגדרות של Terraform שבהן השתמשתם כדי ליצור את רשת ה-VPC. ל-Infra Manager דרוש קובץ המצב של Terraform כדי שכאשר מריצים תצוגה מקדימה של Infra Manager, לא יזוהו שינויים במשאבים.
מעלים את הגדרות Terraform ל-Cloud Storage באמצעות הפקודה הבאה:
gcloud storage cp main.tf gs://import-deployment-configuration
ביטול הנעילה של הפריסה
אם אתם משתמשים במדריך הזה כדי להבין איך לייבא משאבים ל-Infra Manager, חשוב לוודא שאין הבדלים בין קובץ המצב לבין הגדרת Terraform. אם יש הבדלים בין קובץ המצב לבין הגדרות Terraform, צריך לוודא שקובץ המצב מתאר את המשאבים שרוצים לפרוס. כשמבטלים את הנעילה של הפריסה, אם יש הבדלים בין קובץ המצב לבין ההגדרות של Terraform, Infra Manager יוצר או מוחק משאבים כדי להתאים לקובץ המצב.
כדי לנהל את המשאבים באמצעות Infra Manager, צריך לבטל את הנעילה של הפריסה. במדריך הזה, קובץ המצב וההגדרה של Terraform מתארים את אותה הגדרה, ולכן Infra Manager לא יוצר או מוחק משאבים.
מבטלים את הנעילה של הפריסה על ידי הפעלת הפקודה הבאה.
gcloud infra-manager deployments unlock projects/PROJECT_ID/locations/us-central1/deployments/import-deployment \
--project PROJECT_ID \
--location us-central1 \
--lock-id ${LOCK_ID}
אחרי שמוסיפים את קובץ המצב ואת ההגדרות של Terraform לפריסה של Infra Manager, מסיימים לייבא את המשאבים שנפרסו. ה-VPC שנפרס מנוהל עכשיו על ידי Infra Manager.
תצוגה מקדימה של שינויים במשאבים
מריצים תצוגה מקדימה של הפריסה כדי לוודא שהסטטוס של Terraform והמשאבים שנפרסו ב- Google Cloud מסונכרנים.
יוצרים תצוגה מקדימה באמצעות הפקודה הבאה:
gcloud infra-manager previews create projects/PROJECT_ID/locations/us-central1/previews/IMPORT_DEPLOYMENT_PREVIEW_NAME \ --gcs-source gs://import-deployment-configuration \ --deployment projects/PROJECT_ID/locations/us-central1/deployments/import-deployment \ --service-account projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com --location us-central1כדאי לבדוק את פרטי התצוגה המקדימה כדי לוודא שהיא הסתיימה בהצלחה.
gcloud infra-manager previews describe projects/PROJECT_ID/locations/us-central1/previews/IMPORT_DEPLOYMENT_PREVIEW_NAMEמייצאים את התצוגה המקדימה כדי לבדוק את השינויים.
SIGNED_BIN_PLAN_URL=$(gcloud infra-manager previews export projects/PROJECT_ID/locations/us-central1/previews/IMPORT_DEPLOYMENT_PREVIEW_NAME --format "get(result.binarySignedUri)") curl -X GET --output tfplan.out $SIGNED_BIN_PLAN_URLמוודאים שההגדרה קיימת באופן מקומי ושהיא אותחלה באמצעות הפקודה הבאה:
terraform initמריצים את הפקודה Terraform show כדי לבדוק את השינויים בין מצב הפריסה של Infrastructure Manager לבין ההגדרה.
terraform show tfplan.out
אם משאב ה-VPC ב- Google Cloud וקובץ המצב מסונכרנים, הפלט של terraform show יהיה הבא, ויאמת שלא חלו שינויים בין מצב הפריסה לבין ההגדרה ב-Infrastructure Manager. הפלט אמור להיראות כך:
No changes. Your infrastructure matches the configuration.
Terraform has compared your real infrastructure against your configuration and found no differences, so no changes are needed.
עכשיו ייבאתם את המשאבים שנפרסו כך שהם מנוהלים על ידי Infra Manager. לדוגמה, עכשיו אפשר להשתמש ב-Infra Manager כדי לעדכן את הפריסה.
אפשר גם לעדכן את הפריסה כדי לוודא שהפריסה יובאה בהצלחה אל Infra Manager.
הסרת המשאבים
כדי להימנע מחיובים בחשבון Google Cloud בגלל השימוש במשאבים שנעשה במסגרת המדריך הזה, אפשר למחוק את הפרויקט שמכיל את המשאבים, או להשאיר את הפרויקט ולמחוק את המשאבים בנפרד.
מחיקת הפרויקט
כדי למחוק Google Cloud פרויקט:
gcloud projects delete PROJECT_ID
מחיקת משאבים בודדים
מוחקים את ה-VPC ואת המטא-נתונים של הפריסה:
gcloud infra-manager deployments delete projects/PROJECT_ID/locations/us-central1/deployments/quickstart-deployment