Automation that removes the manual step
Why this matters
DevOps Fundamentals is 10% of the exam across six scope bullets, which means each one is tested at breadth rather than depth. The examiner wants to know that a cloud practitioner understands what these practices are for, not that they can operate any particular tool.
Automation is the root of the domain. Everything else here — source control, pipelines, integration, tooling, event-driven design — is a way of automating something, and CompTIA's bullet is plainly practical: using tools to streamline cloud operations.
The judgement being tested is knowing what to automate. Automating the wrong thing produces a brittle script that fails at three in the morning and is harder to debug than the manual process it replaced.
The lesson
Finding the step worth automating: frequent, error-prone, and well understood
Three qualities make a task a good candidate, and a task needs all three.
Frequent. The return is proportional to how often it runs. Something done monthly rarely justifies much effort; something done twenty times a day almost always does.
Error-prone or consequential. Tasks where a human mistake is likely or expensive — a multi-step process, something done under time pressure, something touching production. Here automation buys consistency even when it saves little time, and consistency is often the real prize.
Well understood. The most important and most skipped. Automating a process nobody can describe produces automation that encodes the misunderstanding and executes it faster. Document it manually first; automate the documented version.
Bad candidates, worth recognising:
- Tasks that are rare and complex. The effort exceeds the return, and automation nobody exercises rots quietly until it fails on the one occasion it is needed.
- Tasks needing genuine judgement. Automate the gathering of information and the execution of a decision; leave the decision where it belongs.
- Tasks that change constantly, where maintenance outruns the saving.
- The symptom of a broken process. If a task exists only because something upstream is wrong, fix the upstream thing rather than automating the workaround. Automating a workaround makes it permanent.
The honest rule of thumb: count the time spent, multiply by frequency, compare against build and maintenance cost. The maintenance half is what people omit, and it is why an estate can end up with more automation than it can keep working.
Beyond time saved, the benefits worth naming for the exam: consistency, speed, auditability (an automated action is logged), scalability, and documentation, since working automation is an executable description of the process.
Configuration management against provisioning, and the boundary between the two
Two related disciplines with a boundary that the exam expects you to place.
Provisioning creates infrastructure: networks, instances, storage, databases. This is infrastructure as code (objective 2.2), and it is declarative.
Configuration management configures what is inside an instance: packages, services, files, users, settings. Its tools are typically agentless or agent-based, describe desired state per host, and enforce it repeatedly.
Where the boundary falls depends on the model:
- Mutable infrastructure. Provision instances, then use configuration management to configure them and to keep them configured — re-running periodically to correct drift. The traditional split.
- Immutable infrastructure (objective 3.1). Configuration management runs at image build time, producing a fully-configured image; provisioning then creates instances from it and nothing is configured afterwards. The configuration-management tool has moved into the build pipeline.
The second is the direction of travel and the one that fits the rest of this course, but the first is still widespread — for long-lived stateful systems, for appliances, and for estates that have not moved. Both are legitimate; what is not legitimate is being unclear about which you are doing, because configuring a running instance in an immutable model is a change that disappears at the next replacement.
A third category worth naming is operational automation: tasks that are neither provisioning nor configuration — rotating a credential, taking a snapshot before a change, resizing a volume that is filling, opening a ticket when a check fails. Those are the runbook steps this lesson is really about.
Idempotent automation that is safe to run twice, and the script that is not
Idempotence reappears from objective 2.2 because it is the property that makes automation safe to operate.
An idempotent action produces the same result whether it runs once or five times. ensure this user exists is idempotent; create this user is not. ensure this line is in the file is idempotent; append this line is not.
Why it matters operationally rather than theoretically:
- Automation fails midway. Networks drop, APIs time out, processes are killed. Recovery means running it again, and that is only safe if it is idempotent.
- Automation gets run twice. Two people, a retry, an overlapping schedule.
- Enforcement requires it. An action safe to run repeatedly can run on a schedule and continuously correct drift.
Writing it that way means: check before acting; make actions declarative where you can; use tooling that provides idempotence rather than hand-rolling it; and where an operation genuinely cannot be repeated — sending a payment, sending a notification — use an idempotency key so the receiving system recognises the duplicate. That mechanism reappears in objective 5.4.
Two companions to idempotence in reliable automation:
- Fail fast and loudly. Automation that fails silently is worse than none, because everyone believes the task was done. Check results, exit non-zero, and alert.
- Make it re-runnable from the start, rather than requiring manual cleanup before a retry.
Scheduled and event-triggered automation, and choosing between them
Two ways to start automation, and the distinction is genuinely examinable.
Scheduled. Runs on a clock: nightly backups, weekly reports, hourly reconciliation, scaling for known patterns (objective 3.1). Simple, predictable and easy to reason about. Its weaknesses: it runs whether or not there is anything to do, it responds only at the next interval, and a lot of small schedules across an estate become a coordination problem.
Event-triggered. Runs in response to something happening: a file uploaded, a resource created, a metric crossing a threshold, a configuration changed, a message arriving. Responds immediately, does no work when nothing happens, and is the natural fit for a cloud where the platform emits events for almost everything.
Event-driven automation is the more powerful pattern in a cloud, and it is what makes several controls in this course practical:
- A resource created without required tags triggers a function that tags it or flags it (objective 1.8).
- A security group modified to allow unrestricted inbound triggers an immediate alert or automatic reversion (objective 6.5).
- An object uploaded triggers processing, with no polling.
- A finding from the security service triggers a containment action (objective 6.3).
Choosing: use events where the trigger is an actual occurrence and latency matters; use schedules for periodic work, for reconciliation, and as a safety net. The mature pattern is often both — event-driven for responsiveness, plus a periodic sweep that catches anything the event path missed, because event delivery is not guaranteed to be perfect.
Objective 5.6 develops event-driven architecture properly; here it is simply the better trigger for most operational automation.
Automation as an auditable change, with its own review and rollback
The closing discipline, and the one that separates automation from scripts lying around.
Automation makes changes to production. It is therefore subject to the same controls as any other change — the change management from objective 3.1 — and frequently it is not, because it feels like tooling rather than like a change.
What that means concretely:
- It lives in source control, with history and review (objective 5.2). A script on someone's laptop, or pasted into a console scheduler, is an unreviewed production change mechanism.
- It is reviewed like application code, because it has at least as much power.
- It is tested — in a non-production environment, against realistic data, including its failure paths.
- It logs what it did, with enough detail to reconstruct the action later. "The automation ran" is not an audit trail; "the automation deleted these fourteen snapshots at this time" is.
- It has a rollback, or is deliberately limited to actions that do not need one.
- It has an owner, because unowned automation is the definition of something nobody will fix.
And it carries privilege, which makes it a security concern in its own right:
- Least privilege (objective 4.2). Automation that deletes snapshots needs permission to delete snapshots and nothing else. The convenient administrative role is how a small bug becomes a large incident.
- Platform identity rather than stored keys, per objective 2.4.
- Guardrails on destructive actions — dry-run modes, a limit on how many objects a single run may delete, and a refusal to proceed if the count exceeds what is expected. That last one is a very effective control: a cleanup job that normally removes five things and suddenly proposes five thousand should stop and ask.
What to take into the exam
- Automate what is frequent, error-prone and well understood. Document the manual process first — automating a misunderstood one encodes the misunderstanding.
- Do not automate a workaround for a broken upstream process; fix the process.
- Provisioning creates infrastructure; configuration management configures inside it. Under immutability, configuration management moves into the image build, and configuring a running instance is a change that disappears.
- Idempotence makes automation safe to retry and to run on a schedule. Use an idempotency key where an action genuinely cannot repeat.
- Fail loudly. Silent failure is worse than no automation.
- Events for occurrences, schedules for periodic work — and often both, with a sweep as a safety net.
- Automation is a production change: source-controlled, reviewed, tested, logged, owned, least-privileged, and guarded against unexpectedly large destructive runs.
Practise what you just read
1. Which task is the poorest candidate for automation?
Select one
Show answer
A. Automating a process nobody can describe encodes the misunderstanding and executes it faster. Rare tasks also fail the return test, and automation nobody exercises rots until it fails on the one occasion it is needed.
2. What should be done before automating a manual process?
Select one
Show answer
B. The documented version is what gets automated. Skipping it means the automation reflects one person's memory of the process, including the steps they perform without noticing and the ones they have quietly stopped doing.
3. A task exists only because an upstream process is broken. What is the correct response?
Select one
Show answer
C. Automating a workaround makes it permanent and removes the pressure that would otherwise have fixed the real problem. It is one of the clearest cases where automation is the wrong answer.
7 more questions on this objective are part of the full course.
Hands-on labs
Part of the free CompTIA Cloud+ CV0-004 course — 50 lessons and 86 hands-on labs.
This is an independent study companion for CompTIA Cloud+ CV0-004 and is not produced by or endorsed by CompTIA.