☆このブログの目的
・TerraformとAWS CloudFormationを触ったことはあるが、Google CloudのIaCサービスは触ったことがなかったので、ChatGPTを利用して学習コストを抑えながら勉強したかった。
・Google Cloudサービスを利用するにあたって、かかる費用の概算をてっとり早く確認できるか試したかった。
☆まずはCloud Development Managerの概要を聞いてみた。
Google CloudのCloud Development Managerに関して概要を教えてください。
ChatGPTによると、
Google Cloud Development Managerは、Google Cloud Platform (GCP) でリソースの作成、更新、削除を自動化するためのインフラストラクチャ管理サービスです。
以下は、Cloud Development Managerの主な特徴です:
- コードによるインフラストラクチャ管理:Infrastructure as Code (IaC) の原則に基づいて作成され、テキストによる宣言的表現を使用してリソースを管理します。これにより、リソースの設定をバージョン管理し、再利用することが可能となります。
- テンプレートエンジン:Cloud Development Managerは、PythonやJinja2のテンプレートを使用してリソースの設定を定義します。これにより、パラメータ化された設定を作成し、再利用することが可能となります。
- 組み込みのGCPリソースタイプ:Cloud Development Managerには、Compute Engine、Cloud Storage、BigQueryなどのGCPリソースを作成するための組み込みタイプが用意されています。
- カスタムリソースタイプ:Cloud Development Managerは、カスタムリソースタイプを定義して使用することが可能です。これにより、特定のユースケースに合わせたリソースの設定を作成することが可能となります。
- 更新のプレビュー:Cloud Development Managerは、設定の変更を適用する前にその影響をプレビューすることが可能です。これにより、予期しない副作用を防ぐことが可能となります。
- 依存関係の管理:Cloud Development Managerは、リソース間の依存関係を自動的に解決します。これにより、リソースの作成順序を手動で管理する必要がありません。
Cloud Development Managerを使用すると、インフラストラクチャの設定を一元化、標準化し、再利用可能なテンプレートを作成することが可能となります。これにより、インフラストラクチャの管理を自動化し、エラーを減らし、効率を向上させることが可能となります。
☆次にCloud Development ManagerでGCEを作るために必要な情報をきいてみた。
Cloud Development ManagerでGCEのコードを作るために必要な情報を教えてください。
ChatGPTによると、
Google Cloud Development ManagerでGoogle Compute Engine(GCE)のコードを作成する際には、以下の情報が必要となります。
1. プロジェクトID:GCEインスタンスを作成するGCPプロジェクトのID。
2. ゾーン:GCEインスタンスを作成するGCPのゾーン。
3. マシンタイプ: GCEインスタンスのマシンタイプ(例:n1-standard-1)。
4. ブートディスクのイメージ: GCEインスタンスのブートディスクに使用するOSイメージ。
5. ブートディスクのタイプとサイズ: GCEインスタンスのブートディスクタイプとサイズ。
6. ネットワーク設定: GCEインスタンスに関連するネットワーク設定。
☆下記の条件のGCEを作成するコードを聞いてみた。
下記の情報でGCEを作成するCloud Development Managerのコードを教えてください。
1. プロジェクトID:certain-math-279406
2. ゾーン:asia-northeast1-a
3. マシンタイプ:n1-standard-1
4. ブートディスクのイメージ:Red Hat Enterprise Linux 9
5. ブートディスクのタイプとサイズ:バランス永続ディスク、20GB
6. ネットワーク設定: default
ChatGPTによると、
以下に、指定された情報を基にしたGCEインスタンスを作成するためのCloud Development ManagerのYAMLファイルを記載します。
resources:
- name: my-vm
type: compute.v1.instance
properties:
zone: asia-northeast1-a
machineType: https://www.googleapis.com/compute/v1/projects/certain-math-279406/zones/asia-northeast1-a/machineTypes/n1-standard-1
disks:
- deviceName: boot
type: PERSISTENT
boot: true
autoDelete: true
initializeParams:
sourceImage: projects/rhel-cloud/global/images/family/rhel-9
diskType: https://www.googleapis.com/compute/v1/projects/certain-math-279406/zones/asia-northeast1-a/diskTypes/pd-balanced
diskSizeGb: 20
networkInterfaces:
- network: https://www.googleapis.com/compute/v1/projects/certain-math-279406/global/networks/test-gcp
accessConfigs:
- name: External NAT
type: ONE_TO_ONE_NATこのコードは、指定されたプロジェクトID、ゾーン、マシンタイプ、ブートディスクのイメージ、ブートディスクのタイプとサイズ、ネットワーク設定を用いてGCEインスタンスを作成します。
注意点として、このYAMLファイルはあくまで一例であり、実際の使用には適切な設定値が必要です。また、ブートディスクのイメージについては、正確なイメージのURLを指定する必要があります。上記の例では、Red Hat Enterprise Linux 9のイメージを使用していますが、これは一例であり、実際の使用時には該当プロジェクトで使用可能な正確なイメージのURLを指定してください。
☆上記のyamlをアップロードする方法を聞いてみた!
Cloud Development ManagerにYAMLファイルをアップロードする方法を教えてください。
ChatGPTによると、
Cloud Development ManagerにYAMLファイルをアップロードするには、以下の手順を実行します。ここではGoogle Cloud SDK(gcloudコマンドラインツール)を使用した方法を説明します。
1. Google Cloud SDKのインストールと初期設定 Google Cloud SDKがまだインストールされていない場合は、まずそれをインストールし、gcloud init コマンドを実行して初期設定を行います。
2. デプロイメントの作成 次に、以下のコマンドを実行してYAMLファイルをアップロードし、デプロイメントを作成します。
gcloud deployment-manager deployments create my-deployment --config my-config.yaml
上記のコマンドでは、my-deploymentは作成するデプロイメントの名前、my-config.yamlはアップロードするYAMLファイルのパスです。これらは適切な値に置き換えてください。
3. デプロイメントの確認 デプロイメントが正常に作成されたか確認するには、以下のコマンドを実行します。
gcloud deployment-manager deployments describe my-deployment
上記のコマンドでは、my-deploymentは作成したデプロイメントの名前です。これを適切な値に置き換えてください。
これらの手順を実行することで、YAMLファイルをCloud Development Managerにアップロードし、デプロイメントを作成することができます。また、デプロイメントの更新や削除については、それぞれgcloud deployment-manager deployments updateコマンドとgcloud deployment-manager deployments deleteコマンドを使用します。
☆実際にCloud Shellから実行してみた。
実際にmy-developmentが作成された。実際にGCEが作成されているか確認すると、
作成されていた。
☆最後に1ヵ月間にかかる費用をきいてみた。
このGCEを1ヵ月間使用した場合の費用を教えて下さい。
ChatGPTによると、
Google Cloud Platformの費用は多くの要素によって変動します。要素には、使用したリソースの種類と量、リソースの使用時間、地域、約束された使用量などがあります。
指定された設定であるn1-standard-1インスタンス(1 vCPU、3.75 GB メモリ)をAsia-Northeast1(東京)リージョンで1ヵ月(約730時間)使用した場合の費用は、以下の通りとなります(2022年3月現在の価格)。
• 仮想マシンのインスタンス:約(0.0333/時間)
• ブートディスク(バランス永続ディスク 20GB):約(0.00015/GB/時間)
• OSライセンス(Red Hat Enterprise Linux):約(0.02/時間)合計費用は約$45.272です。
ただし、これらの価格は参考のためであり、Google Cloudの実際の料金は使用したサービスの詳細によります。また、ネットワーク料金、スナップショット、プレミアムOS、その他の利用料金などは含まれていません。具体的な料金は、Google Cloudの料金計算ツールを利用して試算してみてください。
☆実際に計算ツールで計算してみた
下記リンクの計算ツールを使って実際に計算してみた。
https://cloud.google.com/products/calculator?hl=ja
ChatGPTに言われた通りに計算ツールを使うと、$77.54と算出されました...ChatGPTが算出した費用とはかなり大きな開きがありそう...
公式ドキュメント(https://cloud.google.com/compute/all-pricing?hl=ja#n1_machine_types)を参照すると、
・マシンタイプ: $0.04 × 730時間 = $29.2/月
・RHEL: $0.06 × 730時間 = $43.8/月
と読み取れるので、計算ツールはおそらくこの数値をもとに計算しているのではないかと考えています。
(出典:https://cloud.google.com/compute/all-pricing?hl=ja#n1_machine_types)
ChatGPTにもOSライセンスの一か月の費用$0.02/時間をどこから引用してきたか聞いてみましたが、上記のGoogle Cloud公式ドキュメントのページを案内されました...。$0.02という数字は見当たりませんでした...
☆やってみて思ったこと
コードの学習を行う上ではChatGPTは大変役に立つものであると感じた。その一方で、自分で検証作業を行う際のざっくりとした費用感を把握するだけなら、ChatGPTで十分ではないかと感じていたが、実際にChatGPTで算出した費用と計算ツールを用いて行った費用とでは多少なりとも開きがあることが分かった。顧客に提示する費用は、料金計算ツールを使って、しっかり見積もることに加えて、ChatGPTではカバーしきれない最新の価格変更の情報を自分自身で収集して盛り込む必要があると感じた。