Initial commit

This commit is contained in:
nemunaire 2026-05-08 16:43:16 +08:00
commit 8503b9794b
10 changed files with 921 additions and 0 deletions

84
heyform.go Normal file
View file

@ -0,0 +1,84 @@
package main
import (
"encoding/base64"
"os"
"github.com/pulumi/pulumi-oci/sdk/go/oci/core"
"github.com/pulumi/pulumi-oci/sdk/go/oci/identity"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config"
)
func setupHeyform(ctx *pulumi.Context, cfg *config.Config, compartment *identity.Compartment, subnet *core.Subnet) error {
// Get boot image
imageID := compartment.CompartmentId.ApplyT(func(id string) string {
images, _ := core.GetImages(ctx, &core.GetImagesArgs{
CompartmentId: id,
OperatingSystem: pulumi.StringRef("Canonical Ubuntu"),
OperatingSystemVersion: pulumi.StringRef("24.04 Minimal aarch64"),
SortBy: pulumi.StringRef("TIMECREATED"),
SortOrder: pulumi.StringRef("DESC"),
Shape: pulumi.StringRef(SHAPE_ARM64),
})
return images.Images[0].Id
}).(pulumi.StringOutput)
// Get availability domains
availabilityDomainName := compartment.CompartmentId.ApplyT(func(id string) string {
availabilityDomains, _ := identity.GetAvailabilityDomains(ctx, &identity.GetAvailabilityDomainsArgs{
CompartmentId: id,
})
return availabilityDomains.AvailabilityDomains[0].Name
}).(pulumi.StringOutput)
// Load cloudinit
userData, err := os.ReadFile("cloud-init.yaml")
if err != nil {
return err
}
// Create an OCI instance
instance, err := core.NewInstance(ctx, "heyform-instance-1", &core.InstanceArgs{
AvailabilityDomain: availabilityDomainName,
CompartmentId: compartment.ID(),
DisplayName: pulumi.Sprintf("%s-heyform", ctx.Stack()),
Shape: pulumi.String(SHAPE_ARM64),
ShapeConfig: core.InstanceShapeConfigArgs{
Ocpus: pulumi.Float64(1),
MemoryInGbs: pulumi.Float64(8),
},
SourceDetails: &core.InstanceSourceDetailsArgs{
SourceId: imageID,
SourceType: pulumi.String("image"),
},
CreateVnicDetails: &core.InstanceCreateVnicDetailsArgs{
AssignIpv6ip: pulumi.Bool(true),
SubnetId: subnet.ID(),
DisplayName: pulumi.Sprintf("%s-heyform", ctx.Stack()),
},
ExtendedMetadata: pulumi.Map{
"FORM_ENCRYPTION_KEY": cfg.RequireSecret("heyform_form_encryption_key"),
"SESSION_KEY": cfg.RequireSecret("heyform_session_key"),
"SENSUS_API_KEY": cfg.RequireSecret("sensus_api_key"),
"SMTP_USER": cfg.RequireSecret("smtp_user"),
"SMTP_PASSWORD": cfg.RequireSecret("smtp_password"),
"RESTIC_REPOSITORY": pulumi.String("s3:blob.nemunai.re/zbackup-heyform"),
"RESTIC_PASSWORD": cfg.RequireSecret("restic_password"),
"RESTIC_AWS_ACCESS_KEY_ID": cfg.RequireSecret("restic_aws_access_key_id"),
"RESTIC_AWS_SECRET_ACCESS_KEY": cfg.RequireSecret("restic_aws_secret_access_key"),
},
Metadata: pulumi.Map{
"user_data": pulumi.String(base64.StdEncoding.EncodeToString(userData)),
"ssh_authorized_keys": pulumi.String(SSH_AUTHORIZED_KEYS),
},
})
if err != nil {
return err
}
// Export the public-ip
ctx.Export("heyform-instance-ip", instance.PublicIp)
return nil
}