ניהול קבוצות פריסה

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

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

לפני שמתחילים

  1. מוודאים ש-Infra Manager מופעל ושה-Google Cloud CLI מותקן ומאותחל.
  2. מוודאים שיש לכם את התפקיד אדמין הגדרות (roles/config.admin) בניהול זהויות והרשאות גישה (IAM).
  3. מוודאים שיש לפרויקט פריסה קיימת, או יוצרים פריסה. כדי ליצור פריסת בדיקה ליצירת קבוצות פריסה, מריצים את הפקודה הבאה:

    gcloud infra-manager deployments apply projects/PROJECT_ID/locations/LOCATION/deployments/NEW_DEPLOYMENT_ID \
     --service-account=SERVICE_ACCOUNT \
     --git-source-repo="https://github.com/terraform-google-modules/terraform-google-network" \
     --git-source-directory="examples/simple_project_with_regional_network" \
     --git-source-ref="v6.0.1" \
     --input-values=network_name=test-network,project_id=PROJECT_ID \
     --import-existing-resources
    

    מחליפים את מה שכתוב בשדות הבאים:

    • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
    • LOCATION: המיקום של הפריסה שצריך ליצור כדי ליצור קבוצת פריסה. Google Cloud לדוגמה, us-central1.
    • NEW_DEPLOYMENT_ID: המזהה של פריסה. כדי ליצור קבוצת פריסה, צריך פריסה קיימת. מחליפים את EXISTING_DEPLOYMENT_ID ב-NEW_DEPLOYMENT_ID בקטעים הבאים.
    • SERVICE_ACCOUNT: המזהה של חשבון השירות שמשמש ליצירת הפריסה.

יצירת קבוצת פריסה

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

כשיוצרים קבוצת פריסה, כל פריסה שמוסיפים לקבוצה היא יחידת פריסה.

כדי ליצור קבוצת פריסה, משתמשים ב-API בארכיטקטורת REST באופן הבא:

  1. שליחת בקשת POST לנקודת הקצה deploymentGroups:

    curl \
        -X POST \
        -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
        -H "Content-Type: application/json" \
        "https://config.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/deploymentGroups/?deployment_group_id=DEPLOYMENT_GROUP_ID" \
        --data '{
          "deploymentUnits": [
            {
                "id": "DEPLOYMENT_UNIT_ID_1",
                "deployment": "projects/PROJECT_ID/locations/LOCATION/deployments/EXISTING_DEPLOYMENT_ID"
            },
            {
                "id": "DEPLOYMENT_UNIT_ID_2",
                "dependencies": ["DEPENDENT_UNIT_ID"]
            }
          ]
        }'
    

    מחליפים את מה שכתוב בשדות הבאים:

    • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
    • LOCATION: Google Cloud המיקום של קבוצת הפריסה. לדוגמה, us-central1.
    • DEPLOYMENT_GROUP_ID: המזהה של קבוצת הפריסה שרוצים ליצור.
    • DEPLOYMENT_UNIT_ID_1: המזהה של יחידת הפריסה שרוצים להוסיף לקבוצת הפריסה.
    • EXISTING_DEPLOYMENT_ID: המזהה של פריסה קיימת שמשמש ליצירת יחידת פריסה של קבוצת הפריסה.
    • DEPLOYMENT_UNIT_ID_2: המזהה של יחידת פריסה שנייה שרוצים להוסיף לקבוצת הפריסה. אפשר להוסיף הגדרות לכל יחידת פריסה שרוצים להוסיף לקבוצת הפריסה.
    • אופציונלי: DEPENDENT_UNIT_ID: המזהה של יחידת הפריסה שמשמשת כתלות. צריך להקצות את התלות הזו לפני היחידה המוגדרת ולבטל את ההקצאה שלה אחרי היחידה המוגדרת.
  2. שליחת בקשת GET לנקודת הקצה deploymentGroup:

    curl \
        -X GET \
        -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
        -H "Content-Type: application/json" \
        "https://config.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/deploymentGroups/DEPLOYMENT_GROUP_ID"
    

    מחליפים את מה שכתוב בשדות הבאים:

    • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
    • LOCATION: Google Cloud המיקום של קבוצת הפריסה. לדוגמה, us-central1.
    • DEPLOYMENT_GROUP_ID: המזהה של קבוצת הפריסה החדשה.

הקצאת קבוצת פריסה

כדי להחיל את הפריסות שמפנות לקבוצת פריסה, צריך להקצות את הקבוצה. הקצאת ההרשאות חלה על הפריסות בסדר שמוגדר במבנה deploymentUnits. אם אתם צריכים ליצור או לעדכן פריסה במהלך התהליך הזה, אתם יכולים לספק את ההגדרה שלה באובייקט deploymentSpecs של בקשת ההקצאה.

כדי להקצות קבוצת Deployment (פריסה), משתמשים ב-API בארכיטקטורת REST באופן הבא:

  1. שליחת בקשת POST לנקודת הקצה provision:

    curl \
        -X POST \
        -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
        -H "Content-Type: application/json" \
        "https://config.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/deploymentGroups/DEPLOYMENT_GROUP_ID:provision" \
        --data '{
          "deploymentSpecs": {
            "DEPLOYMENT_UNIT_ID_2": {
                "deploymentId": "DEPLOYMENT_ID_2",
                "deployment": {
                    "terraformBlueprint": {
                        "gitSource": {
                            "directory": "examples/simple_project_with_regional_network",
                            "ref": "v6.0.1",
                            "repo": "https://github.com/terraform-google-modules/terraform-google-network"
                        },
                        "inputValues": {
                            "network_name": {
                                "inputValue": "test-network"
                            }
                        },
                        "externalValues": {
                            "project_id": {
                                "deploymentSource": {
                                    "deployment": "projects/PROJECT_ID/locations/LOCATION/deployments/EXISTING_DEPLOYMENT_ID",
                                    "outputName": "project_id"
                                }
                            }
                        }
                    },
                    "serviceAccount": "SERVICE_ACCOUNT",
                    "importExistingResources": true
                }
            }
          }
        }'
    

    מחליפים את מה שכתוב בשדות הבאים:

    • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
    • LOCATION: Google Cloud המיקום של קבוצת הפריסה. לדוגמה, us-central1.
    • DEPLOYMENT_GROUP_ID: המזהה של קבוצת הפריסה החדשה.
    • DEPLOYMENT_UNIT_ID_2: המזהה של יחידת פריסה שנייה שרוצים להוסיף לקבוצת הפריסה. אפשר להוסיף הגדרות לכל יחידת פריסה שרוצים להוסיף לקבוצת הפריסה.
    • DEPLOYMENT_ID_2: מזהה המחרוזת של יחידת הפריסה השנייה שרוצים להוסיף לקבוצת הפריסה.
    • EXISTING_DEPLOYMENT_ID: המזהה של פריסה קיימת.
    • SERVICE_ACCOUNT: מזהה המחרוזת של חשבון השירות שבו אתם משתמשים כדי להקצות את קבוצת הפריסה.
  2. כדי לשלוח בקשת GET לנקודת הקצה של הפעולות, משתמשים ב-API בארכיטקטורת REST באופן הבא:

     curl \
         -X GET \
         -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
         -H "Content-Type: application/json" \
         "https://config.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID"
    

    מחליפים את מה שכתוב בשדות הבאים:

    • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
    • LOCATION: Google Cloud המיקום של קבוצת הפריסה. לדוגמה, us-central1.
    • OPERATION_ID: מזהה הפעולה שרוצים לשלוח לגביה שאילתה. לדוגמה, operation-1000000000000-64d67ecd2868c-caa044f9-6b48677e.
  3. ‫Infra Manager משתמש בפעולה ממושכת (LRO) כדי להציג את התקדמות ההקצאה. תגובה שמתקבלת ללא שגיאות מציינת שהקצאת ההרשאות הושלמה:

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/operations/OP_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.config.v1.OperationMetadata",
        "createTime": "2026-02-24T01:27:57.045161236Z",
        "target": "projects/PROJECT_ID/locations/LOCATION/deploymentGroups/DEPLOYMENT_GROUP_ID",
        "verb": "update",
        "requestedCancellation": false,
        "apiVersion": "v1",
        "provisionDeploymentGroupMetadata": {
          "step": "PROVISIONING_DEPLOYMENT_UNITS",
          "deploymentUnitProgresses": [
            {
              "unitId": "DEPLOYMENT_UNIT_ID_1",
              "deployment": "projects/PROJECT_ID/locations/LOCATION/deployments/EXISTING_DEPLOYMENT_ID",
              "state": "APPLYING_DEPLOYMENT",
              "intent": "UPDATE_DEPLOYMENT",
              "deploymentOperationSummary": {
                "build": "56c739c7-cf42-457c-a889-0e0c139cf7b3",
                "logs": "gs://path/to/log",
                "content": "gs://path/to/content",
                "artifacts": "gs://path/to/artifacts"
              }
            },
            {
              "unitId": "DEPLOYMENT_UNIT_ID_2",
              "state": "QUEUED",
              "intent": "CREATE_DEPLOYMENT"
            }
          ]
        }
      }
    }
    

    כאשר:

    • OP_ID: מזהה הפעולה. נוצר על ידי Infra Manager.
    • EXISTING_DEPLOYMENT_ID: המזהה של הפריסה ש-Infra Manager יקצה לפני DEPLOYMENT_UNIT_ID_1.

רשימת עדכונים של קבוצת פריסה

‫Infra Manager יוצר גרסה של קבוצת פריסה אחרי שפעולה של provision או deprovision מסתיימת.

כדי להציג רשימה של עדכונים של קבוצת פריסה, משתמשים ב-API בארכיטקטורת REST באופן הבא:

  1. שליחת בקשת GET לנקודת הקצה revisions:

    curl \
        -X GET \
        -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
        -H "Content-Type: application/json" \
        "https://config.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/deploymentGroups/DEPLOYMENT_GROUP_ID/revisions"
    

    מחליפים את מה שכתוב בשדות הבאים:

    • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
    • LOCATION: Google Cloud המיקום של קבוצת הפריסה. לדוגמה, us-central1.
    • DEPLOYMENT_GROUP_ID: המזהה של קבוצת הפריסה שרוצים להציג את הגרסאות שלה.

עדכון של קבוצת פריסה

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

כדי לעדכן קבוצת פריסה, משתמשים ב-API בארכיטקטורת REST באופן הבא:

  1. שליחת בקשת PATCH לנקודת הקצה deploymentGroups:

    curl \
        -X PATCH \
        -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
        -H "Content-Type: application/json" \
        "https://config.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/deploymentGroups/DEPLOYMENT_GROUP_ID" \
        --data '{
          "deploymentUnits": [
            {
                "id": "DEPLOYMENT_UNIT_ID_3"
            }
          ]
        }'
    

    מחליפים את מה שכתוב בשדות הבאים:

    • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
    • LOCATION: Google Cloud המיקום של קבוצת הפריסה. לדוגמה, us-central1.
    • DEPLOYMENT_GROUP_ID: המזהה של קבוצת הפריסה שרוצים לעדכן.
    • DEPLOYMENT_UNIT_ID_3: המזהה של הפריסה שרוצים לעדכן.
  2. אופציונלי: הקצאת משאבים לקבוצת הפריסה המעודכנת. שליחת בקשת POST לנקודת הקצה provision:

    curl \
        -X POST \
        -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
        -H "Content-Type: application/json" \
        "https://config.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/deploymentGroups/DEPLOYMENT_GROUP_ID:provision" \
        --data '{
          "deploymentSpecs": {
            "DEPLOYMENT_UNIT_ID_3": {
                "deploymentId": "EXISTING_DEPLOYMENT_ID",
                "deployment": {
                    "terraformBlueprint": {
                        "gitSource": {
                            "directory": "examples/simple_project_with_regional_network",
                            "ref": "v6.0.1",
                            "repo": "https://github.com/terraform-google-modules/terraform-google-network"
                        },
                        "inputValues": {
                            "network_name": {
                                "inputValue": "test-network"
                            },
                            "project_id": {
                              "inputValue": "PROJECT_ID"
                            }
                        }
                    },
                    "serviceAccount": "SERVICE_ACCOUNT",
                    "importExistingResources": true
                }
            }
          }
        }'
    

    מחליפים את מה שכתוב בשדות הבאים:

    • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
    • LOCATION: Google Cloud המיקום של קבוצת הפריסה. לדוגמה, us-central1.
    • DEPLOYMENT_GROUP_ID: המזהה של קבוצת הפריסה שרוצים לעדכן.
    • DEPLOYMENT_UNIT_ID_3: המזהה של יחידת פריסה של צד שלישי שרוצים להוסיף לקבוצת הפריסה.
    • EXISTING_DEPLOYMENT_ID: המזהה של פריסה קיימת.
    • SERVICE_ACCOUNT: מזהה המחרוזת של חשבון השירות שבו אתם משתמשים כדי לעדכן את קבוצת הפריסה.

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

    אם מסירים פריסה מההגדרה של קבוצת הפריסה ואז מקצים משאבים, הפריסה שהוסרה תימחק יחד עם המשאבים שלה.

  3. תגובה חיובית מציינת שההקצאה הושלמה.

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/operations/OP_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.config.v1.OperationMetadata",
        "createTime": "2026-02-26T20:03:26.580085899Z",
        "target": "projects/PROJECT_ID/locations/LOCATION/deploymentGroups/DEPLOYMENT_GROUP_ID",
        "verb": "update",
        "requestedCancellation": false,
        "apiVersion": "v1",
        "provisionDeploymentGroupMetadata": {
          "step": "PROVISIONING_DEPLOYMENT_UNITS",
          "deploymentUnitProgresses": [
            {
              "unitId": "revisions/REVISION_ID/deploymentUnits/DEPLOYMENT_UNIT_ID_2",
              "deployment": "projects/PROJECT_ID/locations/LOCATION/deployments/DEPLOYMENT_ID_2",
              "state": "DELETING_DEPLOYMENT",
              "intent": "CLEAN_UP",
              "deploymentOperationSummary": {
                "deploymentStep": "VALIDATING_REPOSITORY"
              }
            },
            {
              "unitId": "revisions/REVISION_ID/deploymentUnits/DEPLOYMENT_UNIT_ID_1",
              "deployment": "projects/PROJECT_ID/locations/LOCATION/deployments/NEW_DEPLOYMENT_NAME",
              "state": "QUEUED",
              "intent": "CLEAN_UP"
            },
            {
              "unitId": "DEPLOYMENT_UNIT_ID_3",
              "state": "QUEUED",
              "intent": "RECREATE_DEPLOYMENT"
            }
          ]
        }
      },
      "done": false
    }
    

    כאשר:

    • OP_ID: מייצג את מזהה הפעולה. נוצר על ידי Infra Manager.
    • REVISION_ID: מייצג את מזהה הגרסה. נוצר על ידי Infra Manager.

ביטול הקצאת הרשאות לקבוצת פריסה

ביטול ההקצאה של קבוצת פריסה כדי למחוק את כל הפריסות שהיא מפנה אליהן, וכל פריסה שהייתה חלק מהעדכון האחרון המוצלח (אבל נמחקה מאז).

כדי לבטל את ההקצאה של קבוצת פריסה, משתמשים ב-API בארכיטקטורת REST באופן הבא:

  1. שליחת בקשת POST לנקודת הקצה deprovision:

    curl \
        -X POST \
        -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
        -H "Content-Type: application/json" \
        "https://config.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/deploymentGroups/DEPLOYMENT_GROUP_ID:deprovision" \
        --data '{
          "deletePolicy": "DELETE",
          "force": true
        }'
    

    מחליפים את מה שכתוב בשדות הבאים:

    • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
    • LOCATION: Google Cloud המיקום של קבוצת הפריסה. לדוגמה, us-central1.
    • DEPLOYMENT_GROUP_ID: המזהה של קבוצת הפריסה שרוצים לבטל את ההקצאה שלה.
  2. תגובה שמעידה על הצלחה מציינת שהסרת ההקצאה הושלמה.

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/operations/OP_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.config.v1.OperationMetadata",
        "createTime": "2026-02-26T20:12:46.929574561Z",
        "endTime": "2026-02-26T20:14:04.390333218Z",
        "target": "projects/PROJECT_ID/locations/LOCATION/deploymentGroups/DEPLOYMENT_GROUP_ID",
        "verb": "update",
        "requestedCancellation": false,
        "apiVersion": "v1",
        "provisionDeploymentGroupMetadata": {
          "step": "SUCCEEDED",
          "deploymentUnitProgresses": [
            {
              "unitId": "DEPLOYMENT_UNIT_ID",
              "deployment": "projects/PROJECT_ID/locations/LOCATION/deployments/DEPLOYMENT_NAME_3",
              "state": "SUCCEEDED",
              "deploymentOperationSummary": {
                "deploymentStep": "SUCCEEDED"
              }
            }
          ]
        }
      },
      "done": true,
      "response": {
        "@type": "type.googleapis.com/google.cloud.config.v1.DeploymentGroup",
        "name": "projects/PROJECT_ID/locations/LOCATION/deploymentGroups/DEPLOYMENT_GROUP_ID",
        "createTime": "2026-02-24T01:21:14.001716666Z",
        "updateTime": "2026-02-26T20:12:46.931142650Z",
        "state": "ACTIVE",
        "deploymentUnits": [
          {
            "id": "DEPLOYMENT_UNIT_ID_3"
          }
        ],
        "provisioningState": "DEPROVISIONED"
      }
    }
    

מחיקת קבוצת פריסה

אחרי שמבטלים את ההקצאה של קבוצת פריסה, המטא-נתונים שלה נשארים. כדי להסיר את המטא-נתונים, צריך למחוק את קבוצת הפריסה.

כדי למחוק קבוצת פריסה, משתמשים ב-API בארכיטקטורת REST באופן הבא:

  1. שליחת בקשת DELETE לנקודת הקצה deploymentGroups. אם קיימות גרסאות, מגדירים את force לערך true.

    curl \
        -X DELETE \
        -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
        -H "Content-Type: application/json" \
        "https://config.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/deploymentGroups/DEPLOYMENT_GROUP_ID" \
        --data '{
          "force": true
        }'
    

    מחליפים את מה שכתוב בשדות הבאים:

    • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
    • LOCATION: Google Cloud המיקום של קבוצת הפריסה. לדוגמה, us-central1.
    • DEPLOYMENT_GROUP_ID: המזהה של קבוצת הפריסה שרוצים למחוק.

המאמרים הבאים