Before deployment, people might need to provide multiple information. For example, which nodes to deploy what services, use which tcp ports to listen on application endpoints, etc.
Even very careful person would make stupid mistakes! e.g, wrong ip format, invalid port, unsupported OS version, machine doesn’t have RAM, etc.
These human errors may not only fail your deployments, but also cause unexpected damages to your existing envs. Even mess up critical envs sometimes. So it’s better we enforce pre-check before update.
One-button click deployment is nice. Lots of DevOps practices drive this trend.
I usually enforce it via Chef + Jenkins:
- Core deployment is implemented by Chef
- Wrap up it as a jenkins job.
Consequently people only need to trigger the jenkins job with all parameters default.
Here is an example of Jenkins job:
Super easy, isn’t it?
Just one issue. The parameters!
People need to configure serverlist and chefjson for correctly. It’s a bit complicated.
Compared to documentation, it’s better we enforce pre-check. Very few people enjoy lengthy manuals. So try your best to help people to avoid common pitfalls and human errors.