command.go
1 // https://www.pulumi.com/registry/packages/command/ 2 package providers 3 4 import ( 5 "github.com/pulumi/pulumi-command/sdk/go/command/local" 6 "github.com/pulumi/pulumi-command/sdk/go/command/remote" 7 "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 8 ) 9 10 func Command(ctx *pulumi.Context, enable bool) error { 11 if !enable { 12 return nil 13 } 14 15 // Optional: shared entropy / trigger 16 random, err := local.NewCommand(ctx, "fleet-trigger", &local.CommandArgs{ 17 Create: pulumi.String("openssl rand -hex 16"), 18 }) 19 20 if err != nil { 21 return err 22 } 23 24 ctx.Export("openssl", random.Stdout) 25 26 remoteAsset := pulumi.NewRemoteAsset("https://dietpi.com/downloads/images/DietPi_RPi234-ARMv8-Trixie.img.xz -o DietPi_RPi234-ARMv8-Trixie.img.xz") 27 28 ctx.Export("archive", remoteAsset.ToAssetOrArchiveOutput()) 29 30 // example, err := remote.NewCopyToRemote(ctx, "copyToRemoteResource", &remote.CopyToRemoteArgs{ 31 // Connection: &remote.ConnectionArgs{ 32 // Host: pulumi.String("ubuntu"), 33 // User: pulumi.String("mfarabi"), 34 // }, 35 // RemotePath: pulumi.String("string"), 36 // Source: archive, 37 // Triggers: pulumi.Array{ 38 // pulumi.Any("any"), 39 // }, 40 //} ) 41 42 // if err != nil { 43 // return err 44 //} 45 46 cmd, err := remote.NewCommand(ctx, "install nix on ubuntu", &remote.CommandArgs{ 47 Connection: &remote.ConnectionArgs{ 48 Host: pulumi.String("ubuntu"), 49 User: pulumi.String("root"), 50 }, 51 Create: pulumi.String("curl -fsSL https://install.determinate.systems/nix | sh -s -- install --no-confirm --extra-conf 'trusted-users = root mfarabi'"), 52 Delete: pulumi.String("/nix/nix-installer uninstall --no-confirm"), 53 Update: pulumi.String(` 54 apt update 55 apt upgrade -y 56 apt autoremove -y 57 `), 58 59 Logging: remote.LoggingStdout, 60 }) 61 62 if err != nil { 63 return err 64 } 65 66 ctx.Export("stdout", cmd.Stdout) 67 68 cmd, err = remote.NewCommand(ctx, "clone repository on ubuntu", &remote.CommandArgs{ 69 Connection: &remote.ConnectionArgs{ 70 Host: pulumi.String("ubuntu"), 71 User: pulumi.String("mfarabi"), 72 }, 73 Create: pulumi.String("git clone https://github.com/MFarabi619/MFarabi619"), 74 Delete: pulumi.String("rm -rf ~/MFarabi619"), 75 Update: pulumi.String("echo 'repo already cloned'"), 76 Logging: remote.LoggingStdout, 77 }) 78 79 if err != nil { 80 return err 81 } 82 83 ctx.Export("stdout", cmd.Stdout) 84 85 cmd, err = remote.NewCommand(ctx, "install nix ubuntu-s-1vcpu-1gb-50gb-mon1-01", &remote.CommandArgs{ 86 Connection: &remote.ConnectionArgs{ 87 Host: pulumi.String("ubuntu-s-1vcpu-1gb-50gb-mon1-01"), 88 User: pulumi.String("root"), 89 }, 90 Create: pulumi.String("curl -fsSL https://install.determinate.systems/nix | sh -s -- install --no-confirm --extra-conf 'trusted-users = root ubuntu'"), 91 Delete: pulumi.String("/nix/nix-installer uninstall --no-confirm"), 92 Update: pulumi.String(` 93 apt update 94 apt upgrade -y 95 apt autoremove -y 96 `), 97 98 Logging: remote.LoggingStdout, 99 }) 100 101 if err != nil { 102 return err 103 } 104 105 ctx.Export("stdout", cmd.Stdout) 106 107 cmd, err = remote.NewCommand(ctx, "clone repository on ubuntu-s-1vcpu-1gb-50gb-mon1-01", &remote.CommandArgs{ 108 Connection: &remote.ConnectionArgs{ 109 Host: pulumi.String("ubuntu-s-1vcpu-1gb-50gb-mon1-01"), 110 User: pulumi.String("ubuntu"), 111 }, 112 Create: pulumi.String("git clone https://github.com/MFarabi619/MFarabi619"), 113 Delete: pulumi.String("rm -rf ~/MFarabi619"), 114 Update: pulumi.String("echo 'repo already cloned'"), 115 Logging: remote.LoggingStdout, 116 }) 117 118 if err != nil { 119 return err 120 } 121 122 ctx.Export("stdout", cmd.Stdout) 123 124 return nil 125 }