Terraformをローカル環境で勉強できるようにする
画像は無関係です。びっくりドンキーです。
この記事は、whywaita Advent Calendar 2022の4日目の投稿です。
昨日3日目はhogextendさんのz-indexバトル観戦でした。
初めての方、はじめまして。
なはれぽ(@nahareport)と申します。
今はクラウドエンジニアとして働いています。
クラウド未経験からいきなり資格6つ取ったりしたので、よろしければそちらの記事も読んでみてください。
https://nahareport.blogspot.com/2022/07/2azure-expert.html
https://nahareport.blogspot.com/2022/08/1awsgcp.html
https://nahareport.blogspot.com/2022/11/aws-sap-solution-architect-professional.html
一方、クラウドつよつよ@whywaitaさんなら5秒でできる簡単な話かとは思いますが、
今回Terraformをローカル環境で勉強できるようにしました。
しばしお付き合いください。
今回の環境は、以下のような方におすすめです(僕を含む)
・Terraformを色々触って学習したい
・でもawsとかに接続するとインスタンス削除忘れしそう(課金こわい)
なお、MacBook Air M1での構築を想定しています。
まずはTerraformインストール。
https://developer.hashicorp.com/terraform/downloads
brewを使いたくないので、
Binary download for macOSでARM64をダウンロード。
/usr/local/binにこぴります。
先にローカルのkubernetes環境でのterraform利用例を見ましょう。
minikubeをインストールします。
https://minikube.sigs.k8s.io/docs/start/
で、minikube startすると...driverがないよってエラーになります。
で、以下を見ます。
https://minikube.sigs.k8s.io/docs/drivers/
Docker (Docker Desktop)が推奨だよ。インストールしてね、とのこと。インストールしましょう。
さっそく、terraformファイルのprovider部分をkubernetesとdockerで見比べてみましょう。
この記事は、whywaita Advent Calendar 2022の4日目の投稿です。
昨日3日目はhogextendさんのz-indexバトル観戦でした。
初めての方、はじめまして。
なはれぽ(@nahareport)と申します。
今はクラウドエンジニアとして働いています。
クラウド未経験からいきなり資格6つ取ったりしたので、よろしければそちらの記事も読んでみてください。
https://nahareport.blogspot.com/2022/07/2azure-expert.html
https://nahareport.blogspot.com/2022/08/1awsgcp.html
https://nahareport.blogspot.com/2022/11/aws-sap-solution-architect-professional.html
一方、クラウドつよつよ@whywaitaさんなら5秒でできる簡単な話かとは思いますが、
今回Terraformをローカル環境で勉強できるようにしました。
しばしお付き合いください。
今回の環境は、以下のような方におすすめです(僕を含む)
・Terraformを色々触って学習したい
・でもawsとかに接続するとインスタンス削除忘れしそう(課金こわい)
なお、MacBook Air M1での構築を想定しています。
まずはTerraformインストール。
https://developer.hashicorp.com/terraform/downloads
brewを使いたくないので、
Binary download for macOSでARM64をダウンロード。
/usr/local/binにこぴります。
先にローカルのkubernetes環境でのterraform利用例を見ましょう。
minikubeをインストールします。
https://minikube.sigs.k8s.io/docs/start/
で、minikube startすると...driverがないよってエラーになります。
で、以下を見ます。
https://minikube.sigs.k8s.io/docs/drivers/
Docker (Docker Desktop)が推奨だよ。インストールしてね、とのこと。インストールしましょう。
さっそく、terraformファイルのprovider部分をkubernetesとdockerで見比べてみましょう。
後述URLのサイトのサンプルです。
kubernetesのyamlと同じですね。
まずローカルkubernetes
つぎにローカルdocker
なるほど、こうやって構築先を判断しているのか...
terraform { required_providers { kubernetes = { source = "hashicorp/kubernetes" version = "2.11.0" } } } provider "kubernetes" { config_path = "~/.kube/config" config_context = "minikube" }
つぎにローカルdocker
terraform { required_providers { docker = { source = "kreuzwerker/docker" version = "~> 2.13.0" } } } provider "docker" {}
なるほど、こうやって構築先を判断しているのか...
つぎにkubernetesのnamespaceとdeploymentの部分を見てみましょう。
resource "kubernetes_namespace" "example" { metadata { name = "k8s-ns-by-tf" } } resource "kubernetes_deployment" "example" { metadata { name = "terraform-example" labels = { test = "MyExampleApp" } namespace = "k8s-ns-by-tf" } spec { replicas = 2 selector { match_labels = { test = "MyExampleApp" } } template { metadata { labels = { test = "MyExampleApp" } } spec { container { image = "nginx:1.21.6" name = "example" port { container_port = 80 } resources { limits = { cpu = "0.5" memory = "512Mi" } requests = { cpu = "250m" memory = "50Mi" } } } } } } }
一方docker
resource "docker_image" "nginx" { name = "nginx:latest" keep_locally = false } resource "docker_container" "nginx" { image = docker_image.nginx.latest name = "tutorial" ports { internal = 80 external = 8000 } }
まあシンプルですかね。
ということでローカル環境でterraformの学習環境が整いました(インストールしてみた!記事になっているのは秘密)。
パチパチパチ
しかし残念なことに、terraform触っていたらkubernetesのほうが面白くなってきてしまい、
kubernetesしかさわっていない状況になってしまいました。
k8sには人を惹きつける魅力があるのかもしれません。
whywaita Advent Calendar 2022の4日目いかがだったでしょうか?
明日以降、morimolymolyさんが2連続で記事を書いてくださるようです。
参考URL
Comments