osechiman’s blog

開発備忘録

Codelabsをやってみた[Creating a Virtual Machine]

Codelabs

Creating a Virtual Machine

1. Overview

Googleのインフラで仮想マシンが実行出来る。
Linuxサーバだけでは無くWindowsサーバも構築出来るって書いてある。

2. Setup and Requirements

プロジェクトのセットアップ。
「CodeLabs」を再利用。

3. Understanding Regions and Zones

リージョンとゾーンの概念説明。
リージョン>ゾーンで理解した。リージョンには複数のゾーンが存在する場合がある。

VMもDiskも好きなゾーンは選べるけど
>to attach a persistent disk to a virtual machine instance, both resources must be in the same zone.

VMに永続Diskをアタッチする場合は同じリージョンでないといけない。
Creating a Persistent DiskのStep.5と一緒

4. Create a new instance

インスタンスを立ち上げ。

指示に従いながらGUIで作成していく。
port:80を空けてトラフィックを受け付ける。

出来上がるのはこんなインスタンス
f:id:osechiman:20171207234932p:plain

sshで接続して、Nginxのinstallして起動確認。

osechiman@gcelab:~$ sudo su -
root@gcelab:~# apt-get update
Get:1 http://packages.cloud.google.com/apt cloud-sdk-stretch InRelease [6,356 B]
・
・
・
Fetched 814 kB in 0s (929 kB/s)                               
Reading package lists... Done

root@gcelab:~# apt-get install nginx -y
Reading package lists... Done
Building dependency tree       
Reading state information... Done
・
・
・
Processing triggers for libc-bin (2.24-11+deb9u1) ...
Processing triggers for sgml-base (1.29) ...

root@gcelab:~# ps auwx | grep nginx
root      2127  0.0  0.0 159504  1620 ?        Ss   14:52   0:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
www-data  2128  0.0  0.0 159840  3240 ?        S    14:52   0:00 nginx: worker process
root      2143  0.0  0.0  12784   964 pts/0    S+   14:53   0:00 grep nginx
5. Create a new instance, with gcloud

gcloudコマンドでインスタンスを作成していく。

[osechiman@cs-6000-devshell-vm-85d16003-8f2b-4b7f-b203-e0b79728da09] $ gcloud compute instances create gcelab2 --zone us-central1-c
Created [https://www.googleapis.com/compute/v1/projects/relaynovel-173804/zones/us-central1-c/instances/gcelab2].
NAME     ZONE           MACHINE_TYPE   PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP     STATUS
gcelab2  us-central1-c  n1-standard-1               10.128.0.2   35.225.248.116  RUNNING

毎回zoneのフラグを指定するのがめんどくさかったら

gcloud config set compute/zone ...

でデフォルトを決められる。

gcloud経由でのsshも試す。
gcloudコマンドでもssh接続が出来る。

[osechiman@cs-6000-devshell-vm-85d16003-8f2b-4b7f-b203-e0b79728da09] $ gcloud compute ssh gcelab2 --zone us-central1-c
Updating project ssh metadata.../Updated [https://www.googleapis.com/compute/v1/projects/relaynovel-173804].
Updating project ssh metadata...done.
Waiting for SSH key to propagate.
Warning: Permanently added 'compute.5807026344554718797' (ECDSA) to the list of known hosts.
Enter passphrase for key '/home/osechiman/.ssh/google_compute_engine':
Enter passphrase for key '/home/osechiman/.ssh/google_compute_engine':
Linux gcelab2 4.9.0-4-amd64 #1 SMP Debian 4.9.51-1 (2017-09-28) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
osechiman@gcelab2:~$

パスワードはアカウントのものと同一。

6. Custom machine types

定義済みのマシンタイプに使いたい要件に合致するのものがなければ、
カスタムマシンタイプを使ってね。

試しに2つのvCPUと5 GBのRAMを持つ仮想マシンインスタンスを作成。
f:id:osechiman:20171208001535p:plain

こんな感じで表示がされる。

7. Clean up

VM削除。

VM削除をするブートディスクも削除される事に注意。
削除時にはアラートで出してくれるので安心。

削除されては困るsnapshotはもちろん残る。
インスタンスを復元したい場合はsnapshotから復元。

ってやってたらすごく気になる機能を発見した。
f:id:osechiman:20171208002514p:plain
VMインスタンス作成時には気づかなかったが素敵と出会えた。

8. Congratulations!

おめでとう!

9. 大事だと思ったこと
  • gcloudコマンドでもssh接続が出来る。
  • VM削除をするブートディスクも削除される事に注意。
  • VMインスタンスに指定のコンテナイメージをデプロイできる!