この投稿はアイスタイル Advent Calender 2020 の21日目の記事になります。
目次
- はじめに
- Google Cloud Platform(GCP) とは
- やること
- 前提
- GCP初期登録
- GCPコンソールで仮想マシンを作成
- gcloudコマンドで仮想マシン作成
- Ansibleで仮想マシンを作成
- 最後に
はじめに
はじめまして。日々レガシーな環境と闘っているインフラエンジニアのkoderakです。
アイスタイルにジョインして2年経ちましたが、オンプレのレガシー環境に立ち向かう毎日で、
なかなか新しいことにチェレンジできない悶々とした日々を過ごしておりました。
最近になって、やっと弊社でもクラウドを積極的に使っていこうという流れになりつつあり、
今回の記事もどうせ書くなら自分が書いていて楽しいネタにしたいという理由でGCPにしました。
ちなみにGCPは今回はじめて触ります。
使い方を調べたりしていて、ブログの投稿に間に合うか心配でしたが、ちょうどいいタイミングだったので頑張りました。
GUIの操作からコマンド、自動化と内容を詰め込んだので記事が長くなってしまいましたが、私のようにはじめてGCPを触る人でも理解してもらえるようにしたつもりなので、どこか興味あるところだけでも読んでいただいて、参考にしていただけたら幸いです。
Google Cloud Platform(GCP) とは
Googleが提供するクラウドサービスになります。
他の代表的なクラウドサービスだとアマゾンのAWSやマイクロソフトのAzureがありますね。
やること
インフラエンジニアなので、まず仮想マシンの構築を試しておきたいですね。
GUIで操作を試したら、Infrastructure as Code実践のためにコマンドとAnsibleでも仮想マシンが作れるか試しておきたいと思います。
過去にAWSを触っていたので同じノリでイケるかなと。
GCPで仮想マシンを作るにはGoogle Compute Engineのサービスを利用します。AWSでいうとEC2にあたるものですね。
GCPコンソールとgcloudコマンド、Ansibleの3パターンで仮想マシンを作ってみます。
操作方法 | GCPコンソール(GUI) | gcloudコマンド | Ansible |
---|---|---|---|
名前 | prd-gcp-vm01 | prd-gcp-vm02 | prd-gcp-vm03 |
リージョン | asia-northeast1 | asia-northeast1 | asia-northeast1 |
ゾーン | asia-northeast1-a | asia-northeast1-a | asia-northeast1-a |
マシンタイプ | e2-small | e2-small | e2-small |
OS | CentOS 8 | CentOS 8 | CentOS 8 |
ブートディスク | 標準の永続ディスク30GB | 標準の永続ディスク30GB | 標準の永続ディスク30GB |
ネットワーク | default | default | default |
サブネットワーク | default | default | default |
内部IP | エフェメラル(自動) | エフェメラル(自動) | エフェメラル(自動) |
外部IP | 静的IP(prd-gcp-vm01-ip) | 静的IP(prd-gcp-vm02-ip) | 静的IP(prd-gcp-vm03-ip) |
Shielded VM | 有効 | 有効 | 有効 |
前提
GCPの無料トライアルを利用して試します。
今回はVPCなどのネットワーク的な作り込みまではやりません。
GCP初期登録
Google Cloud Platform にアクセス。
GoogleアカウントでChromeにログインしている場合はアカウントが表示されます。チェックボックスをオンにして[続行]クリック。
「アカウントの種類」を今回は「個人」にしてその他必要な情報を入れて、[無料トライアルを開始]をクリック。
画面左上に「My First Project」という名でプロジェクトが作成されています。
▼をクリックすると現在のプロジェクト名とIDが表示されます。
新しくプロジェクトを作成することもできますが、今回はこのままデフォルトのプロジェクトを使用します。このIDは後ほど使います。確認したら[キャンセル]で戻ります。
GCPコンソールで仮想マシンを作成
それでは早速仮想マシンを作成してみたいと思います。
Compute Engineの操作
[Compute Engine]> [VM インスタンス]の順にクリック。
仮想マシン作成に必要な情報を入れていきます。
ここでは以下の情報を登録し、最後に[作成]クリックします。
項目 | 設定 |
---|---|
名前 | prd-gcp-vm01 |
リージョン | asia-northeast1(東京) |
ゾーン | asia-northeast1-a |
マシンタイプ | e2-small(2 vCPU、2GB メモリ) |
オペレーティング システム | CentOS |
バージョン | CentOS 8 |
ブートディスクの種類 | 標準の永続ディスク30GB |
GCPコンソールに作成した仮想マシンが表示されますので、仮想マシンをクリック。
この段階で外部IPはまだ固定ではないので静的IPに変更します。[編集]をクリック。
[ネットワーク インターフェース]の編集ボタンをクリックした後に、外部IPの「エフェメラル」を[IPアドレスを作成]にしてクリック。
「新しい静的IPアドレスの予約」のポップアップウインドウが表示されるので、名前を登録して[予約]をクリック。(今回はprd-gcp-vm01-ipで名前を登録)
最後に[保存]クリックして編集を完了させます。
ちなみにShielded VMの有効化は仮想マシンを停止した状態でないと有効にできないので、一度仮想マシンを停止した後にまた編集画面に戻って、[セキュアブートをオンにする]のチェックボックスを有効化します。Shielded VMについてはこちらを参照してみてください。
GCPコンソールによる仮想マシンの作成は以上となります。
Cloud ShellからgcloudコマンドでSSHログイン
GCPコンソールにはブラウザからコマンドラインで操作できるCloud Shellが用意されています。
すると画面下部にコマンドラインの画面が表示されます。[続行]をクリックします。
このままコマンド直打ちでもいいですが、SSHの▼ボタンをクリックして[gcloud コマンドを表示]をクリックします。
Cloud Shellにコマンドが入力された状態になるのでこのまま実行します。
「Cloud Shell の承認」画面が表示されるので、[承認]をクリックします。
初回はSSH鍵ペアの作成を求められるので、画面の指示にしたがって操作します。
*****@cloudshell:~ (spry-catcher-298120)$ gcloud beta compute ssh --zone "asia-northeast1-a" "prd-gcp-vm01" --project "spry-catcher-298120" WARNING: The private SSH key file for gcloud does not exist. WARNING: The public SSH key file for gcloud does not exist. WARNING: You do not have an SSH key for gcloud. WARNING: SSH keygen will be executed to generate a key. This tool needs to create the directory [/home/*****/.ssh] before being able to generate SSH keys. Do you want to continue (Y/n)? Y Generating public/private rsa key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/*****/.ssh/google_compute_engine. Your public key has been saved in /home/*****/.ssh/google_compute_engine.pub. The key fingerprint is: SHA256:vehzEphT1vSNiZoEkJ+UYFJfdxJ6r8HZOMywRoFDN6Q *****@cs-272511964829-default-default-bpfth The key's randomart image is: +---[RSA 2048]----+ | ..==.+* +.. | | o..*+ =.o | | oE++o.o + | | o.+Oo=+ . | | *SoX o | | +.+. = | | ...o | | .o . | | .+ | +----[SHA256]-----+ Updating project ssh metadata...⠹Updated [https://www.googleapis.com/compute/beta/projects/spry-catcher-298120]. Updating project ssh metadata...done. Waiting for SSH key to propagate. Warning: Permanently added 'compute.5545359228681388031' (ECDSA) to the list of known hosts. Enter passphrase for key '/home/*****/.ssh/google_compute_engine': Last login: Wed Dec 9 21:59:58 2020 from 35.235.242.48
SSHログインできたら、サーバの状態確認しておきましょう。
[*****@prd-gcp-vm01 ~]cat /etc/redhat-release CentOS Linux release 8.2.2004 (Core) [*****@prd-gcp-vm01 ~] grep -i process /proc/cpuinfo | wc -l 2 [*****@prd-gcp-vm01 ~]free -m total used free shared buff/cache available Mem: 1826 239 1284 8 302 1441 Swap: 0 0 0 [*****@prd-gcp-vm01 ~] df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 897M 0 897M 0% /dev tmpfs 914M 0 914M 0% /dev/shm tmpfs 914M 8.4M 905M 1% /run tmpfs 914M 0 914M 0% /sys/fs/cgroup /dev/sda2 30G 2.6G 28G 9% / /dev/sda1 200M 6.9M 193M 4% /boot/efi tmpfs 183M 0 183M 0% /run/user/1000
Macなどの端末からSSHログイン
仮想マシンをクリックして、「VMインスタンスの詳細」画面で[編集]をクリックします。
「SSH 認証鍵が0 個あります」のところで、SSHログインするユーザの公開鍵を登録します。
SSH鍵認証でログインしてみる。
$ ssh -i ~/.ssh/id_rsa *****@34.85.46.107 Enter passphrase for key '/Users/*****/.ssh/id_rsa': [*****@prd-gcp-vm01 ~]$
gcloudコマンドで仮想マシン作成
gcloudコマンドで仮想マシンを作成します。
gcloudはGCPコンソールのCloud Shellを使うか、PCなどのローカル環境にGoogle Cloud SDKをインストールして使うことができます。
今回はmacOSにGoogle Cloud SDKをインストールして、gcloudコマンドを使って仮想マシンを作成してみます。
macOSのバージョン
macOS(Big Sur)にバージョンアップしています。
- ProductName:macOS
- ProductVersion:11.0.1
- BuildVersion:20B29
Pythonの要件
macOS 用のクイックスタート に以下のように記載されています。
Cloud SDK には Python が必要です。サポートされているバージョンは 3.5~3.7、2.7.9 以降です。
macOSにGoogle Cloud SDKインストール
Pythonのバージョンを確認します。Python3だと対応していないですね。
python -V
Python 2.7.16 python3 -V
Python 3.9.0
Cloud SDKをダウンロードします。
※wgetがインストールされていない場合は入れてください。
$ wget https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-308.0.0-darwin-x86_64.tar.gz
展開します。
$ tar zxvf google-cloud-sdk-308.0.0-darwin-x86_64.tar.gz
macOS(Big Sur)だとPython3.9で要件から外れているため、インストールスクリプトを暫定的にPython2で実行するように以下を実行します。
(インストール後にGoogle SDKをアップデートすればPython3.9で動きます)
$ export CLOUDSDK_PYTHON=python
インストールスクリプト実行(画面の指示に従って進めてください)
$ ./google-cloud-sdk/install.sh
Google Cloud SDK 初期化
以下を実行します。
$ gcloud init
Googleユーザー アカウントを使用してログインします。「Y」で実行
Welcome! This command will take you through the configuration of gcloud. Your current configuration has been set to: [default] You can skip diagnostics next time by using the following flag: gcloud init --skip-diagnostics Network diagnostic detects and fixes local network connection issues. Checking network connection...done. Reachability Check passed. Network diagnostic passed (1/1 checks passed). You must log in to continue. Would you like to log in (Y/n)?
ブラウザで「アカウントの選択」画面が表示されるので、アカウントを選択します。
ターミナルに戻り、プロジェクトを指定して実行します。
Pick cloud project to use: [1] spry-catcher-298120 [2] Create a new project Please enter numeric choice or text value (must exactly match list item):
デフォルトのリージョンとゾーンを設定するので「Y」で実行。
Your current project has been set to: [spry-catcher-298120]. Do you want to configure a default Compute Region and Zone? (Y/n)?
使用可能なゾーンが表示されるので指定して実行します。
今回は34のasia-northeast1-a(東京)で実行します。
If you do not specify a zone via a command line flag while working with Compute Engine resources, the default is assumed. [1] us-east1-b [2] us-east1-c ...(省略)... [34] asia-northeast1-a ...(省略)... [49] asia-northeast2-c [50] asia-northeast3-a Did not print [24] options. Too many options [74]. Enter "list" at prompt to print choices fully. Please enter numeric choice or text value (must exactly match list item):
これで初期化は完了です。以下でバージョンを確認しておきます。
gcloud version
Google Cloud SDK 308.0.0
bq 2.0.60
core 2020.08.28
gsutil 4.53
Updates are available for some Cloud SDK components. To install them,
please run: gcloud components update
上記メッセージの通りアップデートして起きます。(長いメッセージのあとに「Y」でアップデート実行します)
$ gcloud components update
アップデート後にターミナル再起動して、gcloudのバージョン確認。(バージョンアップしたのでPython3.9で動いています)
$ gcloud version Google Cloud SDK 319.0.0 bq 2.0.62 core 2020.11.13 gsutil 4.55
認証アカウントを確認します。
gcloud auth list
Credentialed Accounts
ACTIVE ACCOUNT
* *****@gmail.com
To set the active account, run: gcloud config set account `ACCOUNT`
複数のアカウントを切り替えて使いたい場合、gcloud initで新しいユーザを登録すれば上記のリストに出てくるようになります。
切り替えたいときは上記メッセージ時の通り gcloud config set account [ACCOUNT] を実行すればアカウントが切り替えられます。
コンフィグの確認
$ gcloud config list [compute] region = asia-northeast1 zone = asia-northeast1-a [core] account = *****@gmail.com disable_usage_reporting = False project = spry-catcher-298120 Your active configuration is: [default]
Google Cloud SDK に関する情報確認。(Python3.9で動いていることが確認できます)
$ gcloud info Google Cloud SDK [319.0.0] Platform: [Mac OS X, x86_64] uname_result(system='Darwin', node='*****', release='20.1.0', version='Darwin Kernel Version 20.1.0: Sat Oct 31 00:07:11 PDT 2020; root:xnu-7195.50.7~2/RELEASE_X86_64', machine='x86_64') Locale: ('ja_JP', 'UTF-8') Python Version: [3.9.0 (default, Nov 21 2020, 14:55:42) [Clang 12.0.0 (clang-1200.0.32.27)]] Python Location: [/usr/local/bin/python3] Site Packages: [Disabled] ...(省略)...
gcloudコマンドの操作
まず静的外部IPの予約をします。
$ gcloud compute addresses create prd-gcp-vm02-ip --region asia-northeast1
確認します。
$ gcloud compute addresses describe prd-gcp-vm02-ip --region asia-northeast1 address: 34.84.37.66 addressType: EXTERNAL creationTimestamp: '2020-12-11T01:55:47.828-08:00' description: '' id: '3340424723740687564' kind: compute#address name: prd-gcp-vm02-ip networkTier: PREMIUM region: https://www.googleapis.com/compute/v1/projects/spry-catcher-298120/regions/asia-northeast1 selfLink: https://www.googleapis.com/compute/v1/projects/spry-catcher-298120/regions/asia-northeast1/addresses/prd-gcp-vm02-ip status: RESERVED
上記で作成した静的外部IPを使って仮想マシンを作成します。
$ gcloud compute instances create prd-gcp-vm02 \ > --image=centos-8-v20201112 --boot-disk-size=30GB --image-project=centos-cloud \ > --machine-type=e2-small \ > --shielded-secure-boot \ > --address=34.84.37.66 \ > --zone=asia-northeast1-a
確認します。(GCPコンソールで作成した仮想マシンも表示されています)
$ gcloud compute instances list NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS prd-gcp-vm01 asia-northeast1-a e2-small 10.146.0.2 34.85.46.107 TERMINATED prd-gcp-vm02 asia-northeast1-a e2-small 10.146.0.3 34.84.37.66 RUNNING
詳細情報の確認。
$ gcloud compute instances describe prd-gcp-vm02 --zone=asia-northeast1-a canIpForward: false cpuPlatform: Intel Broadwell creationTimestamp: '2020-12-11T02:01:33.822-08:00' deletionProtection: false disks: - autoDelete: true boot: true deviceName: persistent-disk-0 diskSizeGb: '30' guestOsFeatures: - type: SEV_CAPABLE - type: VIRTIO_SCSI_MULTIQUEUE - type: UEFI_COMPATIBLE index: 0 interface: SCSI kind: compute#attachedDisk ...(省略)...
gcloudコマンドでSSHしてみる。GCPコンソールのときと同様に初回はSSH鍵ペアの作成が求められます。
gcloud compute ssh --zone "asia-northeast1-a" "prd-gcp-vm02" --project "spry-catcher-298120"
WARNING: The private SSH key file for gcloud does not exist.
WARNING: The public SSH key file for gcloud does not exist.
WARNING: You do not have an SSH key for gcloud.
WARNING: SSH keygen will be executed to generate a key.
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/*****/.ssh/google_compute_engine.
Your public key has been saved in /Users/*****/.ssh/google_compute_engine.pub.
The key fingerprint is:
SHA256:v88dHrNvJSsU4TkKV/vhIYppaD49PHjS1rxxd7i+PAI *****@*****
The key's randomart image is:
+---[RSA 3072]----+
| |
| o |
| o + |
| . . B o |
| .S= o * o |
| o +.E . +..|
| o * ooo. *oo|
| = O o=o=oB.|
| = oooo+O=.|
+----[SHA256]-----+
Updating project ssh metadata...⠹Updated [https://www.googleapis.com/compute/v1/projects/spry-catcher-298120].
Updating project ssh metadata...done.
Waiting for SSH key to propagate.
Warning: Permanently added 'compute.2091523348746927507' (ECDSA) to the list of known hosts.
Enter passphrase for key '/Users/*****/.ssh/google_compute_engine':
[*****@prd-gcp-vm02 ~]
gcloudコマンド使っての仮想マシン作成はこれでOK!
Ansibleで仮想マシンを作成
AnsibleもmacOS(Big Sur)で試してみました。
公式ドキュメント Google Cloud Platform ガイド を参考にしてます。
事前準備
Ansibleをインストールしていなければ、入れておきます。今回はバージョン2.10.3で試しています。
※brewのインストールは割愛します。
$ brew install ansible
pipでGCPのモジュールを入れる必要があります。macにはpip3が入っていたのでこちらでインストール。
$ pip3 install requests google-auth
GCPモジュールを使うには、JSON形式の認証情報が必要なので以下の流れで取得します。
- [IAMと管理] > [サービスアカウント]
-
「サービス アカウントの詳細」でサービスアカウント名を入れて、[作成]クリック。
サービスアカウント名:service_ansible
-
「このサービス アカウントにプロジェクトへのアクセスを許可する (省略可)」の「ロールを選択」で[Compute Engine] > [Compute 管理者]の順に選択します。
playbookの準備
認証情報をモジュールのパラメータとして指定するため、以下の内容を事前に確認しておきます。
パラメータ | 内容 | 今回使用する値 |
---|---|---|
auth_kind | 使用される認証のタイプ | serviceaccount |
service_account_file | JSON認証情報ファイルへのパス | credentials/spry-catcher-298120-e5008440b6c8.json |
project | プロジェクトID | spry-catcher-298120 |
playbookの作成
ディレクトリを作成して移動します。
mkdir gcp_compute cd gcp_compute
ダウンロードしたJSON認証情報ファイルを置くため、ディレクトリを作って配置します。
mkdir credentials cp ~/Downloads/spry-catcher-298120-e5008440b6c8.json credentials/
ダイナミックイベントリーを使うため、ansible.cfgに以下を追加します。
[inventory] enable_plugins = gcp_compute
ちなみにansible.cfgの内容は以下のとおりです。
$ cat ansible.cfg [defaults] error_on_undefined_vars = True retry_files_enabled = False [privilege_escalation] become=True [ssh_connection] ssh_args = -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no [inventory] enable_plugins = gcp_compute
ダイナミックイベントリーのファイルを用意します。
$ vi inventory.gcp.yml plugin: gcp_compute projects: - spry-catcher-298120 auth_kind: serviceaccount service_account_file: credentials/spry-catcher-298120-e5008440b6c8.json
ここまでのディレクトリ構造は以下の通りです。
$ tree ../gcp_compute ../gcp_compute ├── ansible.cfg ├── credentials │ └── spry-catcher-298120-e5008440b6c8.json └── inventory.gcp.yml
試しに仮想マシンの情報が取れるか試してみます。
うまくいけばすでに作成している2台のインスタンス情報が取得できると思います。
$ ansible-inventory -i inventory.gcp.yml --list --yaml
ここまで出来たら、あとは仮想マシンを作成するためのplaybookを作成します。
$ vi create_gce_instance.yml - hosts: localhost gather_facts: no vars: gcp_project: spry-catcher-298120 gcp_cred_kind: serviceaccount gcp_cred_file: credentials/spry-catcher-298120-e5008440b6c8.json zone: "asia-northeast1-a" region: "asia-northeast1" tasks: - name: create a disk gcp_compute_disk: name: 'prd-gcp-vm03' size_gb: 30 source_image: 'projects/centos-cloud/global/images/centos-8-v20201112' zone: "{{ zone }}" project: "{{ gcp_project }}" auth_kind: "{{ gcp_cred_kind }}" service_account_file: "{{ gcp_cred_file }}" state: present register: disk - name: create a network gcp_compute_network: name: 'default' auto_create_subnetworks: 'true' project: "{{ gcp_project }}" auth_kind: "{{ gcp_cred_kind }}" service_account_file: "{{ gcp_cred_file }}" state: present register: network - name: create a address gcp_compute_address: name: 'prd-gcp-vm03-ip' region: "{{ region }}" project: "{{ gcp_project }}" auth_kind: "{{ gcp_cred_kind }}" service_account_file: "{{ gcp_cred_file }}" state: present register: address - name: create a instance gcp_compute_instance: state: present name: prd-gcp-vm03 machine_type: e2-small disks: - auto_delete: true boot: true source: "{{ disk }}" network_interfaces: - network: "{{ network }}" access_configs: - name: 'External NAT' nat_ip: "{{ address }}" type: 'ONE_TO_ONE_NAT' shielded_instance_config: enable_secure_boot: yes zone: "{{ zone }}" project: "{{ gcp_project }}" auth_kind: "{{ gcp_cred_kind }}" service_account_file: "{{ gcp_cred_file }}" register: instance
最終的なディレクトリ構造は以下になりました。
$ tree ../gcp_compute ../gcp_compute ├── ansible.cfg ├── create_gce_instance.yml ├── credentials │ └── spry-catcher-298120-e5008440b6c8.json └── inventory.gcp.yml
それではplabybookを実行して、仮想マシンを作成してみたいと思います。
今回はリモートホストではなくローカルで実行するため、ローカルのsudoパスワード(macのsudo)入力で必要な-Kオプションを使います。
まずは対象ホストを確認。
$ ansible-playbook -i inventory.gcp.yml create_gce_instance.yml -K -C --list-host playbook: create_gce_instance.yml play #1 (localhost): localhost TAGS: [] pattern: ['localhost'] hosts (1): localhost
ドライラン。
$ ansible-playbook -i inventory.gcp.yml create_gce_instance.yml -K -C BECOME password: PLAY [localhost] *************************************************************************************************************************************************************************************************************************************************************** TASK [create a disk] *********************************************************************************************************************************************************************************************************************************************************** skipping: [localhost] TASK [create a network] ******************************************************************************************************************************************************************************************************************************************************** skipping: [localhost] TASK [create a address] ******************************************************************************************************************************************************************************************************************************************************** skipping: [localhost] TASK [create a instance] ******************************************************************************************************************************************************************************************************************************************************* skipping: [localhost] PLAY RECAP ********************************************************************************************************************************************************************************************************************************************************************* localhost : ok=0 changed=0 unreachable=0 failed=0 skipped=4 rescued=0 ignored=0
実行。
$ ansible-playbook -i inventory.gcp.yml create_gce_instance.yml -K BECOME password: PLAY [localhost] *************************************************************************************************************************************************************************************************************************************************************** TASK [create a disk] *********************************************************************************************************************************************************************************************************************************************************** changed: [localhost] TASK [create a network] ******************************************************************************************************************************************************************************************************************************************************** ok: [localhost] TASK [create a address] ******************************************************************************************************************************************************************************************************************************************************** changed: [localhost] TASK [create a instance] ******************************************************************************************************************************************************************************************************************************************************* changed: [localhost] PLAY RECAP ********************************************************************************************************************************************************************************************************************************************************************* localhost : ok=4 changed=3 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
作成した仮想マシン確認。(先にGCPコンソールとgcloudコマンドで作成した仮想マシンも表示されています。)
$ gcloud compute instances list NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS prd-gcp-vm01 asia-northeast1-a e2-small 10.146.0.2 34.85.46.107 TERMINATED prd-gcp-vm02 asia-northeast1-a e2-small 10.146.0.3 34.84.37.66 TERMINATED prd-gcp-vm03 asia-northeast1-a e2-small 10.146.0.4 34.85.74.179 RUNNING
macのターミナルからログイン確認。
gcloud compute ssh --zone "asia-northeast1-a" "prd-gcp-vm03" --project "spry-catcher-298120"
Enter passphrase for key '/Users/*****/.ssh/google_compute_engine':
[*****@prd-gcp-vm03 ~]
ここまでできればホストを変数にして複数台の並列処理もできそうですね。。再利用のためにタスクをロールにしてミドルのインストールや設定まで処理をつなげたいところです。(別の機会にチャレンジ)
最後に
今回はじめてのGCPということで、Infrastructure as Codeの登竜門となる仮想マシンの構築をGCPコンソール操作からgcloudコマンド、Ansibleまで一気にやってみました。
Infrastructure as Codeは十分やれそうな手応えが得られてよかったと思います。
GCPにはGoogle Compute Engine以外にも様々なサービスがあるので、いろいろ試してGCPに強いインフラエンジニアを目指します!