You need to enable JavaScript to run this app.
导航
使用Pulumi快速创建火山引擎ECS服务器
最近更新时间:2024.08.09 11:31:06首次发布时间:2024.08.09 11:31:06

操作场景

本文指导您如何使用 Go 语言和 Pulumi 管理火山引擎的基础设施。更多信息和示例请参考 Pulumi Go SDK 文档Volcengine Pulumi SDK

操作步骤

  1. 创建一个新的项目文件夹并进入该目录,然后使用 Pulumi 初始化一个新项目。

    mkdir my-volcengine-project
    cd my-volcengine-project
    // 以Go语言为例
    pulumi new go
    

  2. 在项目中,执行以下命令安装 Volcengine 的 Pulumi SDK。

    go get github.com/volcengine/pulumi-volcengine/sdk/go
    
  3. 编写 代码创建火山引擎ECS。

    package main
    
    import (
            "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
            "github.com/volcengine/pulumi-volcengine/sdk/go/volcengine/ecs"
            "github.com/volcengine/pulumi-volcengine/sdk/go/volcengine/vpc"
    )
    
    func main() {
            pulumi.Run(func(ctx *pulumi.Context) error {
                    fooZones, err := ecs.Zones(ctx, nil, nil)
                    if err != nil {
                            return err
                    }
                    fooVpc, err := vpc.NewVpc(ctx, "fooVpc", &vpc.VpcArgs{
                            VpcName:   pulumi.String("acc-test-vpc"),
                            CidrBlock: pulumi.String("172.16.0.0/16"),
                    })
                    if err != nil {
                            return err
                    }
                    fooSubnet, err := vpc.NewSubnet(ctx, "fooSubnet", &vpc.SubnetArgs{
                            SubnetName: pulumi.String("acc-test-subnet"),
                            CidrBlock:  pulumi.String("172.16.0.0/24"),
                            ZoneId:     pulumi.String(fooZones.Zones[0].Id),
                            VpcId:      fooVpc.ID(),
                    })
                    if err != nil {
                            return err
                    }
                    fooSecurityGroup, err := vpc.NewSecurityGroup(ctx, "fooSecurityGroup", &vpc.SecurityGroupArgs{
                            SecurityGroupName: pulumi.String("acc-test-security-group"),
                            VpcId:             fooVpc.ID(),
                    })
                    if err != nil {
                            return err
                    }
                    fooImages, err := ecs.Images(ctx, &ecs.ImagesArgs{
                            OsType:         pulumi.StringRef("Linux"),
                            Visibility:     pulumi.StringRef("public"),
                            InstanceTypeId: pulumi.StringRef("ecs.g2i.large"),
                    }, nil)
                    if err != nil {
                            return err
                    }
                    _, err = ecs.NewInstance(ctx, "fooInstance", &ecs.InstanceArgs{
                            InstanceName:       pulumi.String("acc-test-ecs"),
                            Description:        pulumi.String("acc-test"),
                            HostName:           pulumi.String("tf-acc-test"),
                            ImageId:            pulumi.String(fooImages.Images[0].ImageId),
                            InstanceType:       pulumi.String("ecs.g2i.large"),
                            Password:           pulumi.String("93f0cb0614A****"),
                            InstanceChargeType: pulumi.String("PostPaid"),
                            SystemVolumeType:   pulumi.String("ESSD_PL0"),
                            SystemVolumeSize:   pulumi.Int(40),
                            DataVolumes: ecs.InstanceDataVolumeArray{
                                    &ecs.InstanceDataVolumeArgs{
                                            VolumeType:         pulumi.String("ESSD_PL0"),
                                            Size:               pulumi.Int(50),
                                            DeleteWithInstance: pulumi.Bool(true),
                                    },
                            },
                            SubnetId: fooSubnet.ID(),
                            SecurityGroupIds: pulumi.StringArray{
                                    fooSecurityGroup.ID(),
                            },
                            ProjectName: pulumi.String("default"),
                            Tags: ecs.InstanceTagArray{
                                    &ecs.InstanceTagArgs{
                                            Key:   pulumi.String("k1"),
                                            Value: pulumi.String("v1"),
                                    },
                            },
                    })
                    if err != nil {
                            return err
                    }
                    return nil
            })
    }
    
  4. 部署基础设施。

    1. 在终端中,执行以下命令部署您的基础设施。

      pulumi up
      
    2. 回显将要创建的资源,输入yes确认。

  5. 管理和更新基础设施。

    • 如需更新基础设施,请再次执行 pulumi up命令。
    • 如需销毁资源,请执行pulumi destroy命令。
  6. 查看状态和历史,即当前资源的状态和历史变更。

    pulumi stack
    pulumi stack history