/ config / providers / command.go
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  }