Hi! I'm new here (especially to slack) but have be...
# general
p
Hi! I'm new here (especially to slack) but have been planning to use Pulumi for the launch of my project for over a year and have gotten into it very seriously recently after refreshing on concepts with the continuous delivery and infrastructure as code books. I actually started with a homebrew solution to get stuff operational and SSH in and set stuff up with the digitalocean API directly, then tried terraform, then discovered and went for the pulumi automation API and have been playing around with it and pulumi for weeks now, and I gotta say I absolutely love it and am at the point where I've achieved an ease and separation of concerns typical of good application code (attaching earlier screenshot for reference of the high point I've experienced recently with this). This leads me to my problem... and I wouldn't ask here unless I was desperate. I'm using pulumi and doing infrastructure as code because I want to be able to deploy manage servers in a largely immutable fashion, e.g. if I have some files on my computer I want hosted on (maybe a contrived example given that S3 buckets can be used) but that I want hosted on NGINX somewhere, the ideal workflow would be to create a server, upload them, assign a floating IP to the server and use that to connect, then when I change the files, I'd also want this immutable workflow where I create another server, upload all of the files over SSH (separately from the creation of the droplet in the lifecycle) and only when all of them are there switch to the new server. Although this particular example is contrived, I was really looking towards writing components like this and to incorporate some sort of smoke tests. Things I tried include: 1) Trying to get a ComponentResource which includes my droplet replaced, but when I did this replace_on_changes didn't work for my input property and it did not get replaced, just a change detected iirc. 2) I also tried tainting the component resource manually and getting it replaced with ``pulumi state taint``but it changed none of the children. 3) I tried adding a local command to my component, having it depend on the droplet and having it fail, and I know that failing dependent resources won't change anything, I did this in isolation, see screenshot 3. This also leads me to an adjacent but equally relevant issue 1) What am I supposed to do If I want to make a component where I take the name of a docker image to install and port to publish, and then have the encapsulated droplet get redeployed/replaced with a new one? If the name if the input to the component changes then all of the internal components stay the same especially if I'm setting them up with a command, I've considered making a hash of the inputs and changing the name of the droplets for this but haven't thought far enough ahead about the implications. Any help would be appreciated, even if it's that Pulumi doesn't support this use case in any capacity, or if it requires something more complex, I'm not above getting my hands dirty if need be.