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