feat: add the volume to the Pulumi stack

This commit is contained in:
Dan Anglin 2023-02-22 22:29:57 +00:00
parent d6d07a567a
commit 9ff85d3438
Signed by: dananglin
GPG key ID: 0C1D44CFBEE68638
3 changed files with 27 additions and 5 deletions

2
config

@ -1 +1 @@
Subproject commit bbb8123ffb9781d818da1bff92d92dd8a0bbe009
Subproject commit 1804b71954a073f75daa95b20e5b35e50b4dd60a

View file

@ -12,7 +12,6 @@ type platform struct {
Instance instanceConfig `json:"instance"`
Region string `json:"region"`
Tags []string `json:"tags"`
TempIP string `json:"tempIP"`
Volumes []volumeConfig `json:"volumes"`
}

29
main.go
View file

@ -32,7 +32,7 @@ func infra(ctx *pulumi.Context) error {
return fmt.Errorf("unable to manage the domain; %w", err)
}
if err := records(ctx, p); err != nil {
if err := records(ctx, p, instance.Instances[0].Ipv4s[0]); err != nil {
return fmt.Errorf("unable to manage the domain records; %w", err)
}
@ -40,6 +40,10 @@ func infra(ctx *pulumi.Context) error {
return fmt.Errorf("unable to manage the firewall; %w", err)
}
if err := volumes(ctx, p, instance.Instances[0].Id); err != nil {
return fmt.Errorf("unable to manage the volumes; %w", err)
}
return nil
}
@ -79,7 +83,7 @@ func domain(ctx *pulumi.Context, cfg *platform) error {
return nil
}
func records(ctx *pulumi.Context, cfg *platform) error {
func records(ctx *pulumi.Context, cfg *platform, instanceIPv4 string) error {
domainName := cfg.Domain.Name
domainArgs := linode.LookupDomainArgs{
@ -101,7 +105,7 @@ func records(ctx *pulumi.Context, cfg *platform) error {
DomainId: pulumi.Int(domainID),
Name: pulumi.String(r.Name),
RecordType: pulumi.String(r.Type),
Target: pulumi.String(cfg.TempIP),
Target: pulumi.String(instanceIPv4),
TtlSec: pulumi.Int(r.TtlSec),
}
@ -148,3 +152,22 @@ func firewall(ctx *pulumi.Context, cfg *platform, instanceID int) error {
return nil
}
func volumes(ctx *pulumi.Context, cfg *platform, instanceID int) error {
for _, v := range cfg.Volumes {
args := linode.VolumeArgs{
Label: pulumi.String(v.Label),
LinodeId: pulumi.Int(instanceID),
Region: pulumi.String(cfg.Region),
Size: pulumi.Int(v.Size),
Tags: pulumi.ToStringArray(cfg.Tags),
}
_, err := linode.NewVolume(ctx, v.Label, &args, pulumi.Protect(true))
if err != nil {
return fmt.Errorf("unable to update volume; %w", err)
}
}
return nil
}