はじめに
自宅で開発している時に Linux マシンが欲しくなることがあります。使い捨ての VM 環境としては Vagrant など自 PC 上で対応することも可能です。一方でクラウドの利点としては、OS イメージを手元のマシンに配置する必要がないことです。
ここでは Google Cloud Platform の VM インスタンスを使う手順を紹介します。VM を時々起動する程度であれば十分無料で使えます(念の為、公式のGCPの無料枠をご参照の上ご利用ください)。
また、Cloud Source Repositories というリポジトリも利用できます。せっかくなので、ソース類はこちらで管理するようにセットアップします。そうすれば、VM を使い捨てたとしても、ソース類をこちらに残せます。
流れとしては以下の通りです。
- Cloud SDK のセットアップ
- リポジトリ作成
- サービスアカウントを作成
- VM を起動
- 利用後は VM を削除
Cloud SDK のセットアップ
以降の手順では gcloud コマンドを使います。そのため、手元の PC で Cloud SDK を使える状態にする必要があります。導入手順は公式ドキュメントをご参照ください。
リポジトリ作成
gcloud コマンドを利用できるようになったら、リポジトリを作成します。
$ gcloud source repos create リポジトリ名
サービスアカウントの作成
サービスアカウントを使う目的は、VM 上から他のサービスを使えるようにすることです。今回のケースでは使いたいのは Cloud Source Repositories です。そのため、次の作業を行います。
- サービスアカウントを作成
- サービスアカウントに権限付与
- VM にサービスアカウントを設定
まず、今後の作業のためにプロジェクトIDを環境変数にセットしておきます。
$ export PROJECT_ID=$(gcloud config get-value project)
サービスアカウントを作成します。
$ gcloud iam service-accounts \
create gce-service-account \
--display-name "gce-service-account"
サービスアカウントに source.writer 権限を付与します。
$ gcloud projects add-iam-policy-binding ${PROJECT_ID} \
--member serviceAccount:gce-service-account@${PROJECT_ID}.iam.gserviceaccount.com \
--role roles/source.writer
[参考]
VMインスタンスの作成
では、先ほど作ったサービスアカウントを設定しつつ VM を起動します。ここでは CentOS にしています。余談ですが下記のコマンドだと 20 秒かからず起動します。速い!
$ gcloud compute instances create my-centos \
--image-family centos-7 \
--image-project centos-cloud \
--machine-type f1-micro \
--preemptible \
--service-account gce-service-account@${PROJECT_ID}.iam.gserviceaccount.com \
--scopes cloud-source-repos
[参考]
VM インスタンスに接続
VM が起動したらインスタンスに接続します。
$ gcloud compute ssh my-centos
Git インストール
実は今回起動したイメージには Git が含まれていないので、yum でインストールします。
$ sudo yum install -y git
git config
下記コマンドで git config の設定をしておく必要があります。
$ git config --global credential.'https://source.developers.google.com'.helper gcloud.sh
リポジトリのクローン
ここまでの作業により、リポジトリを clone できるようになっていますので、次のコマンドで clone します。
$ gcloud source repos clone リポジトリ名
利用後は VM を削除
作業後は、OS シャットダウン後に、インスタンスを削除します。
$ gcloud compute instances delete my-centos
最後に
上記の流れで使い捨ての VM を利用できます。自分の PC に色々と入れていると、ソフトのバージョン管理などが面倒だったり容量も食います。そんな時にクラウド上の VM は便利です。
追記:実際のところ、Linux ライクな環境で開発したい場合は、Cloud Shell でいいような気もします・・
参考
この記事では単に VM を Cloud Source Repositories を使えるようにしただけですが、Cloud Source Repositories はコード検索などの機能があったり、Cloud Build など GCP 上の他のサービスと連携できる効用もあります。Google Cloud Platform のブログ上で紹介されているため案内させていただきます。