opentofu入门

背景

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/
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容