2

I am working on trying to replace (improve) in our project our deployment process, trying as much as possible to automate it. Currently we are using plain shell script. I've done some research on Fabric and Capistrano to see if they could help our deployment automation.

Deployment tools (i.e. Capistrano, Fabric) do almost the same thing as using a shell script.

Beside having up your sleeve a high-level programming language, what advantages would I have to use a deployment versus plain shell script?

2 Answers 2

1

The right "fit" for deployment I think has a lot to do with the size, complexity, and operational profile of your deployment. If your app runs on a single machine and you only spin up new instances once in a while and you can actually successfully automate that entirely in shell, count your blessings and use that shell script while you can. There is value in simplicity.

At some point as your deployment architecture, cluster size, team size, number of staging/test environments, deployment frequency, etc grows, it makes sense to graduate to the next level of sophistication with something like Fabric or similar. There are both costs and advantages. The main advantages, or really the way I think of it, requirements that are really difficult to meet in a shell script, are things like remote deployment to multiple targets simultaneously, idempotent re-application of scripts to already-deployed instances. Don't get caught up in the slickness of the higher level languages (python, ruby, etc), third party modules you can use, etc. Stick to the basics. Only pay for deployment complexity you really need to meet requirements and when simple scripts work, stick with them. Case study: many pieces of Solaris exist as Korn shell scripts and have worked properly for 10+ years. A small amount of Fabric/Capistrano/Puppet/Chef/Etc orchestrating a solid set of shell scripts can handle most of the medium range of the deployment spectrum.

Sign up to request clarification or add additional context in comments.

Comments

0

The biggest advantage of using pre-existing tools is that you don't have to reinvent the wheel with each piece of software you wish to deploy. Repositories such as Puppet Forge are likely to contain solutions for you. If they don't, you can always share your solution with the community. Quid pro quo and all that.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.