使用terraform构建LPIC学习环境(GCP)
我想要实现的目标。
-
- GCP上にインスタンスをたてたり、壊したりしたい。(ssh接続できるホストが1つ以上ほしい)
- できればスナップショットをとったりしたい。→ 別記事にて作成予定。
背景- Background
-
- 10月にLPICを受験することになったので、GCP環境上に練習用の環境を構築することにした。
- せっかくなので環境を作ったり壊したりしやすいようにterraformを使ってみたい(個人的興味)。
Terraform的含义是什么?
-
- IaCのツール。
-
- HCL(HashiCorp Configuration Language)と呼ばれる構成言語であるべき姿を定義する。
-
- どうもTerraform CloudとTerraform CLIという二種類があるらしい。
- 今回はTerraform CLIを使用する。
环境
- macにTerraformをインストールして、gcpを操作する感じ。
程序
安装Terraform
- Homebrewで一発。
brew install terraform
设置一个服务账号以用于GCP的terraform。
创建样本代码
- vm2台を作成するhclを以下に記述する。
provider "google" {
project = "(prj_name)"
credentials = "${file(serviceaccount)_.json")}"
region = "asia-northeast1"
zone = "asia-northeast1-b"
}
resource "google_compute_instance" "vm_instance" {
count = "2"
name = "(vm_name)"
machine_type = "f1-micro"
boot_disk {
initialize_params {
image = "(image)"
}
}
metadata = {
ssh-keys = "(username):${file("~/.ssh/id_rsa.pub")}"
}
network_interface {
# A default network is created for all GCP projects
network = "default"
access_config {
}
}
}
-
- prj_name: プロジェクトID
-
- (serviceaccount)_.json: [手順]で出力したjsonのパス
-
- (image): ここで確認できるイメージ名
- (username): ログインユーザ名(なんでもよい)
运行与Terraform相关的命令。
- 初期化
hogehogenoiMac:gcp hogehoge$ terraform init
# .terraformディレクトリ一式が作成される
- 作成したコードに文法のエラーがないか、何が作成されるかを確認する。
hogehogenoiMac:gcp hogehoge$ terraform plan
Refreshing Terraform state in-memory prior to plan...
...
Plan: 1 to add, 0 to change, 0 to destroy.
------------------------------------------------------------------------
Note: You didn't specify an "-out" parameter to save this plan, so Terraform
can't guarantee that exactly these actions will be performed if
"terraform apply" is subsequently run.
- 問題がなければterraform applyを使用して設定を適用する。
hogehogenoiMac:gcp hogehoge$ terraform apply
...
Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.
Enter a value: yes
# 問題なければyesと答える
google_compute_instance.vm_instance: Creating...
google_compute_instance.vm_instance: Still creating... [10s elapsed]
google_compute_instance.vm_instance: Creation complete after 12s [id=(project)]
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
当需要删除通过Terraform创建的环境时,使用terraform destroy命令。
hogehogenoiMac:gcp hogehoge$ terraform destroy
...
Do you really want to destroy all resources?
Terraform will destroy all your managed infrastructure, as shown above.
There is no undo. Only 'yes' will be accepted to confirm.
Enter a value: yes
# 問題なければyesと答える
google_compute_instance.vm_instance: Destroying... [id=(project)]
google_compute_instance.vm_instance: Still destroying... [id=(project), 10s elapsed]
google_compute_instance.vm_instance: Still destroying... [id=(project), 20s elapsed]
google_compute_instance.vm_instance: Destruction complete after 28s
Destroy complete! Resources: 1 destroyed.
请参考
-
- Google Cloud がチュートリアルを提供しているので↓、初歩的なことはできた
- https://cloud.google.com/community/tutorials/getting-started-on-gcp-with-terraform
唯有感!
-
- サクッと環境を構築したり壊したりできるので便利!!
-
- ドキュメントサイトはあるが、初見ではやや難しい。。。
- いくつかチュートリアルをやってみたら感覚掴めるかも?