今回は Google Cloud SDK を使って CLI から Compute Engine を操作してみる。
使った環境は次の通り。
$ sw_vers ProductName: Mac OS X ProductVersion: 10.14.3 BuildVersion: 18D109 $ gcloud version Google Cloud SDK 238.0.0 bq 2.0.42 core 2019.03.08 gsutil 4.37
Google Cloud SDK をインストールする
最初に Homebrew Cask を使って Google Cloud SDK をインストールしておく。
$ brew cask install google-cloud-sdk
認証する
インストールできたら gcloud auth login
コマンドで Google Cloud Platform の認証をしておく。
$ gcloud auth login
プロジェクトを作る
Google Cloud Platform は何をするにしても、まずはプロジェクトが必要になる。
そこで、続いてはプロジェクトを作る。 このとき名前は GCP 上でユニークになっている必要がある。
$ gcloud projects create gce-example-$(date "+%Y%m%d")
上手く作ることができれば gcloud projects list
コマンドで確認できる。
$ gcloud projects list
PROJECT_ID NAME PROJECT_NUMBER
gce-example-20190318 gce-example-20190318 171069556366
操作対象とするデフォルトのプロジェクトを作成したものに設定しておくと楽ができる。
$ gcloud config set project gce-example-$(date "+%Y%m%d")
Compute Engine API を有効にする
Google Cloud SDK から Compute Engine を操作するには、はじめに API を有効にする必要がある。
そこで。以下の Web ページを開いて Compute Engine API を有効にしよう。
$ open https://console.cloud.google.com/apis/dashboard
Compute Engine API が有効にできると、関連する操作が CLI からできるようになる。
$ gcloud compute instances list
Listed 0 items.
インスタンスを起動する
準備ができたので、試しにインスタンスを起動してみよう。
インスタンスの起動には gcloud compute instances create
コマンドを使う。
--preemptible
オプションを指定しておくと、利用料金がだいぶ安くなる。
その代わり、突然マシンをシャットダウンされることがある点に注意が必要。
$ gcloud compute instances create gce-example \ --preemptible \ --zone asia-northeast1-a
インスタンスを起動するゾーンについては、以下のページを参照して選ぶ。 日本はネットワークのレイテンシが低くなる代わりに若干利用料金がお高い傾向にある。 あと、新しい機能が実装されるのも北米なんかに比べると結構遅い。
Regions and Zones | Compute Engine Documentation | Google Cloud
うまく起動できれば gcloud compute instances list
で起動したインスタンスが表示される。
$ gcloud compute instances list NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS gce-example asia-northeast1-a n1-standard-1 true 10.146.0.3 35.243.118.246 RUNNING
インスタンスに SSH でログインする
起動したインスタンスに SSH でログインするには gcloud compute ssh
コマンドを使う。
最初に使うときは既存の公開鍵ペアがないか調べて、見つからないときは新たに作られる。
$ gcloud compute ssh gce-example
デフォルトでは、以下の場所に公開鍵ペアが用意される。
$ ls ~/.ssh | grep google_compute
google_compute_engine
google_compute_engine.pub
google_compute_known_hosts
上手くいけば、次のようにインスタンスにログインできる。 デフォルトでは Debian の OS イメージが使われるようだ。
$ uname -a Linux preemptible-example 4.9.0-8-amd64 #1 SMP Debian 4.9.144-3.1 (2019-02-19) x86_64 GNU/Linux $ cat /etc/debian_version 9.8
ひとまずインスタンスからログアウトしておく。
$ exit
インスタンスを停止・削除する
使い終わったインスタンスは gcloud compute instances stop
コマンドでシャットダウンできる。
これで Compute Engine に対する課金は停止する。
ただし、インスタンスに紐付いた永続化ストレージや IP アドレスに対する課金は継続する点に注意が必要となる。
$ gcloud compute instances stop gce-example
停止した状態のインスタンスは状態が TERMINATED
と表示される。
$ gcloud compute instances list NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS gce-example asia-northeast1-a n1-standard-1 true 10.146.0.3 35.243.118.246 TERMINATED
もし、完全に課金を停止したいときは紐付いた永続化ディスクや IP アドレスと共にインスタンスを削除する必要がある。
$ gcloud compute instances delete gce-example
マシンタイプを選ぶ
Compute Engine では必要に応じてマシンのスペックを選択できる。
先ほどは n1-standard-1
というマシンがデフォルトで選ばれていた。
選択できるマシンのスペックは、例えば以下の Web ページで確認できる。
Machine Types | Compute Engine Documentation | Google Cloud
それ以外にも gcloud compute machine-types list
で確認できる。
$ gcloud compute machine-types list NAME ZONE CPUS MEMORY_GB DEPRECATED f1-micro us-central1-f 1 0.60 g1-small us-central1-f 1 1.70 n1-highcpu-16 us-central1-f 16 14.40 n1-highcpu-2 us-central1-f 2 1.80 n1-highcpu-32 us-central1-f 32 28.80 ... n1-standard-8 northamerica-northeast1-b 8 30.00 n1-standard-96 northamerica-northeast1-b 96 360.00 n1-ultramem-160 northamerica-northeast1-b 160 3844.00 n1-ultramem-40 northamerica-northeast1-b 40 961.00 n1-ultramem-80 northamerica-northeast1-b 80 1922.00
例として、一番スペックの低い f1-micro
インスタンスを使ってみよう。
このマシンタイプは CPU 1 vCore と RAM 0.6GB というスペックになっている。
$ gcloud compute machine-types list | grep asia-northeast1-a | grep f1-micro f1-micro asia-northeast1-a 1 0.60
起動したいマシンタイプは --machine-type
オプションで選べる。
$ gcloud compute instances create gce-example \ --preemptible \ --zone asia-northeast1-a \ --machine-type f1-micro
起動したインスタンスにログインする。
$ gcloud compute ssh gce-example
マシンのスペックを確認すると、たしかに CPU は 1 コアでメモリは 600MB しかない。
$ cat /proc/cpuinfo | grep processor | wc -l 1 $ cat /proc/meminfo | head -n 1 MemTotal: 606720 kB
動作確認が終わったらインスタンスを削除する。
$ exit
$ gcloud compute instances delete gce-example
OS イメージを選ぶ
続いては Debian 以外の OS イメージのインスタンスを使う方法について。
まず、公開されている OS イメージは gcloud compute images list
で確認できる。
$ gcloud compute images list NAME PROJECT FAMILY DEPRECATED STATUS centos-6-v20190312 centos-cloud centos-6 READY centos-7-v20190312 centos-cloud centos-7 READY coreos-alpha-2079-0-0-v20190312 coreos-cloud coreos-alpha READY coreos-beta-2051-2-0-v20190312 coreos-cloud coreos-beta READY coreos-stable-2023-5-0-v20190312 coreos-cloud coreos-stable READY ... sql-2017-express-windows-2019-dc-v20190225 windows-sql-cloud sql-exp-2017-win-2019 READY sql-2017-standard-windows-2016-dc-v20190108 windows-sql-cloud sql-std-2017-win-2016 READY sql-2017-standard-windows-2019-dc-v20190225 windows-sql-cloud sql-std-2017-win-2019 READY sql-2017-web-windows-2016-dc-v20190108 windows-sql-cloud sql-web-2017-win-2016 READY sql-2017-web-windows-2019-dc-v20190225 windows-sql-cloud sql-web-2017-win-2019 READY
今回は、その中でも Ubuntu 18.04 LTS を起動してみる。
$ gcloud compute images list | grep -i ubuntu
ubuntu-1404-trusty-v20190315 ubuntu-os-cloud ubuntu-1404-lts READY
ubuntu-1604-xenial-v20190306 ubuntu-os-cloud ubuntu-1604-lts READY
ubuntu-1804-bionic-v20190307 ubuntu-os-cloud ubuntu-1804-lts READY
ubuntu-1810-cosmic-v20190307 ubuntu-os-cloud ubuntu-1810 READY
ubuntu-minimal-1604-xenial-v20190307 ubuntu-os-cloud ubuntu-minimal-1604-lts READY
ubuntu-minimal-1804-bionic-v20190307a ubuntu-os-cloud ubuntu-minimal-1804-lts READY
ubuntu-minimal-1810-cosmic-v20190307 ubuntu-os-cloud ubuntu-minimal-1810 READY
イメージ自体は頻繁に更新されるので、以下では --image-project
と --image-family
を指定してインスタンスを起動している。
$ gcloud compute instances create gce-example \ --preemptible \ --zone asia-northeast1-a \ --machine-type f1-micro \ --image-project ubuntu-os-cloud \ --image-family ubuntu-1804-lts
起動したインスタンスにログインする。
$ gcloud compute ssh gce-example
確認すると、ちゃんと Ubuntu 18.04 LTS が起動していることがわかる。
$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=18.04 DISTRIB_CODENAME=bionic DISTRIB_DESCRIPTION="Ubuntu 18.04.2 LTS" $ uname -a Linux gce-example 4.15.0-1028-gcp #29-Ubuntu SMP Thu Feb 7 18:20:08 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
確認が終わったら、忘れずにインスタンスを削除しておく。
$ exit
$ gcloud compute instances delete gce-example
とりあえず、いじょう。
スマートPythonプログラミング: Pythonのより良い書き方を学ぶ
- 作者: もみじあめ
- 発売日: 2016/03/12
- メディア: Kindle版
- この商品を含むブログ (1件) を見る