For decades UNIX and UNIX-like systems (i.e. GNU/Linux, *BSD) paved the way for standard approach for configuring, managing and using operating systems. Those efforts lead to standards like POSIX and Filesystem Hierarchy Standard which define what, where and how is happening in a system. Most widely available software follows those and similar standards, and configuring it is pretty much straightforward - file formats and locations are well known and documented.
However most of the issues come after initial software install and setup, when changes start to happen:
- failing to go back to the previous working config file
- leaving debug statements enabled
- temporary enabling/disabling a feature and forgetting about it
- an innocent typo causing a syntax error
- different configurations across multiple copies that should be in sync
- and so on
Those are common issues observed during real-life operations even from system administrators and DevOps with a lot of experience. Some of the reason for those issues usually are:
- working under pressure
- juggling multiple tasks
- narrow time-frames to fix issues
- high demand for going faster to live/production systems
Most experienced systemd administrators and DevOps know that one of the best ways to fix those problems is by using automation and version control.
Automation can be achieved with different tools and it is not limited only to servers. For server configuration and infrastructure management usually the process of Infrastructure as code (IaC) is the preferred way to do automation. This means that all server installation and setup, as well as its configuration is kept in specially crafted template files. Later those are used by automation software to deploy infrastructure and apply changes to configuration. All those special files are kept in version control and all changes are tracked.
The software used for automation depends on the task that needs to be solved. Some prominent names are:
Our expertise is Ansible and shell script automation. At least this is our preferred toolset and main focus. Ansible is not limited only to servers and it comes with vast amount of modules for different cloud providers, APIs, network equipment and many more.
- server provisioning/deployment
- full server setup
- server configuration
- HAProxy configuration (multiple copies)
- EMQx cluster configuration
- Prometheus and Alertmanager automation
- Apache web server
- systemd services and timers
- LXC containerization
- complex multi-server setups
- environment separation and automation (development, staging, production)
- TLS certificate deployment automation
- dynamic host inventories
- shell scripting automation and scheduling
- and much more
Do you have a task that needs automation?
Do you need a consultation regarding automation?
Read about our development processes and operations automation package as well.