Useful commands from Google Cloud Console.
Google Cloud Storage
This will get the list of config like account name, project, etc.
gcloud config list.
johnmarkcausing@cloudshell:~ (esoteric-code-327621)$ gcloud config list
[accessibility]
screen_reader = True[component_manager]
disable_update_check = True
[compute]
gce_metadata_read_timeout_sec = 30
[core]
account = [email protected]
disable_usage_reporting = True
project = esoteric-code-327621
[metrics]
environment = devshell
Get Cloud Storage bucket list
gsutil ls
johnmarkcausing@cloudshell:~ (esoteric-code-327621)$ gsutil ls
gs://storage-lab-cli-johnmark1/
gs://storage-lab-console-johnmark/
List the files and folders from a specific bucket
gsutil ls gs://storage-lab-console/
gsutil ls gs://storage-lab-console/**
Create a Google Cloud Storage bucket (you need to include the GCP region)
gsutil mb --help
gsutil mb -l northamerica-northeast1 gs://storage-lab-cli
gsutil ls
Get current label of a bucket
johnmarkcausing@cloudshell:~ (esoteric-code-327621)$ gsutil label get gs://storage-lab-cli-johnmark1/
{
"extralabel": "extravalue",
"function": "learning"
}
Append bucket label to a file
gsutil label get gs://storage-lab-console/ >bucketlabels.json
cat bucketlabels.json
Upload label from a file to a specific bucket
gsutil label set bucketlabels.json gs://storage-lab-cli/
johnmarkcausing@cloudshell:~ (esoteric-code-327621)$ gsutil label set bucketlabels.json gs://storage-lab-cli-johnmark1/
Setting label configuration on gs://storage-lab-cli-johnmark1/...
Please note that this will not work if there’s a SPACE in a key or a value. Example:
johnmarkcausing@cloudshell:~ (esoteric-code-327621)$ vi bucketlabels.json
johnmarkcausing@cloudshell:~ (esoteric-code-327621)$ cat bucketlabels.json
{
"label1": "value1 and space"
}
johnmarkcausing@cloudshell:~ (esoteric-code-327621)$ gsutil label set bucketlabels.json gs://storage-lab-cli-johnmark1/
Setting label configuration on gs://storage-lab-cli-johnmark1/...
BadRequestException: 400 Invalid argument.
Update or add a specific label (provide key value)
gsutil label ch -l "extralabel:extravalue" gs://storage-lab-cli
Remove specific label (only provide key not key and value)
johnmarkcausing@cloudshell:~ (esoteric-code-327621)$ gsutil label ch -d "extralabel" gs://storage-lab-cli-johnmark1/Setting label configuration on gs://storage-lab-cli-johnmark1/...
Check versioning if ON or OFF and switch on or off
johnmarkcausing@cloudshell:~ (esoteric-code-327621)$ gsutil versioning get gs://storage-lab-cli-johnmark1/
gs://storage-lab-cli-johnmark1: Enabled
gsutil versioning set on gs://storage-lab-cli/
To view the each file version, you can use ls -a
johnmarkcausing@cloudshell:~ (esoteric-code-327621)$ gsutil ls -a gs://storage-lab-cli-johnmark1/
gs://storage-lab-cli-johnmark1/241459384_201090535305767_7879290509765068430_n.png#1633042188220249
gs://storage-lab-cli-johnmark1/Megaworld Application Form 2020 v2 (1).docx#1633042188889776
gs://storage-lab-cli-johnmark1/README-cloudshell.txt#1633042063811387
gs://storage-lab-cli-johnmark1/signature.png#1633042189665592
gs://storage-lab-cli-johnmark1/tests.txt#1633042190324585
gs://storage-lab-cli-johnmark1/test1/
Copy and remove examples:
gsutil cp README-cloudshell.txt gs://storage-lab-cli/
gsutil rm gs://storage-lab-cli/README-cloudshell.txt
gsutil cp gs://storage-lab-console/** gs://storage-lab-cli/
Set a file permission to public (ch = change, -u users:permission)
johnmarkcausing@cloudshell:~ (esoteric-code-327621)$ gsutil acl ch -u AllUsers:R gs://storage-lab-cli-johnmark1/tests.txt
Updated ACL on gs://storage-lab-cli-johnmark1/tests.txt
Compute Engine
Get the current project name
gcloud config get-value project
johnmarkcausing@cloudshell:~ (esoteric-code-327621)$ gcloud config get-value project
Your active configuration is: [cloudshell-31550]
esoteric-code-327621
Check if project is set
johnmarkcausing@cloudshell:~$ gcloud config get-value project
Your active configuration is: [cloudshell-1880]
(unset)
Above shows no project yet is set. You can set project using this:
johnmarkcausing@cloudshell:~$ gcloud config set project esoteric-code-327621
Updated property [core/project].
johnmarkcausing@cloudshell:~ (esoteric-code-327621)$ gcloud config get-value project
Your active configuration is: [cloudshell-1880]
esoteric-code-327621
Check list of GCP instances
johnmarkcausing@cloudshell:~ (esoteric-code-327621)$ gcloud compute instances list
API [compute.googleapis.com] not enabled on project [163234898054].
Would you like to enable and retry (this will take a few minutes)?
(y/N)?
ERROR: (gcloud.compute.instances.list) PERMISSION_DENIED: Compute Engine API has not been used in project 163234898054 before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/compute.googleapis.com/overview?project=163234898054 then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.
johnmarkcausing@cloudshell:~ (esoteric-code-327621)$
The above shows you are not allowed to do that 403. That is because the “compute” api is not yet enabled. You can see the current neabled api services here:
johnmarkcausing@cloudshell:~ (esoteric-code-327621)$ gcloud services list
NAME: bigquery.googleapis.com
TITLE: BigQuery API
NAME: bigquerystorage.googleapis.com
TITLE: BigQuery Storage API
NAME: cloudapis.googleapis.com
TITLE: Google Cloud APIs
NAME: clouddebugger.googleapis.com
TITLE: Cloud Debugger API
NAME: cloudtrace.googleapis.com
TITLE: Cloud Trace API
NAME: datastore.googleapis.com
TITLE: Cloud Datastore API
NAME: logging.googleapis.com
TITLE: Cloud Logging API
NAME: monitoring.googleapis.com
TITLE: Cloud Monitoring API
NAME: servicemanagement.googleapis.com
TITLE: Service Management API
NAME: serviceusage.googleapis.com
TITLE: Service Usage API
NAME: sql-component.googleapis.com
TITLE: Cloud SQL
NAME: storage-api.googleapis.com
TITLE: Google Cloud Storage JSON API
NAME: storage-component.googleapis.com
TITLE: Cloud Storage
NAME: storage.googleapis.com
TITLE: Cloud Storage API
That shows that Compute Engine is not there. You can enable that by Going to GCP site -> Compute Engine and it will enable that API automatically.
Now you can run again the previous command:
johnmarkcausing@cloudshell:~ (esoteric-code-327621)$ gcloud compute instances list
Listed 0 items.
Create a new instances (without providing a zone, it will suggest one for you):
johnmarkcausing@cloudshell:~ (esoteric-code-327621)$ gcloud compute instances create myvm
Did you mean zone [asia-east1-a] for instance: [myvm] (Y/n)? Y
Created [https://www.googleapis.com/compute/v1/projects/esoteric-code-327621/zones/asia-east1-a/instances/myvm].
NAME: myvm
ZONE: asia-east1-a
MACHINE_TYPE: n1-standard-1
PREEMPTIBLE:
INTERNAL_IP: 10.140.0.2
EXTERNAL_IP: 34.81.242.242
STATUS: RUNNING
Delete an instance
johnmarkcausing@cloudshell:~ (esoteric-code-327621)$ gcloud compute instances delete myvm
Did you mean zone [asia-east1-a] for instance: [myvm] (Y/n)? y
The following instances will be deleted. Any attached disks configured
to be auto-deleted will be deleted unless they are attached to any
other instances or the `--keep-disks` flag is given and specifies them
for keeping. Deleting a disk is irreversible and any data on the disk
will be lost.
- [myvm] in [asia-east1-a]
Do you want to continue (Y/n)?
Deleted [https://www.googleapis.com/compute/v1/projects/esoteric-code-327621/zones/asia-east1-a/instances/myvm].
johnmarkcausing@cloudshell:~ (esoteric-code-327621)$ gcloud compute instances list
Listed 0 items.
gcloud syntax
gcloud
Example of :
–available (to view all available services)gcloud services list --available
–project (specify a project)gcloud compute instances list --project esoteric-code-327621
–formatcloud services list --format json
-l (location in gsutil) is the flag
and parameter is: gs://this-is-a-test-bucket-creationgsutil mb -l northamerica-northeast1 gs://this-is-a-test-bucket-creation
Example of label:
labelgsutil label set bucketlabels.json gs://storage-lab-cli-johnmark1/
Above is like:
gsutil
area = label
command = set
parameter1 = bucketlabels.json
parameter2 = gs://storage-lab-cli-johnmark1/
Config Properties
Check current zone for your config
johnmarkcausing@cloudshell:~ (esoteric-code-327621)$ gcloud config get-value zone
Your active configuration is: [cloudshell-755]
ERROR: (gcloud.config.get-value) Section [core] has no property [zone].
johnmarkcausing@cloudshell:~ (esoteric-code-327621)$ gcloud config get-value zone
The above shows there’s no zone set yet.
Set zone in compute Enginegcloud config set compute/zone us-west4-c
johnmarkcausing@cloudshell:~ (esoteric-code-327621)$ gcloud config get-value compute/zone
Your active configuration is: [cloudshell-755]
us-west4-c
Above is where you saw the current compute/zone location but you can also check that using:
(List all configurations)gcloud config configurations list
johnmarkcausing@cloudshell:~ (esoteric-code-327621)$ gcloud config configurations list
NAME: cloudshell-755
IS_ACTIVE: True
ACCOUNT:
PROJECT: esoteric-code-327621
COMPUTE_DEFAULT_ZONE: us-west4-c
COMPUTE_DEFAULT_REGION:
List all properties in a configuration:
gcloud config list
[accessibility]
screen_reader = True
[component_manager]
disable_update_check = True
[compute]
gce_metadata_read_timeout_sec = 30
zone = us-west4-c
[core]
account = [email protected]
disable_usage_reporting = True
project = esoteric-code-327621
[metrics]
environment = devshell
Another example of setting a region in compute engine and get the configurations list:
johnmarkcausing@cloudshell:~ (esoteric-code-327621)$ gcloud config set compute/region us-west4
Updated property [compute/region].
johnmarkcausing@cloudshell:~ (esoteric-code-327621)$ gcloud config configurations list
NAME: cloudshell-755
IS_ACTIVE: True
ACCOUNT:
PROJECT: esoteric-code-327621
COMPUTE_DEFAULT_ZONE: us-west4-c
COMPUTE_DEFAULT_REGION: us-west4
johnmarkcausing@cloudshell:~ (esoteric-code-327621)$
Configuration Analogy (compare to other things)
Action | Directory (example in Linux) | Configuration in GCP | Explanation |
Make New | mkdir newdir | gcloud config configurations create new config | In linux you create a new folder, in GCP you create a config (in Linux, there can be files inside a folder. In GCP, there can be parameters inside the config) |
Switch to | cd newdir | gcloud config configurations activate newconfig | In linux, you switch DIR. In GCP you switch configurations |
List contents | ls | gcloud config list | In Linux, list the files inside the current DIR. In GCP list the configurations from the current active config |
List non-active | ls ~/newdir | gcloud — configuration=newconfig config list or gcloud confi configurations describe newconfig | In linux you list the contents of a different non-current DIR. In GCP, you list the configuration of a different config (newconfig) |
Using filters (–filters).
If you run this to check all machine types, you will get a lot of results: gcloud compute machine-types list
So you can use filters instead like this: gcloud compute machine-types list --filter="NAME:c2-standard
” or gcloud compute machine-types list --filter="NAME:c2-standard-30 ZONE~asia-south"
johnmarkcausing@cloudshell:~ (esoteric-code-327621)$ gcloud compute machine-types list --filter="NAME:c2-standard-30 ZONE~asia-south"
NAME: c2-standard-30
ZONE: asia-southeast1-a
CPUS: 30
MEMORY_GB: 120.00
DEPRECATED:
NAME: c2-standard-30
ZONE: asia-southeast1-b
CPUS: 30
MEMORY_GB: 120.00
DEPRECATED:
NAME: c2-standard-30
ZONE: asia-southeast1-c
CPUS: 30
MEMORY_GB: 120.00
DEPRECATED:
NAME: c2-standard-30
ZONE: asia-south1-b
CPUS: 30
MEMORY_GB: 120.00
DEPRECATED: