Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I've created a set of nifty set of Makefiles for repeating the steps to provision and maintain many AWS clusters.

The benefits of make have been:

  • the bulk of the execution are various shell commands These are clearly specified and easy to maintain within make.
  • the whole process fails if any individual step fails (unlike bash)
  • I can bake parameterized commands into make recipes (with hackery)
  • I can specify dependencies to these commands (with hackery)

However, through much of this I've been feeling like make is a poor match for the task. Parameterized commands are a terrible hack implemented by calling make calling itself again with new parameters. Conditional execution is horrible in make. Simple tasks like if CHECK_SERVER_STARTED(params) then START_SERVER(params); COLLECT_DATA_FILES(params) if server_was_stopped_at_the_start(params) then STOP_SERVER(params);

Also, dependency tracking using files is a terrible idea.

There must be a better way. Is there a good language I can have:

  • shell commands trivially run (ideally part of the language) (i.e. not Python, Perl)
  • conditionals, branching, failure-case handling, etc... are all built in
  • loops
  • local variables (or at least something like a stack, so that I can call a function and not have thing piss all over my global variables).
share|improve this question

closed as primarily opinion-based by Zoredache, EEAA, Falcon Momot, MadHatter, Sven Mar 29 '14 at 9:07

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise.If this question can be reworded to fit the rules in the help center, please edit the question.

Configuration Managment. Puppet, Cheft, Salt, Ansible, etc... – Zoredache Mar 29 '14 at 1:11

This hurts to read... Sooo complex!

Yes, of course there is a better way. Part of being a pro is keeping abreast of changes in technology. Configuration management is what you're looking for, and has been around for a number of years. Most of your problems have been solved.

share|improve this answer
Thank you. Clearly I have come to the right place. – user14645 Mar 30 '14 at 5:09

Not the answer you're looking for? Browse other questions tagged or ask your own question.