go生成terraform .tf配置

代码

package main
 
import (
    "fmt"
    "github.com/hashicorp/hcl/v2/hclwrite"
    "github.com/zclconf/go-cty/cty"
    "os"
    "io/ioutil"
)

func main() {
    // 创建一个空的文件体系
    f := hclwrite.NewEmptyFile()
    // 创建一个body对象,所有的hcl元素都将附加在这个对象上
    body := f.Body()

    //var re cty.Value
    re := cty.StringVal("ami-abc123")
    ak := cty.StringVal("ami-abc123")
    sk := cty.StringVal("ami-abc123")
    region := cty.StringVal("ami-abc123")

    //创建privader
    privader := body.AppendNewBlock("provider", []string{"alicloud"}).Body()
    privader.SetAttributeValue("access_key", ak)
    privader.SetAttributeValue("secret_key", sk)
    privader.SetAttributeValue("region", region)

    // 创建一个resource元素,并且添加到body中
    resource := body.AppendNewBlock("resource", []string{"aws_instance", "web"}).Body()
    //resource.SetAttributeValue("ami", "ami-abc123")
    //resource.SetAttributeValue("instance_type", "t2.micro")
    resource.SetAttributeValue("ami", re)
    resource.SetAttributeValue("instance_type", re)

    // 创建一个output元素,并且添加到body中
    output := body.AppendNewBlock("output", []string{"web_ip"}).Body()
    //output.SetAttributeValue("value", "${aws_instance.web.private_ip}")
    output.SetAttributeValue("value", re)
    // 将内容写入到文件中
    _,err := f.WriteTo(os.Stdout)
    if err != nil {
        fmt.Println("Error:", err)
        return
    }
    //fmt.Printf("n:%v\n",n)

        // 将格式化后的HCL代码写入文件
    err = ioutil.WriteFile("example.tf", f.Bytes(), 0644)
    if err != nil {
        fmt.Println("Error:", err)
        return
    }

    fmt.Println("Terraform configuration updated successfully.")

执行结果:

# go run hclwrite2.go
provider "alicloud" {
  access_key = "ami-abc123"
  secret_key = "ami-abc123"
  region     = "ami-abc123"
}
resource "aws_instance" "web" {
  ami           = "ami-abc123"
  instance_type = "ami-abc123"
}
output "web_ip" {
  value = "ami-abc123"
}
Terraform configuration updated successfully.
# cat example.tf 
provider "alicloud" {
  access_key = "ami-abc123"
  secret_key = "ami-abc123"
  region     = "ami-abc123"
}
resource "aws_instance" "web" {
  ami           = "ami-abc123"
  instance_type = "ami-abc123"
}
output "web_ip" {
  value = "ami-abc123"
}

相关推荐

  1. go生成terraform .tf配置

    2024-03-15 13:02:01       41 阅读
  2. Go配置镜像源

    2024-03-15 13:02:01       70 阅读
  3. go加载配置

    2024-03-15 13:02:01       41 阅读
  4. Go 环境安装配置

    2024-03-15 13:02:01       23 阅读
  5. JDK生成https配置

    2024-03-15 13:02:01       25 阅读
  6. [go] 生成器模式

    2024-03-15 13:02:01       59 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-15 13:02:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-15 13:02:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-15 13:02:01       87 阅读
  4. Python语言-面向对象

    2024-03-15 13:02:01       96 阅读

热门阅读

  1. 程序员如何选择职业赛道?

    2024-03-15 13:02:01       43 阅读
  2. docker套娃实践(待续)

    2024-03-15 13:02:01       42 阅读
  3. Docker使用及部署流程

    2024-03-15 13:02:01       38 阅读
  4. C++for语句

    2024-03-15 13:02:01       43 阅读
  5. 探索Python人工智能编程之道:从入门到实战

    2024-03-15 13:02:01       41 阅读
  6. docker日志在哪看?怎么在Linux服务器中查看日志

    2024-03-15 13:02:01       48 阅读