טיפים לשימוש ב-gcloud compute

בדף הזה מופיעים טיפים שיכולים להיות שימושיים כשמשתמשים בכלי שורת הפקודה gcloudלניהול משאבי Compute Engine. כדי לראות רשימה מלאה של כל הדגלים והפקודות הזמינים של gcloud compute, אפשר להשתמש בעזרה המובנית של הפקודה (--help), במסמכי העזר שפורסמו או במסמכי הליבה של gcloud.

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

  • אם עדיין לא עשיתם את זה, תצטרכו להגדיר אימות. אימות הוא תהליך שבו מאמתים את הזהות שלכם כדי לקבל גישה לממשקי API ולשירותים של Google Cloud . כדי להריץ קוד או דוגמאות מסביבת פיתוח מקומית, אפשר לבצע אימות ל-Compute Engine באחת מהדרכים הבאות:
    1. התקינו את ה-CLI של Google Cloud. אחר כך, אתחלו את ה-CLI של Google Cloud באמצעות הפקודה הבאה:

      gcloud init

      אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

    2. הגדרת אזור ותחום כברירת מחדל

אחזור מידע על משאבים

אפשר לאחזר מידע על משאבי Compute Engine בשתי דרכים: באמצעות הפקודה list כדי לקבל רשימה של משאבים, ובאמצעות הפקודה describe כדי לקבל פרטים על משאב ספציפי.

אחזור משאבים באמצעות פקודות list

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

סינון שמות באמצעות ביטויים רגולריים
אפשר להשתמש בתחביר של RE2 כדי להתאים שמות של משאבים (לדוגמה, שמות של מופעים או דיסקים). אפשר לעיין בפקודה gcloud compute instances list.
דגלים של פקודות
--limit

המספר המקסימלי של תוצאות שיוחזרו. הדגל הזה שימושי במיוחד כשמשתמשים בו עם הדגל --sort-by, כמו שמתואר בקטע אחזור משאבים באמצעות פקודות describe.

--sort-by SORT_BY

שדה למיון, אם רלוונטי. כדי לבצע מיון בסדר יורד, מוסיפים טילדה (~) לפני הערך. הדגל הזה משתלב עם דגלים אחרים,בסדר הזה: --flatten, ‏ --sort-by, ‏ --filter ו---limit.

אחזור משאבים באמצעות פקודות describe

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

gcloud compute images list
NAME                                PROJECT        FAMILY     DEPRECATED STATUS
...
centos-7-v20170620                  centos-cloud   centos-7              READY
...
debian-9-stretch-v20170619          debian-cloud   debian-9              READY
...
gcloud compute images describe debian-9-stretch-v20170619 --project debian-cloud

פורמט הפלט שמוגדר כברירת מחדל בפקודות describe הוא YAML, אבל אפשר להשתמש בדגל --format כדי לבחור בין פורמטים של פלט JSON,‏ YAML וטקסט. פלט בפורמט JSON יכול להיות שימושי אם אתם מנתחים את הפלט, בעוד שבפלט בפורמט טקסט כל מאפיין מופיע בשורה נפרדת.

gcloud compute regions describe us-central1 --format json
{
  "creationTimestamp": "2013-09-06T10:36:54.847-07:00",
  "description": "us-central1",
  "id": "6837843067389011605",
  "kind": "compute#region",
  "name": "us-central1",
  ...
  "status": "UP",
  "zones": [
    "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a",
    "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-b",
    "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f"
  ]
}

דוגמאות

דוגמאות לפקודות list

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

gcloud compute instances list
NAME               ZONE          MACHINE_TYPE  INTERNAL_IP    EXTERNAL_IP     STATUS
example-instance   asia-east1-b  e2-standard-2 10.240.95.199  107.167.182.44  RUNNING
example-instance2  us-central1-a e2-standard-2 10.240.173.254 23.251.148.121  RUNNING
test-instance      us-central1-a e2-standard-2 10.240.118.207 23.251.153.172  RUNNING

אפשר לסנן תוצאות של פקודות list באמצעות ביטויים רגולריים על ידי הוספת הדגל --filter עם האופרטור key ~ value. לדוגמה, אפשר לסנן את רשימת המכונות כך שיכללו רק את המכונות שהשם שלהן מכיל את המילה test:

gcloud compute instances list --filter="name ~ .*test.*"
NAME           ZONE          MACHINE_TYPE  INTERNAL_IP    EXTERNAL_IP     STATUS
test-instance  us-central1-a e2-standard-2 10.240.118.207 23.251.153.172  RUNNING

כדי להחזיר רשימה של פעולות באזור עם status של DONE בלי httpStatus של 200, צריך להחיל מסנן zone על פקודה operations list ואז grep את התוצאות:

gcloud compute operations list --filter="zone:(us-central1-a)" | grep DONE | grep -v 200
NAME                                                    HTTP_STATUS TYPE   TARGET                               STATUS
operation-1397752585735-4f73fa25b4b58-f0920fd5-254d709f 400         delete us-central1-a/disks/example-instance DONE
operation-1398357613036-4f7cc80cb41e0-765bcba6-34bbd040 409         insert us-central1-a/instances/i-1          DONE
operation-1398615481237-4f8088aefbe08-cc300dfa-2ce113cf 409         insert us-central1-a/instances/i-2          DONE

כדי לקבל רשימה של דיסקים ב-us-central1-a, ממוינים בסדר יורד לפי שם (--sort-by ~NAME), משתמשים בפקודה disks list:

gcloud compute disks list --sort-by ~NAME --filter="zone:(us-central1-a)"

בתרחישים מסוימים, יכול להיות שתרצו לקבל את קישור ה-URI המלא למשאב, למשל בבקשות שבהן אתם מעבירים את הפלט מפקודת listלפקודה או לאפליקציה אחרת שמקבלת רשימה של קישורי משאבים. כדי להציג קישורי משאבים מלאים של URI, משתמשים בדגל --uri עם הפקודה list.

gcloud compute instances list --uri --filter="name~'^example-.*'"
https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances/example-instance1
https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances/example-instance2

כדי להשתמש בפלט הפקודה הקודמת list בתוך פקודה שמוחקת מופעים, משתמשים בפקודה:

gcloud compute instances delete $(gcloud compute instances list --uri --filter="name~'^example-.*'")

דוגמאות לפקודות describe

כדי לקבל פרטים על מופע אחד בלבד, מציינים את המופע, כולל האזור. לדוגמה, כדי להציג מידע על המופע בשם example-instance באזור asia-east1-b, אפשר להשתמש בפקודה instances describe:

gcloud compute instances describe example-instance --zone asia-east1-b

כברירת מחדל, הפלט שמתקבל הוא YAML. כדי לשנות את הפלט ל-JSON או לטקסט (מאפיין אחד בכל שורה), משתמשים בדגל --format. לדוגמה, כדי לקבל פלט טקסט לאותו מופע, משתמשים בפונקציה:

gcloud compute instances describe example-instance --zone asia-east1-b --format text
---
canIpForward:                                False
creationTimestamp:                           2014-04-19T06:43:04.087-07:00
disks[0].autoDelete:                         False
disks[0].boot:                               True
disks[0].deviceName:                         example-instance
...

כדי לקבל פרטים על פעולה ספציפית, משתמשים בפקודה operations list כדי למצוא את ה-URI המוגדר במלואו של הפעולה:

gcloud compute operations list --filter="zone:(us-central1-a)"
NAME                                                    TYPE   TARGET                                      HTTP_STATUS STATUS
operation-1406155165815-4fee4032850d9-7b78077c-a170c5c0 delete us-central1-a/instances/example-instance    200         DONE
operation-1406155180632-4fee4040a67c1-bf581ed8-ab5af2b8 delete us-central1-a/instances/example-instance-2  200         DONE
...

אחר כך משתמשים ב-URI בפקודה operations describe:

gcloud compute operations describe \
operation-1406155165815-4fee4032850d9-7b78077c-a170c5c0 --zone us-central1-a
endTime: '2014-07-23T15:40:02.463-07:00'
id: '31755455923038965'
insertTime: '2014-07-23T15:39:25.910-07:00'
kind: compute#operation
name: operation-1406155165815-4fee4032850d9-7b78077c-a170c5c0
operationType: delete
progress: 100
...

הפקודה הבאה מקבלת את הגדרות המופע בפורמט JSON ‏ (--format json).

gcloud compute instances describe example-instance \
    --zone us-central1-a
    --format json
{
   ...
   "name": "example-instance",
   "networkInterfaces": [
    {
      "accessConfigs": [
        {
          "kind": "compute#accessConfig",
          "name": "external-nat",
          "natIP": "107.167.187.66",
          "type": "ONE_TO_ONE_NAT"
        }
      ],
      "name": "nic0",
      "network": "https://www.googleapis.com/compute/v1/projects/myproject/global/networks/default",
      "networkIP": "10.240.111.51"
    }
   ],
   ...
   "status": "RUNNING"
   ...
}

בדיקה של המשתמש שאליו יש לכם הרשאה

כדי לגלות לאיזה חשבון יש לכם הרשאה, משתמשים בפקודה הבאה:

gcloud auth list

ביטול טוקן רענון

כדי לבטל את פרטי הכניסה של חשבון במכונה שבה אתם משתמשים ב-Google Cloud CLI, משתמשים בפקודה:

gcloud auth revoke

תצטרכו לבצע אימות מחדש באמצעות gcloud init.

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

  1. מתחברים לדף חשבון Google.
  2. לוחצים על אבטחה ואז על הצגת הכול בקטע הרשאות לחשבון.
  3. בוחרים באפשרות Google Cloud SDK ולוחצים על ביטול הגישה.

הפעלה מחדש של מכונה

כדי לאפס מכונה בשם example-instance באזור us-central1-a, משתמשים בפקודה instances reset:

gcloud compute instances reset example-instance --zone us-central1-a

במאמר איפוס מופע מוסברות ההשלכות של איפוס.