sprinkle-tool / sprinkle

Sprinkle is a software provisioning tool you can use to build remote servers with. eg. to install a Rails, or Sinatra stack on a brand new slice directly after its been created
https://github.com/sprinkle-tool/sprinkle
MIT License
1.15k stars 138 forks source link

Configuring machines in different states #95

Open akjones opened 11 years ago

akjones commented 11 years ago

When I run sprinkle against a cluster of servers that are in different states (ie one has already been successfully configured by sprinkle (machine A) and one hasn't (machine B)), machine A gets everything installed again at the same time as B.

Is this the expected behaviour? I'd expect that if A has a package installed and it verifies, but B doesn't, then only B will have the package installed (rather than both of them).

joshgoebel commented 11 years ago

Verifications and installs are all clustered. If any verification fails then the package in question will attempt to install on all servers.

I'm not sure whether to categorize this as a bug or feature request. I totally understand your thinking, and it seems like the right behavior. You're the first person to notice though. One quick fix is to comment out certain server lines to do fresh deploys against a new host without affecting existing hosts.

akjones commented 11 years ago

Ok, thanks. We've been using a different workaround - we use capistrano's host filtering mechanism to target sets of machines which also seems to work well.

Perhaps this could be a feature request for the future?

wjbuys commented 11 years ago

+1, this is particularly useful if the step does something resource-intensive.

joshgoebel commented 11 years ago

There is no disagreement that this should happen. :) As far as I know it's not a super-simple problem to solve though.

joshgoebel commented 11 years ago

I would be possible with SSH, but only thanks to the currently slow each implementation. When you get into concurrently running things across multiple servers at exactly the same time (optimal) it gets messy.