opentofu入门

2025-09-08  本文已影响0人  wwq2020

背景

terraform是基础设施即代码的热门工具,但是他的license有限制,而opentofu是他的开源替代

示例

创建main.tf,内容如下

provider "kubernetes" {
  config_path = "~/.kube/config"
}

resource "kubernetes_namespace" "demo" {
  metadata {
    name = "demo"
  }
}

resource "kubernetes_service" "demo" {
  metadata {
    name      = "demo"
    namespace = kubernetes_namespace.demo.metadata.0.name
  }
  spec {
    port {
      port        = 80
      target_port = 80
      protocol    = "TCP"
    }
    type = "ClusterIP"
  }
}

resource "kubernetes_ingress_v1" "demo" {
  metadata {
    name      = "demo"
    namespace = kubernetes_namespace.demo.metadata.0.name
  }
  spec {
    rule {
      host = "demo.com"
      http {
        path {
          path = "/*"
          backend {
            service {
              name = kubernetes_service.demo.metadata.0.name
              port {
                number = 80
              }
            }
          }
        }
      }
    }
  }
}

resource "kubernetes_deployment" "demo" {
  metadata {
    name = "demo"
    namespace = kubernetes_namespace.demo.metadata.0.name
  }
  spec {
    selector {
      match_labels = {
        app = "demo"
      }
    }
    template {
      metadata {
        labels = {
          app = "demo"
        }
      }
      spec {
        container {
          image = "nginx"
          name  = "app"

        }
      }
    }
  }

}

初始化

tofu init

查看创建计划

tofu plan

查看销毁计划

tofu plan -destroy

创建

tofu apply

输入yes
创建自动确认
···
tofu apply -auto-approve
···

销毁

tofu destroy

输入yes
销毁自动确认

tofu destroy -auto-approve

补充

provider

本文使用到的provider在这

https://github.com/hashicorp/terraform-provider-kubernetes

状态信息

terraform.tfstate 当前状态
terraform.tfstate.backup 当前状态的备份,当前状态文件丢失后可rename成terraform.tfstate

provider查询

在此寻找你xu qiu

https://search.opentofu.org/
上一篇 下一篇

猜你喜欢

热点阅读