業務じゃ使わないけどGCP使ってみた話

この記事は、[福岡若手Sier_bc Advent Calendar 2019 の 14 日目](https://qiita.com/advent-calendar/2019/fukuoka-sier_young_bc)の投稿です。(遅くなったーゴメンナサイ）


弊社ではクラウドサービス使わないけれども、だけれども市場価値（）のため勉強してみました。
備忘録および同じ初学者向けに参考になればと思う。

比較的簡単な、Associate Cloud Engineerがなんとなく取りたい。
合格体験記的なのを見るとみなさん書籍を結構利用されていたので、買った本を読んで分かったこと、学んだことをまとめようと思う。

なお、登録初年度？は無料枠があるようでそこで色々やってます。
以下の記事参照。
https://qiita.com/Brutus/items/22dfd31a681b67837a74

#対象
GCP初学者

#ゴール
仮想マシンの作成ができる
Cloud SQLを使ってデータベースを利用する

##イメージ図
ゴールはこんな感じ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159147/bb807286-623f-8258-3471-0dda57b724b5.png)


##プロジェクトの作成
GCPでは何はともあれいろんなことをプロジェクトと言う単位で扱うようだ。
仮想マシンもストレージもとりあえずプロジェクト毎に作る感じ。

まずは、GCPの管理画面のログイン
https://console.cloud.google.com/?hl=ja

ホーム画面から、「プロジェクトの作成」ー「新しいプロジェクト」を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159147/0c4365b8-083a-6a42-279e-7a97e3fb508e.png)

任意の名前を入力し、「作成」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159147/f2caa428-2e45-5c29-0c25-008e7d89a0d2.png)

最後に作ったプロジェクトを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159147/346673d5-6314-4f1f-a42c-f7ffe1c75ec3.png)


##仮想マシンの作成
どんな仮想マシンを作成するか決めていきます。
左のメニューから「Compute Eingine」ー「VMインスタンス」を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159147/802a73ac-e997-341c-7ec4-c3e50b7bad6a.png)

「作成」を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159147/0972158b-5552-fb41-fc4b-fd7243be3ff4.png)

「マシン名」、「リージョン」、「マシンタイプ」を決定
ここでは、マシンタイプのみ一番安い奴に。
なお、リージョンはデータセンタでゾーンは「障害ドメイン」と呼ばれ、単一障害点を排除できるとのこと。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159147/c8d4b49b-53ac-e4f9-d815-9c2eece34729.png)

「ブートディスク」を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159147/16e5fbb9-0088-5e39-af54-07add45e3a02.png)

任意のOS、ディスクを選択
ここでは、OSをDebian GNU/Linux 10とし、ディスクはデフォルトを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159147/ba6fc5c6-b461-947a-ff25-24085460968d.png)

次にアクセス権の設定
IDとAPIへのアクセスにて、「各APIにアクセス権を許可」のラジオボタンを選択し、利用予定の「Cloud SQL」へのアクセスを有効にする。

なお、この権限設定は利用するサービスに関しては適宜有効にする必要があるそうな。デフォルトのアクセス権だと色々悩まなくて良さそう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159147/3b64969d-f1c9-4c06-4f7a-d681487ab8cd.png)

最後にファイアウォールについて、よく利用するHTTP/HTTPSの設定のみここでできるようだ。
ここではHTTPアクセスのみ有効とし、「作成」を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159147/7005e92a-3d88-b706-6b33-c1f580955679.png)
30秒くらいで、仮想マシンできた。

##静的IPの予約
デフォルトは動的IPアドレスが設定されるようなので、固定化する。
なお、`課金されるようなので遊び終わったら解除すること`
作成したVMインスタンスの名前を選択すると、詳細に移る
そこで、「nic0」を選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159147/741d2504-8668-4d65-f51f-a405edb1caf1.png)


ネットワークの詳細画面に移るので、外部IPの項目を選択する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159147/42a2546c-2ba3-864d-788b-d2c87674cf29.png)



「静的アドレスを予約」を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159147/d51d9659-c6e4-6b94-4724-9257572c8ff4.png)


- 「任意の名前」
- 「ネットワークサービスの階層」
- 「IPバージョン」
- 「リージョン」
- 「接続先」

を決定し、「予約」を選択
なお、「リージョン」は先ほど作成した仮想マシンのリージョンを選択する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159147/d334b6d6-0dcd-fbc2-d361-4a2135263f7c.png)

##繋いでみる
GCPの管理画面からSSH接続が可能になっている（便利）

VMインスタンスの管理画面から「SSH」ボタンを押すと別ウインドウにてSSH接続となる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159147/df5b2ce6-768f-d848-f24f-5f9098934f98.png)

SSH接続できたら、とりあえず必要なミドルウェアのインストールを行う

```
#パッケージのアップデート
$ sudo apt-get -y update

# GCPのAPI群をインストール
$ sudo pip install --upgrade setuptools
# 警告出るけど'Successfully installed setuptools-42.0.2'と出ればOKとのこと
$ sudo pip install --upgrade gcloud
```

とりあえず、ここまで来るのに２時間くらい。慣れるまで、GCPの管理コンソールの使い方に時間がかかった・・・。

Cloud SQLは続きのAdvent calendarで。
[続きます](https://qiita.com/ECOHOHOHOO/items/c79b41a0ce4ba6789ecc
)

# 参考
https://qiita.com/bee3/items/19628d54112d9eb875c2
https://qiita.com/kuni-nakaji/items/d11219e4ad7c74ece748
https://qiita.com/yukibe/items/4ba2aa49510ab1f6b1f1
https://qiita.com/AkiraTameto/items/1079817968df84f49aa3
https://cloud.google.com/sql/docs/postgres/connect-compute-engine?hl=ja