なぜコマンドでやってみようかと思ったのはこれ行く前にGCPに慣れておきたかったからです
ContainerEngineは次のエントリで書く予定
Google Cloudではじめるデザイナ/プログラマのためのDocker実践入門
作ったインスタンスの中にNginx立ててアクセスできるところまで確認
テストで最小インスタンス(micro)を10回位立ち上げて削除を繰り返してるけど$0のままなのは安いだけなのか反映されるのが遅いだけなのか、料金に詳しい人教えてください…
前提
すでにGCPのアカウントが有効になっていること
ComputeEngine用のプロジェクトが存在する
今回僕のプロジェクト名はtakashi-compute-engine
です
名前をダサくすることによって慈悲の価格ダウンを狙っています
作成する
ではインスタンスを作成していきましょう
作成方法は知ってる限り3種類です
Webコンソール、REST API、gcloudコマンドライン
実際はこちらのWebコンソールからRESTもコマンドラインも選択した設定で生成してくれるので、まずはWebコンソールで設定してからコマンドをコピーしていけばいいと思います
同等のRESTまたはコマンドラインてところですね
Webで設定したのは
インスタンス名: nginx-instance
ゾーン: asia-east1-a
マシンタイプ: micro
ブートディスク: CentOS6 10GBディスク
IDとAPIアクセス: Compute Engine default service account デフォルトのアクセス権を許可
ファイアウォール: httpのみ
こんな感じです、httpsのチェック入れたほうが良いと思いますが今回すぐ消すので特に入れてません
RESTでは今回やりません
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コマンドで叩くとインスタンスが生成されました
簡単
もう一回同じコマンド叩くとすでに存在するとエラー出ました
ここまでが作成です
コマンドコピーするだけなので簡単ですね
プログラムで実行したい時は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/
でアクセスしてみます
いえい
アクセスできました
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コンソールからインスタンスが消えます
タイトルに書いたことは終わったので今回は終わりです
サンプルでお金かかりそうで怖い人は、一応Webコンソールでプロジェクトを削除しておきましょう
※なんかコマンドで消そうとしてもエラー出たんでコンソールから消しました
gcloud projects delete takashi-compute-engine
所感
SSH接続時の反応が悪くてストレスですがgcloudコマンドでいろんな操作が出来るのは使いやすかったです。
gcloudコマンドのリファレンスは公式が割と見やすかった
https://cloud.google.com/sdk/gcloud/reference/