■ はじめに
https://dk521123.hatenablog.com/entry/2019/12/09/222057
の続き。 今、行っているプロジェクトでは、 インフラは、Terraformを使うことになったそうなので これを機に覚えるとする、、、(前々から気になっていた技術だし) 中期的な目標として、 AWS GlueのコンポーネントとTeraformを使って構築すること (※) だが、そもそも、あんまりよくわかっていないので、 今回は、基本的な部分とお勉強環境をそろえるところから 始めてみようと思う。
(※)Terraform ~ AWS Glue ~
https://dk521123.hatenablog.com/entry/2023/04/08/220411
目次
【1】ローカル環境の設定 1)Windows の場合 2)Linux の場合 【2】Hello World 1)Terraformのコードを書く 2)初期化処理を実行する 3)実行結果を事前確認する 4)Terraformコードを実行する 5)動作確認 6)後片付け
【1】ローカル環境の設定
* 公式サイトに載っている
https://developer.hashicorp.com/terraform/downloads
1)Windows の場合
* 以下、Windowsの場合の設定方法
[1] Terraformのダウンロード
* 以下の公式サイトから、対象OSのモジュールをダウンロードする => 今回は「terraform_1.4.4_windows_amd64.zip」
https://developer.hashicorp.com/terraform/downloads
[2] Terraformをインストール
* Windowsの場合、ダウンロードしたZIPファイルを解凍し 任意の場所に置く => 今回は「C:\terraform\terraform.exe」
[3] 環境変数「Path」に追加
* Windowsの場合、環境変数「Path」にインストール場所を追加 => 今回は「C:\terraform」
[4] 動作確認
* コマンドプロンプトで、「terraform -help」を入力し、 ヘルプが表示されればOK => 「Usage: terraform [global options] <subcommand> [args]」的な感じで。
2)Linux の場合
[1] 以下を実行し、Terraformをインストールする
wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list sudo apt update && sudo apt install terraform
[2] 動作確認
$ terraform -version Terraform v1.4.4 <= versionが表示されたらOK
【2】Hello World
1)Terraformのコードを書く
/* Terraformのコードを書き、 任意の場所(今回はC:\tmp\tf)へ保存 */ # This is a sample terraform code resource "local_file" "helloworld" { content = "hello world!!!?" filename = "hello.txt" }
2)初期化処理を実行する
# コマンドプロンプトを立ち上げて、以下を入力 cd C:\tmp\tf terraform init # 「Terraform has been successfully initialized!」が確認できたらOK
3)実行結果を事前確認する
# 実行結果を事前確認するために、以下を実行 terraform plan # 「Plan: 1 to add, 0 to change, 0 to destroy.」が確認できたらOK
4)Terraformコードを実行する
terraform apply
「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 と入力し、Enterキー押下 local_file.helloworld: Creating... local_file.helloworld: Creation complete after 0s [id=xxxxxxxxxxxxxxxx] Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
5)動作確認
# 実行後、「hello.txt」を確認 dir # # ファイルの内容が「hello world!!!?」であることを確認 type hello.txt
6)後片付け
# どうせなら、「terraform destroy(リソース破棄)」も経験しておく # [1] まず、破棄されるリソースを確認 terraform plan -destroy # [2] 次に、「terraform destroy」実行 terraform destroy # => 実行後、作成した「hello.txt」が破棄されていることを確認
参考文献
https://zenn.dev/sway/articles/terraform_biginner_helloworld
関連記事
Terraform ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2019/12/09/222057
Terraform ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2023/05/03/000000
Terraform ~ 基本編 / Module ~
https://dk521123.hatenablog.com/entry/2023/05/19/113544
Terraform ~ 基本編 / tfstateファイル ~
https://dk521123.hatenablog.com/entry/2023/05/05/004939
Terraform ~ テンプレート ~
https://dk521123.hatenablog.com/entry/2023/05/22/101325
Terraform ~ Terraformあれこれ ~
https://dk521123.hatenablog.com/entry/2023/05/15/205352
Terraform ~ AWS S3 ~
https://dk521123.hatenablog.com/entry/2023/04/09/104204
Terraform ~ AWS IAM ~
https://dk521123.hatenablog.com/entry/2023/04/12/214311
Terraform ~ AWS Glue ~
https://dk521123.hatenablog.com/entry/2023/04/08/220411
Terraform ~ AWS Secrets Manager ~
https://dk521123.hatenablog.com/entry/2023/04/11/152801
Terraform ~ AWS CloudWatch ~
https://dk521123.hatenablog.com/entry/2023/05/17/123335
Terraform ~ AWS EC2 ~
https://dk521123.hatenablog.com/entry/2023/05/21/003048
Terraform ~ AWS ECR ~
https://dk521123.hatenablog.com/entry/2023/05/23/002314
Terraform ~ AWS MSK ~
https://dk521123.hatenablog.com/entry/2023/05/14/122215
Terraform ~ AWS MSK Connect ~
https://dk521123.hatenablog.com/entry/2023/05/25/000000
Terraform ~ Docker ~
https://dk521123.hatenablog.com/entry/2023/04/10/193239
Terraform ~ Datadog ~
https://dk521123.hatenablog.com/entry/2023/05/12/000000
Terraform ~ 特定リソースのみデプロイする ~
https://dk521123.hatenablog.com/entry/2023/04/20/172823
Terraform ~ 複数環境へデプロイすることを考える ~
https://dk521123.hatenablog.com/entry/2023/05/06/003645
Terraform ~ 機密情報の扱いを考える ~
https://dk521123.hatenablog.com/entry/2023/05/18/005103
Terraform ~ tfenv / バージョン管理 ~
https://dk521123.hatenablog.com/entry/2023/01/14/000000
Terraform ~ direnv / プロジェクト隔離 ~
https://dk521123.hatenablog.com/entry/2023/01/15/000000