1 of 18

GCPUG Shonan

vol.23 gcloud dojo

https://gcpug.jp

2 of 18

gcloudとは?

2

  • Cloud SDK
    • GCPを操作するためのコマンドラインツールの一つ
    • その他、bq, gsutilなど色々ある
    • gcloud components の中の一つ
  • GCPを操作するためには以下の3つの方法がある
    • ブラウザのDeveloper Consoleで操作
    • 各種Web APIで実行
    • Cloud SDKでコマンド実行

https://gcpug.jp

3 of 18

なぜgcloudか?

  • コマンドでGCPを操作できる(履歴がわかる)
  • 画面は直感的にはわかりやすいけど再現が難しい
  • APIだとプログラム寄り過ぎて覚えられない

3

https://gcpug.jp

4 of 18

今日やること

  • gcloudコマンドで何が出来るのかを確認する
  • アカウント切り替えたりするときの設定
  • GCEを操作してみる
  • BigQueryを操作してみる
  • ※各サービスの細かい機能(オプション)については詳しく触れません。

4

https://gcpug.jp

5 of 18

今日はCloud Shellでやります

https://console.cloud.google.com/

Webコンソールからプロジェクト選んでない状態でCloud Shell起動!

今日はとりあえず全てのコマンドで --help から入ります。

5

https://gcpug.jp

6 of 18

補完

# Cloud shell は補完が設定されてるのでgcloud[スペース]Tabキーを押すと候補が出てきます

# これを全部説明していくとGCPのサービス全部説明になっちゃうので割愛

gcloud

alpha config deployment-manager firebase logging pubsub topic

app container dns help meta service-management version

auth dataflow docker iam ml services

beta dataproc domains info ml-engine source

components datastore endpoints init organizations spanner

compute debug feedback kms projects sql

# とりあえず gcloud [サブコマンド] [アクション] [オプション] みたいな感じのコマンドの形式になってます(例外もアリ)

# 各コマンドよくわからなかったら --help を付ければ大体わかります。

# Webの画面で指定できるけど、コマンドだとalpha/betaの時にしか指定できないオプションなどもあるので注意。

# ちょっとどんなコマンドがあるのか触ってみましょう。

# 補完で出てくるコマンド色々探るだけでもOKです。

6

https://gcpug.jp

7 of 18

基本

# グローバルオプションというのがあって、全てのコマンドで有効なオプションの紹介

gcloud help

# --account 認証済みアカウントを指定する。

# --configurations 設定プロファイルを指定する。(後述)

# --project プロジェクトを指定する。

# --format コマンドの出力フォーマットを指定する。

# 後から出てくるlist系のコマンドを使うときに指定してみて下さい。

# config, csv, default, diff, disable, flattened, get, json, list, multi, none, object, table, text, value, yaml が選べます。

# --help 各種コマンドのヘルプです。けっこう充実してるのでまずコレを見るといいでしょう。

# --quiet, -q 出力なしにする。

# --verbosity コマンドの出力レベルを指定する。

# debug, info, warning, errorを指定可能です。

# ヘルプの中で core/xxxx みたいに書いてあるオプションは、gcloud config set xxxx でデフォルト値を設定しておくことが可能です。

7

https://gcpug.jp

8 of 18

コンポーネント

8

# コンポーネントの確認

# ここでgcloudコマンド以外のコマンドラインツールを確認できます

gcloud version

gcloud components list # ← こっちだと詳細なやつ

# もしbq, gsutilコマンドが入ってなかったらインストールしましょう(流石に入ってると思う)

gcloud components install bq gsutil

# GAEのコマンドもここから入れられます。

gcloud components install app-engine-go

# beta, alpha も大体入れといた方が良いことが多い。

gcloud components install beta alpha

https://gcpug.jp

9 of 18

設定

9

# Cloud Shellではたぶんほぼ不要なんだけど、ローカルでコマンド使うときに便利な設定について。

# 認証やら設定のセットをプロファイルとしてひとまとめに出来ます。

gcloud config configurations list

gcloud config configurations create xxxxxx

# 認証を切り替えるだけだったらauthでいいけど、ほとんどの場合デフォルトのプロジェクトも変わると思うのでこっちで切り替えた方がいいです。

# 必要なアカウントの認証を済ませておく

gcloud auth login # 別のアカウントで認証

gcloud config set account # ↑ のアカウント

gcloud config set project $ANOTHER_PROJECT_ID # 別アカウントのプロジェクト

gcloud config set zone us-central1-c

gcloud config configurations describe default

gcloud config configurations describe xxxxxx

https://gcpug.jp

10 of 18

プロジェクトを作成する

10

# GCPプロジェクトの作成からコマンドラインで出来ます。知ってた?

# まずは確認…。

gcloud projects list

# 作成

gcloud projects create --name gcpug-shonan-vol23 $PROJECT_ID # ← PROJECT_IDだけ自分で適当にふってください。(gcpug-shonanはすでに予約語として使われてるのであしからず)

# 作成できたらデフォルトのプロジェクトとして設定しときましょ。

gcloud config set project $PROJECT_ID

# 作成しただけだと課金アカウントが紐付いていないので紐付けます。Billingコマンドは現時点だとBetaです。

gcloud beta billing accounts list # ← まずBillingIDを確認。コピって下さい。

gcloud beta billing projects link --billing-id $BILLING_ID $PROJECT_ID

# gcloud projects でプロジェクトのIAM設定とかもできます。

# このセッションの最後にプロジェクト削除します(取っときたい人は最後スキップでOKです)。

# なので思う存分色々作ってみて下さい。

https://gcpug.jp

11 of 18

ネットワークを操作してみる 1

11

# 一応GCEの枠の中ということで。

# LBを作成するのはぶっちゃけ画面でやった方が楽です。

# コマンドで作成すると必要なコンポーネントを全部自分で作成する必要があります。

# とりあえずネットワークから。

# オプションでサブネットの指定とか色々できます。今回はとりあえずデフォルトで。

gcloud compute networks create gcpug-network

# コマンドだと、この後ファイアウォールルールも自分で作らないといけません。注意。

# 作りましょう。

gcloud compute firewall-rules create gcpug-http --direction=INGRESS --network=gcpug-network --action=ALLOW --rules=tcp:80 --source-ranges=0.0.0.0/0 --target-tags=http

https://gcpug.jp

12 of 18

ネットワークを操作してみる 2

12

# 静的IPも当然取れます。

gcloud compute addresses create gcpug-shonan-address --region=us-central1

# 作ったらアドレス確認

gcloud compute addresses describe gcpug-shonan-address --region=us-central1

# LBを作るのはけっこう骨が折れるので今回は割愛。

# 時間があれば試してみましょう。

https://gcpug.jp

13 of 18

GCEを操作してみる 1

13

# GCEインスタンスを立てて見ましょう

# gcloud compute instances create あとオプションという形のコマンドです。

# しかし、ゾーン何を指定すれば良いの?マシンタイプ指定するために何て打てばいいんだっけ?イメージ名は?とか色々な疑問がまず出てくると思います。

# そんなときは各種リソースの確認するためのコマンドがあります。

gcloud compute zones list

gcloud compute machine-types list

gcloud compute images list

# scopesだけは… instances create --help で確認してください。

gcloud compute instances create --help

https://gcpug.jp

14 of 18

GCEを操作してみる 2

14

# 色々オプションがあります

gcloud compute instances create gcpug-shonan-test1 # ← インスタンス名\

--image-family ubuntu-1710 --image-project ubuntu-os-cloud # ← インスタンスイメージ \

--deletion-protection # ← このオプションを付けると削除できなくなります(後で変更可能) \

--machine-type g1-small --zone=asia-east1-c # ← マシンタイプとゾーンの指定 \

--preemptible --scopes cloud-platform # ← スコープとか\

--network gcpug-network --address gcpug-shonan-address

# delete protectionを外したい場合はUpdate

gcloud compute instances update gcpug-shonan-test1 --zone us-central1-c --no-deletion-protection

# 起動中とかのインスタンスのコンソールを見たい場合は tail-serial-port-output。

gcloud compute instances tail-serial-port-output gcpug-shonan-test1

# 消す場合

gcloud compute instances delete gcpug-shonan-test1 --zone us-central1-c

# その他色々遊んでみましょう

https://gcpug.jp

15 of 18

Deep in gcloud

15

# alphaとかbetaとかに色々新機能が積み込まれているのでこちらを覗くと楽しいです。

# ただし、そのうち消えたりするので本番利用の際はご注意を。(消えるとかそういう問題ではない)

# alphaのコマンドは申し込んでないと使えなかったりすることが多いので注意して下さい。

gcloud alpha

gcloud beta

https://gcpug.jp

16 of 18

BigQuery

16

# BigQueryもコマンドがありますよ

# データセットとかテーブルのリスト

bq ls

# データセット作成

bq mk shonan_dataset

# ACLとか確認

bq show shonan_dataset

# コマンドで覚えといて役立ちそうなのはload

# GCSに置いてロードするのが早いらしい

bq load [table] [ソースURL] [スキーマ]

https://gcpug.jp

17 of 18

プロジェクトを削除する

17

# GCPプロジェクト削除します

gcloud projects delete $PROJECT_ID

https://gcpug.jp

18 of 18

まとめ

18

  • コマンドライン覚えるのは大変かも知れないけど、画面でポチポチやるよりも再現性あっていろいろなことに使える。
  • 自動化もしやすい。
  • コマンドがよくわからんって人はまずコンソールで入力してみて、一番下のcommand lineというリンクをクリックして覚えるといいよ。

https://gcpug.jp