Compute Engineのインスタンス追加はブラウザ上でポチポチやればすぐにできるんですが、
念のためCLIからもできるようにしておきたいので試してみました。
前提条件
- Cloud SDKが導入済み
プロジェクトの作成
GCEのインスタンスを追加する前に、器になるプロジェクトを作成します。
プロジェクトの作成はブラウザ上で「プロジェクトの作成…」より行います。
プロジェクトの作成を行うと
プロジェクトID("geometric-sled-******"のような形式)が発行されるので
メモっておきましょう。
ローカルでプロジェクトを初期化
gcloud init PROJECT_ID
でプロジェクトの初期化を行います
$ gcloud init geometric-sled-******
PROJECT_IDと同名のプロジェクトディレクトリが作成されるので、
そこで gcloud config list
を実行すると、
先ほど設定したPROJECT_IDが project
に設定されているのがわかります。
$ cd geometric-sled-******
$ gcloud config list
[core]
account = [アカウント]
disable_usage_reporting = True
project = geometric-sled-******
Cloud Source Repository
ここでちょっと脱線して、Cloud Source Repositoryの紹介。
Developers Consoleから直接編集可能なgitリポジトリで、
GCP専用のGitHubのようなものです。
Cloud Source Repositories Quickstart - Cloud Source Repositories — Google Cloud Platform
先ほど作成したプロジェクトディレクトリの下に default
というディレクトリがあり、
すでにgitリポジトリが初期化され、リモートのoriginが追加された状態になっています。
適当にファイルを作ってpushしてみます。
$ cd default
$ pwd
/Users/user/gcp/geometric-sled-******/default
$ echo "Readme" >> README.md
$ git add
$ git add README.md
$ git commit -m "add readme"
$ git push origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 216 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: Storing objects: 100% (3/3), done.
remote: Processing commits: 100% (1/1), done.
To https://source.developers.google.com/p/geometric-sled-******/r/default
* [new branch] master -> master
次にDeveloper Consoleの "My Project" のページから、
左ペインの「ソースコード>閲覧」を選択すると、先ほどpushしたファイルが追加されているのがわかります。
このファイルは、もちろんブラウザ上から編集することも可能です。
インスタンスの作成
その前に
利用可能なゾーン、イメージ、インスタンスタイプ等を調べておきたいので、
以下コマンドを使います。
$ gcloud compute zones list
NAME REGION STATUS NEXT_MAINTENANCE TURNDOWN_DATE
asia-east1-b asia-east1 UP
asia-east1-a asia-east1 UP
asia-east1-c asia-east1 UP
...
$ gcloud compute images list
NAME PROJECT ALIAS DEPRECATED STATUS
centos-6-v20150915 centos-cloud centos-6 READY
centos-7-v20150915 centos-cloud centos-7 READY
...
$ gcloud compute machine-types list
NAME ZONE CPUS MEMORY_GB DEPRECATED
...
f1-micro asia-east1-c 1 0.60
g1-small asia-east1-c 1 1.70
n1-highcpu-16 asia-east1-c 16 14.40
n1-highcpu-2 asia-east1-c 2 1.80
n1-highcpu-32 asia-east1-c 32 28.80
...
作成
今回は asia-east1
に centos-7
のイメージを使って
g1-small
のインスタンスを my-instance
という名前で立ててみます。
先ほど作成したプロジェクトのディレクトリ(geometric-sled-******)で、
以下のコマンドを実行します。
$ gcloud compute instances create my-instance \
--zone asia-east1-c \
--image centos-7 \
--machine-type g1-small
Created [https://www.googleapis.com/compute/v1/projects/geometric-sled-******/zones/asia-east1-c/instances/my-instance].
NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS
my-instance asia-east1-c g1-small 10.240.*.* 130.*.*.* RUNNING
完了すると、作成されたインスタンスの情報が表示されます。
ログインして確認
接続の前に、都度zoneを指定するのが面倒なので gcloud config set
を使ってセットしておきます。
$ gcloud config set compute/zone asia-east1-c
gcloud auth
で認証済みのユーザ(ここでは仮に testuser
とします)でログインします。
$ gcloud compute ssh testuser@my-instance
Updated [https://www.googleapis.com/compute/v1/projects/geometric-sled-******].
Warning: Permanently added '130.*.*.*' (RSA) to the list of known hosts.
Warning: Permanently added '130.*.*.*' (RSA) to the list of known hosts.
[testuser@my-instance ~]$
無事ログインできることが確認できます。
所感
若干端折られている部分はあるものの、
公式ドキュメントを軽く読めば特に詰まることもなくインスタンスの作成が可能でした。
気軽に使うときはDeveloper Consoleからの操作で事足りるものの、
数が多くなってくるとやはりCLI使えるのが強いんじゃないかと思います。