Cimpress-MCP / vagrant-orchestrate

Cross platform deployment orchestration to existing managed servers using vagrant provisioners
Other
19 stars 13 forks source link

Add deployment strategies #12

Closed chrisbaldauf closed 9 years ago

chrisbaldauf commented 9 years ago

This adds 5 deployment strategies that can be set either via the command line or through Vagrantfile config. The strategies are fully documented in docs/strategy.md, but I can summarize:

These can be passed on the command line with --strategy parallel or set in the Vagrantfile with config.orchestrate.strategy = :parallel.

Prompting can be surpressed via the command line with -f or --force or in the Vagrantfile with config.orchestrate.force_push = true

@maclennann @potashj

potashj commented 9 years ago

I like the prompt between groups. Makes the canary strategy useful. The "blue_green" however seems to be more of a half-canary than a true blue green. What I mean is, instead of the live set of machines (say blue) being replaced by the upgraded set (green), followed by the blue set being taken out of commission, you're just provisioning half and then the other. Not sure if the disconnect between the implementation and the implication is worthy of a rename, but just something to consider.

maclennann commented 9 years ago

I dig it. It would be nice if it gave more debug log information about what it was going to do or had just done (e.g. "deploying to next # machines" or "deploying to hosta,hostb,hostc")

chrisbaldauf commented 9 years ago

@maclennann +1 for more debugging information. I'll add it.

chrisbaldauf commented 9 years ago
...
DEBUG push: Finished orchestrating push to group number 1 of 2.
DEBUG push: Orchestrating push to group number 2 of 2.
DEBUG push:  -- Hosts: server2,server3,server4,server5,server6
...
ryanbreen commented 9 years ago

What does this message mean? What hosts are in group 1? server1?

chrisbaldauf commented 9 years ago

Yes, this is a snippet of the log from the middle (end of group 1 and start of group 2). The full output would be:

DEBUG push: Orchestrating push to group number 1 of 2.
DEBUG push:  -- Hosts: server1
...
DEBUG push: Finished orchestrating push to group number 1 of 2.
DEBUG push: Orchestrating push to group number 2 of 2.
DEBUG push:  -- Hosts: server2,server3,server4,server5,server6
...
DEBUG push: Finished orchestrating push to group number 2 of 2.
ryanbreen commented 9 years ago

Cool!