Help us understand the problem. What is going on with this article?

GCPのComputeEngineインスタンスをコマンドで作成、停止、再開、破棄してみる

More than 3 years have passed since last update.

なぜコマンドでやってみようかと思ったのはこれ行く前にGCPに慣れておきたかったからです
ContainerEngineは次のエントリで書く予定

Google Cloudではじめるデザイナ/プログラマのためのDocker実践入門

作ったインスタンスの中にNginx立ててアクセスできるところまで確認

テストで最小インスタンス(micro)を10回位立ち上げて削除を繰り返してるけど$0のままなのは安いだけなのか反映されるのが遅いだけなのか、料金に詳しい人教えてください…

前提

すでにGCPのアカウントが有効になっていること
ComputeEngine用のプロジェクトが存在する
今回僕のプロジェクト名はtakashi-compute-engineです
名前をダサくすることによって慈悲の価格ダウンを狙っています

作成する

ではインスタンスを作成していきましょう
作成方法は知ってる限り3種類です

Webコンソール、REST API、gcloudコマンドライン

実際はこちらのWebコンソールからRESTもコマンドラインも選択した設定で生成してくれるので、まずはWebコンソールで設定してからコマンドをコピーしていけばいいと思います

スクリーンショット 2016-10-18 8.26.21.png

同等のRESTまたはコマンドラインてところですね

Webで設定したのは

インスタンス名: nginx-instance
ゾーン: asia-east1-a
マシンタイプ: micro
ブートディスク: CentOS6 10GBディスク
IDとAPIアクセス: Compute Engine default service account デフォルトのアクセス権を許可
ファイアウォール: httpのみ

こんな感じです、httpsのチェック入れたほうが良いと思いますが今回すぐ消すので特に入れてません

RESTでは今回やりません

gcloudコマンドラインがこちら

gcloud
gcloud compute --project "takashi-compute-engine" instances create "nginx-instance" --zone "asia-east1-a" --machine-type "f1-micro" --subnet "default" --maintenance-policy "MIGRATE" --scopes default="https://www.googleapis.com/auth/devstorage.read_only","https://www.googleapis.com/auth/logging.write","https://www.googleapis.com/auth/monitoring.write","https://www.googleapis.com/auth/servicecontrol","https://www.googleapis.com/auth/service.management.readonly","https://www.googleapis.com/auth/trace.append" --tags "http-server" --image "/centos-cloud/centos-6-v20160921" --boot-disk-size "10" --boot-disk-type "pd-standard" --boot-disk-device-name "nginx-instance"

gcloud compute --project "takashi-compute-engine" firewall-rules create "default-allow-http" --allow tcp:80 --network "default" --source-ranges "0.0.0.0/0" --target-tags "http-server"

gcloudコマンドで叩くとインスタンスが生成されました
簡単

スクリーンショット 2016-10-18 9.23.42.png

もう一回同じコマンド叩くとすでに存在するとエラー出ました

ここまでが作成です
コマンドコピーするだけなので簡単ですね
プログラムで実行したい時はREST使って、インスタンスタイプとか柔軟に変更できるんだと思います、はい

SSHログインしてNginxインストール

次にこのインスタンスにログインしてNginxをインストールします

SSHログインは上の画像のnginx-instanceの右にあるSSHの逆三角をクリックして「gcloudコマンドを表示」でコマンド取得できます
それをローカルのターミナルで叩いて入ります

gcloud compute --project "takashi-compute-engine" ssh --zone "asia-east1-a" "nginx-instance"

sshログインした状態で

sudo yum update

# Nginxインストール
sudo rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
sudo yum install nginx

# Nginxバージョン確認
nginx -v

バージョンが出たらOK

Nginxのステータス確認

sudo /etc/init.d/nginx status

多分停止状態なので起動

sudo /etc/init.d/nginx start

そしてIPから起動しているか確認します

このインスタンスのIPは104.199.222.235なので
http://104.199.222.235/でアクセスしてみます

いえい

スクリーンショット 2016-10-18 9.48.46.png

アクセスできました
httpsでは出来ませんでした

インスタンスの停止、開始、一覧確認

sshログインから出ます

gcloudのインスタンス用リファレンスは
gcloud compute instances --helpで見れます

まずはインスタンスの一覧を確認してみます

# gcloud configにプロジェクトの追加
gcloud config set project takashi-compute-engine
# プロジェクト確認
gcloud config list

# インスタンスの確認
gcloud compute instances list

NAME            ZONE          MACHINE_TYPE  PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP      STATUS
nginx-instance  asia-east1-a  f1-micro                   10.140.0.2   104.199.222.235  RUNNING

確認できました
gcloud configが以前のプロジェクトのままだと他のcompute engine インスタンスを表示しようとするのでsetしないといけませんでした

インスタンスの停止

以下のコマンドをキメましょう
途中でZONEを聞かれます 今回は2でした

stopの後ろはインスタンスネームです

gcloud compute instances stop nginx-instance

停止確認は先程のNginxのページとinstances listで行います

Nginxのページは画像貼るのあれなので…止まってました

gcloudでの確認

various ❯ gcloud compute instances list
NAME            ZONE          MACHINE_TYPE  PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP  STATUS
nginx-instance  asia-east1-a  f1-micro                   10.140.0.2                TERMINATED

TERMINATEDになっていますね

スタートさせてみます
stopと大体同じ手順ですね

gcloud compute instances start nginx-instance

Runningになっていました

インスタンスの削除

最後にインスタンスの削除をやってみます

コマンドは

gcloud compute instances delete nginx-instance

ZONEの確認と本当に削除して良いのかの確認が出ます

削除するとWebコンソールからインスタンスが消えます

スクリーンショット 2016-10-18 10.22.30.png

タイトルに書いたことは終わったので今回は終わりです

サンプルでお金かかりそうで怖い人は、一応Webコンソールでプロジェクトを削除しておきましょう

※なんかコマンドで消そうとしてもエラー出たんでコンソールから消しました

gcloud projects delete takashi-compute-engine

所感

SSH接続時の反応が悪くてストレスですがgcloudコマンドでいろんな操作が出来るのは使いやすかったです。

gcloudコマンドのリファレンスは公式が割と見やすかった
https://cloud.google.com/sdk/gcloud/reference/

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away