Every manual setup is invisible debt. Automated software installation remains the neglected child of many projects, even among teams that call themselves DevOps. The result: hours wasted configuring workstations, servers drifting apart from each other, and bugs nobody can reproduce because "it works on my machine."
- ⏱️ Massive time waste: a manual installation repeated across 10 workstations takes 5 to 10 times longer than a script.
- 🛠️ Accessible tooling: shell scripts, Ansible, and Docker cover 90% of use cases with no dedicated tool budget.
- ⚠️ A script alone is not enough: without versioning, tests, and documentation, automation becomes a new risk.
- 🎯 The team makes the difference: your developers' technical maturity determines the quality of your automation.
The real question is not whether you should automate. It is understanding why, despite mature and free tools, so many teams keep installing their software by hand.
Manual installations cost more than you think
Why is the cost so hard to see?
The problem with manual installations is that they never appear on a Jira ticket. Nobody creates a task called "configure my workstation for 4 hours." The time dissolves into the onboarding day, into the "small tweaks" on a Friday afternoon, into the Teams calls where one dev walks a colleague through the process step by step.
According to Intuz's practical guide, the benefits of automation boil down to four pillars: efficiency, consistency, scalability, and error reduction. That framing is accurate, but it misses a fifth pillar I see every day: environment reproducibility.
A server configured by hand in January no longer resembles the same server in June. Packages have been updated manually, a colleague added a "temporary" dependency that stuck around, and the network configuration was patched without anyone documenting it. I have seen teams spend two weeks debugging a problem that simply came down to a different library version between production and staging.
The real cost is not the installation time. It is the time lost figuring out why two machines that should be identical are not.
When a simple OS upgrade becomes an obstacle course
A thread on r/ItalyInformatica illustrates the problem from the end-user side. A contributor tries upgrading to Windows 11 via Windows Update: the system says the PC is compatible, then stops offering the update. Comments range from "download the ISO and mount it yourself" to "do a full backup first." Another user reports that the installation via the assistant took hours, failed the first time due to insufficient space, and then required an external drive.
This kind of friction, multiplied across 50 workstations in an SMB, turns a routine upgrade into a full-blown project. With an automated installation script and an upstream validation process, the whole thing is handled in a single command.
The approaches that change the game in 2026
How do you choose between a shell script and a configuration management tool?
The choice depends on the scale and lifespan of your infrastructure. For a one-off setup (dev workstation, test VM), a bash or PowerShell script gets the job done. According to the GeeksforGeeks guide, a simple Python script using the subprocess module is enough to automate the download and silent installation of software on Windows.
When the fleet grows, configuration management tools take over. Ansible is the most accessible: no agent to install on target machines, readable YAML playbooks, and a reasonable learning curve for a backend developer. A hands-on demonstration by Learn Linux TV shows that in just a few minutes, an Ansible playbook installs and configures packages across multiple machines in parallel. Puppet and Chef are more powerful for complex infrastructures, but require a heavier upfront investment.
Containerization with Docker represents a third path that I systematically recommend to my clients. Instead of installing software on an OS, you bundle everything into a container. The environment is identical everywhere: locally, in staging, in production. No more surprises.
| Approach | Initial complexity | Scalability | Reproducibility | Typical use case |
|---|---|---|---|---|
| Shell/Python script | Low | Limited | Moderate | Dev workstation, single VM |
| Ansible | Moderate | High | High | Server fleet, onboarding |
| Docker | Moderate | Very high | Complete | Microservices, CI/CD |
| Puppet/Chef | High | Very high | High | Enterprise infra, compliance |
| Preseed/Kickstart | High | High | High | Large-scale OS deployment |
SOURCE: synthesis of Intuz, GeeksforGeeks, Acronis guides · Updated 05/2026
According to Acronis, MSPs (Managed Service Providers) that adopt deployment automation significantly reduce configuration errors and support tickets related to installations. This finding applies equally to internal teams.
Should you containerize everything?
No. I say this because I see too many teams rushing to Docker without asking whether it is worth the effort. A 30-line bash script that installs your 5 dev tools works perfectly fine for onboarding. Containerization makes full sense when you have multiple environments to maintain over time: several services, several versions, several clients.
The classic trap: creating a Dockerfile that works, never updating it, and ending up with an 18-month-old image packed with known security vulnerabilities. Automation without maintenance is worse than manual installation, because it creates a false sense of security.
A script does not make an automation strategy
Why do cobbled-together scripts eventually break?
The difference between a script that works and an automation strategy comes down to three words: versioning, tests, documentation. A script sitting on your lead developer's desktop is not automation. It is a single point of failure disguised as progress.
Intuz confirms this in their best practices: store your scripts in a Git repository, add error handling, test in an isolated environment before deploying to production, and never hardcode passwords. This advice sounds obvious. Yet I find that the majority of installation scripts I review at prospective clients follow none of these principles.
Serious automation also means thinking about idempotency: your script must be able to run multiple times without breaking the machine's state. If the second execution overwrites the configuration from the first, you have a problem. Ansible handles this natively (each task checks the state before acting), but a standard bash script requires deliberate attention.
For a deeper look at the DevOps practices that structure this kind of workflow, I covered the tools and the ground-level reality in our article on DevOps in 2025.
How do you integrate automation into an existing CI/CD workflow?
The next step after a local script is integration into your CI/CD pipeline. Your Dockerfile or Ansible playbook becomes a versioned artifact, tested on every commit, deployed automatically. Setting up a new server or dev workstation goes from "ask Marc, he knows how to do it" to "run the pipeline, it is done in 10 minutes."
A concrete example from the ServiceNow community illustrates this ambition: a team is working on connecting ServiceNow's service catalog to Microsoft Intune so that every approved software request automatically triggers deployment on the employee's workstation, with zero IT intervention. The principle is sound. The complexity lies in the integration (authentication, APIs, error handling), not in the idea itself.
Automation is not a project. It is an ongoing discipline.
The engineering team matters as much as the tool
Full transparency: I run an offshore software consultancy in Vietnam, so I have an obvious bias on this topic. That is also why I know the concrete limits of automation when it is poorly managed.
Why doesn't AI replace the need for skilled engineers?
Generative AI tools like Claude Code can now produce an installation script in 30 seconds. The script will probably work on your machine. The problem starts when you need to deploy it across 20 different machines, handle edge cases (different OS versions, network proxies, security policies), and maintain it over time.
I see the same pattern with AI-assisted automation: the tool accelerates a developer who knows what they are doing, but it does not turn a junior into a DevOps architect. The ability to structure an automation strategy (what to automate, in what order, with what safeguards) remains an engineering skill.
According to Gartner, 70% of organizations plan to increase their IT automation investments by 2027. The market has no shortage of tools. What is missing are teams capable of deploying them properly.
"A script generated by AI in 30 seconds is worthless without the engineer who can test it, version it, and maintain it for 3 years."
Vincent, May 2026
My experience is clear on this: a small, senior engineering team, well-equipped and AI-assisted, automates faster and more cleanly than a large team that stacks tools without discipline. Headcount is not the deciding factor. What matters is their ability to think in systems: version, test, document, iterate.
The AI First blog covers in detail how SMBs are concretely integrating AI into their technical processes, if you want to see these principles applied in practice.
What separates a makeshift setup from an industrialized installation is rarely the tool budget. It is the rigor of the team implementing it. Automate your software installations, yes, without hesitation. But entrust that automation to engineers who think about maintenance, not just "it works on my machine."
Frequently asked questions
What is the best tool for automating software installation?
There is no universal answer. For a fleet of fewer than 10 machines, a bash or Python script is more than enough. Beyond that, Ansible offers the best simplicity-to-power ratio. Docker is ideal if you are already working with microservices. The choice depends on your existing infrastructure and your team's skill set.
How long does it take to set up installation automation?
A basic script takes a few hours to write and test. A complete strategy with Ansible, a Git repository, tests, and documentation takes between one and three weeks for an SMB. The investment pays for itself by the third deployment or the second onboarding.
Is installation automation risky?
The main risk is deploying an untested script to production. By adding tests in an isolated environment, Git versioning, and error handling, the risk drops below that of manual installation. Automation reduces human error, provided it is treated as real code.
Can you automate software installation on Windows?
Yes. PowerShell covers most scenarios on Windows. Tools like Chocolatey (a package manager) or WinGet (built into Windows 11) simplify the process further. For enterprise environments, Microsoft Intune combined with a service catalog enables fully automated deployment.
Do you need DevOps skills to automate your installations?
Basic scripting knowledge (bash or PowerShell) is enough to get started. DevOps skills become necessary when you integrate automation into a CI/CD pipeline or manage a fleet of servers. The key is to treat your scripts as code: versioned, tested, documented.
Vidéos YouTube
Discussions Reddit
Articles & ressources
- How to Automate Software Installation at Setup · intuz.com
- Python Script to Automate Software Installation · geeksforgeeks.org
- The ultimate guide to automated software deployment for MSPs and IT admins · acronis.com
- Guidance on Automating Software Installation via ServiceNow and Microsoft Intune Integration · servicenow.com

