Praktische tools voor systeem-, netwerk-, beveiligings- en operationsbeheerders.

SYS-C0258 · Provisioning & Config Management

Server Provisioning Guide

Install a host from a file you can read, and keep secrets out of cloud-init and kickstart.

Updated 25 October 2026 · Pillar guide

This is an original planning guide. It is not a vendor manual, an official standard, or legal advice. Example addresses use documentation ranges. Review every command before you paste it.

The first boot should match a file

Provisioning is how a new machine becomes the host in the ticket instead of a hand-built snowflake. cloud-init is the usual first-boot path for cloud images. Kickstart is the usual path for an Anaconda installer such as RHEL and the rebuilds. Other distros have their own installers. The distro pillars are the dialect after the host exists. This page is the file that builds it.

The file sets hostname, a user, authorized keys, packages, and maybe a network address. A password in the file is a secret in whatever stores the file. Use a key. If a form requires a password field, the note says prompt-for-this and the real value is injected by the secret store at build time, not committed. The generators on this site draft the file in the browser. Do not paste a live private key into them.

An image you reuse is better than a script that mutates a finished server every time someone needs a copy. Mutation after first boot belongs to configuration management, which should start from the image and not fight it. Two tools both installing the web server is how the listening port changes under you.

The first boot is tested by booting it once and reading what you got: hostname, user, SSH key login, and the absence of a password login if that was the decision. A file you have not booted is a draft.

A lab first boot with a key and a documentation address

The lab hostname is edge-01. The user is the named admin, not root with a password from a blog. SSH allows that user's key. Password authentication stays off only after the key works, which is the same order as the hardening guide. The lab address, if you set one, is 192.0.2.10/24 and the gateway is 192.0.2.1, and you replace both before any real network. A DHCP lab can skip the static address and say so.

The cloud-init or kickstart draft from the generator is diffed against an empty file so you see every line. Delete packages you do not need. Delete any user you do not know. Confirm the file does not contain a private key or a password. Then boot one VM from the virtualization guide and try the key.

If the boot fails, you do not debug it by enabling a password on the console and then leaving that password in the image. Fix the file and boot again from a clean disk. The console is for reading the error.

When the boot matches the ticket, save the file next to the image version. The next copy uses that pair. A hand fix on the running VM that is not copied back into the file will be missing on the next build.

# Review before you paste. Lab intent for a first-boot file.
# hostname: edge-01
# user: the named admin, SSH key only
# address example: 192.0.2.10/24 via 192.0.2.1
# Replace the address outside the lab.
# No password in the file. No private key in the file.
# prompt-for-this is a reminder, not a password to keep.

A change you can finish

A production image uses the real hostname pattern, the real admin key, and the real network from the network desk. Secrets come from the secret store at build time. You boot one canary before you boot twenty.

Rollback is to keep the previous image available and to destroy the canary if it is wrong and holds no unique data.

  1. Write hostname, user, and whether the address is DHCP or static.
  2. Draft the file and diff it. Remove unknown users and extra packages.
  3. Confirm no password and no private key are in the file.
  4. Boot one clean VM.
  5. Log in with the key. Confirm password login is not required for that test.
  6. Copy any console fix back into the file and boot clean again.
  7. Save the file and the image version together.

Mistakes that outlive the command

server provisioning fails in the same few ways. Each one looks finished on the day you type it. The list is here so the ticket can forbid them before the window, not so you can recognise them in an incident review.

Decisions to write down before the window

Decision 1 for server provisioning. The file is the source of truth. A console fix is copied back or thrown away. Write that decision in the ticket before you change the host. The proof is the smallest command or screen that confirms it, recorded with the hostname and the time. If the host disagrees, the ticket changes. A second change does not go on top of a failed check. The rollback is the previous value you wrote down, not a reboot that hides which line mattered.

Decision 2 for server provisioning. Authentication is a key. prompt-for-this never becomes a real password in git. Write that decision in the ticket before you change the host. The proof is the smallest command or screen that confirms it, recorded with the hostname and the time. If the host disagrees, the ticket changes. A second change does not go on top of a failed check. The rollback is the previous value you wrote down, not a reboot that hides which line mattered.

Decision 3 for server provisioning. The generator was given placeholders, not live secrets. Write that decision in the ticket before you change the host. The proof is the smallest command or screen that confirms it, recorded with the hostname and the time. If the host disagrees, the ticket changes. A second change does not go on top of a failed check. The rollback is the previous value you wrote down, not a reboot that hides which line mattered.

Decision 4 for server provisioning. One canary boots before a fleet. Write that decision in the ticket before you change the host. The proof is the smallest command or screen that confirms it, recorded with the hostname and the time. If the host disagrees, the ticket changes. A second change does not go on top of a failed check. The rollback is the previous value you wrote down, not a reboot that hides which line mattered.

Decision 5 for server provisioning. The address is DHCP or a prefix you own. 192.0.2.10 stays in the lab. Write that decision in the ticket before you change the host. The proof is the smallest command or screen that confirms it, recorded with the hostname and the time. If the host disagrees, the ticket changes. A second change does not go on top of a failed check. The rollback is the previous value you wrote down, not a reboot that hides which line mattered.

Decision 6 for server provisioning. Package list is short and matches the purpose from the fundamentals page. Write that decision in the ticket before you change the host. The proof is the smallest command or screen that confirms it, recorded with the hostname and the time. If the host disagrees, the ticket changes. A second change does not go on top of a failed check. The rollback is the previous value you wrote down, not a reboot that hides which line mattered.

Decision 7 for server provisioning. Configuration management starts after first boot and does not fight the image. Write that decision in the ticket before you change the host. The proof is the smallest command or screen that confirms it, recorded with the hostname and the time. If the host disagrees, the ticket changes. A second change does not go on top of a failed check. The rollback is the previous value you wrote down, not a reboot that hides which line mattered.

Decision 8 for server provisioning. The previous image remains available. Write that decision in the ticket before you change the host. The proof is the smallest command or screen that confirms it, recorded with the hostname and the time. If the host disagrees, the ticket changes. A second change does not go on top of a failed check. The rollback is the previous value you wrote down, not a reboot that hides which line mattered.

Decision 9 for server provisioning. Password SSH is off only after the key login worked on the canary. Write that decision in the ticket before you change the host. The proof is the smallest command or screen that confirms it, recorded with the hostname and the time. If the host disagrees, the ticket changes. A second change does not go on top of a failed check. The rollback is the previous value you wrote down, not a reboot that hides which line mattered.

Decision 10 for server provisioning. The distro pillar is the next page for that OS's daily commands. Write that decision in the ticket before you change the host. The proof is the smallest command or screen that confirms it, recorded with the hostname and the time. If the host disagrees, the ticket changes. A second change does not go on top of a failed check. The rollback is the previous value you wrote down, not a reboot that hides which line mattered.

Decision 11 for server provisioning. A second person read the user name and the address in the file. Write that decision in the ticket before you change the host. The proof is the smallest command or screen that confirms it, recorded with the hostname and the time. If the host disagrees, the ticket changes. A second change does not go on top of a failed check. The rollback is the previous value you wrote down, not a reboot that hides which line mattered.

Provisioning checks before a second host is built

Check 1 in Provisioning checks before a second host is built. The file contains the hostname and user from the ticket. Record the device name, the result, and the time on the same line. If the result does not match this check, stop and fix the ticket before you add another change. The rollback for this check is the previous value you wrote down, not a reboot. A reboot hides whether the check was the one that mattered. When the check passes, move to the next one. When it fails, the incident is this check.

Check 2 in Provisioning checks before a second host is built. No password and no private key are in the file. Record the device name, the result, and the time on the same line. If the result does not match this check, stop and fix the ticket before you add another change. The rollback for this check is the previous value you wrote down, not a reboot. A reboot hides whether the check was the one that mattered. When the check passes, move to the next one. When it fails, the incident is this check.

Check 3 in Provisioning checks before a second host is built. The diff was read. Record the device name, the result, and the time on the same line. If the result does not match this check, stop and fix the ticket before you add another change. The rollback for this check is the previous value you wrote down, not a reboot. A reboot hides whether the check was the one that mattered. When the check passes, move to the next one. When it fails, the incident is this check.

Check 4 in Provisioning checks before a second host is built. A clean VM booted from that file. Record the device name, the result, and the time on the same line. If the result does not match this check, stop and fix the ticket before you add another change. The rollback for this check is the previous value you wrote down, not a reboot. A reboot hides whether the check was the one that mattered. When the check passes, move to the next one. When it fails, the incident is this check.

Check 5 in Provisioning checks before a second host is built. Key login worked. Record the device name, the result, and the time on the same line. If the result does not match this check, stop and fix the ticket before you add another change. The rollback for this check is the previous value you wrote down, not a reboot. A reboot hides whether the check was the one that mattered. When the check passes, move to the next one. When it fails, the incident is this check.

Check 6 in Provisioning checks before a second host is built. The lab address was not copied to a real network. Record the device name, the result, and the time on the same line. If the result does not match this check, stop and fix the ticket before you add another change. The rollback for this check is the previous value you wrote down, not a reboot. A reboot hides whether the check was the one that mattered. When the check passes, move to the next one. When it fails, the incident is this check.

Check 7 in Provisioning checks before a second host is built. Console fixes were merged back or discarded. Record the device name, the result, and the time on the same line. If the result does not match this check, stop and fix the ticket before you add another change. The rollback for this check is the previous value you wrote down, not a reboot. A reboot hides whether the check was the one that mattered. When the check passes, move to the next one. When it fails, the incident is this check.

Check 8 in Provisioning checks before a second host is built. The image version is recorded next to the file. Record the device name, the result, and the time on the same line. If the result does not match this check, stop and fix the ticket before you add another change. The rollback for this check is the previous value you wrote down, not a reboot. A reboot hides whether the check was the one that mattered. When the check passes, move to the next one. When it fails, the incident is this check.

Check 9 in Provisioning checks before a second host is built. A second provisioner is not also installing these packages. Record the device name, the result, and the time on the same line. If the result does not match this check, stop and fix the ticket before you add another change. The rollback for this check is the previous value you wrote down, not a reboot. A reboot hides whether the check was the one that mattered. When the check passes, move to the next one. When it fails, the incident is this check.

Check 10 in Provisioning checks before a second host is built. The canary holds no unique data, so it can be destroyed. Record the device name, the result, and the time on the same line. If the result does not match this check, stop and fix the ticket before you add another change. The rollback for this check is the previous value you wrote down, not a reboot. A reboot hides whether the check was the one that mattered. When the check passes, move to the next one. When it fails, the incident is this check.

Check 11 in Provisioning checks before a second host is built. A second person saw the login. Record the device name, the result, and the time on the same line. If the result does not match this check, stop and fix the ticket before you add another change. The rollback for this check is the previous value you wrote down, not a reboot. A reboot hides whether the check was the one that mattered. When the check passes, move to the next one. When it fails, the incident is this check.

Check 12 in Provisioning checks before a second host is built. The hardening guide's order was respected: key first, then disable passwords. Record the device name, the result, and the time on the same line. If the result does not match this check, stop and fix the ticket before you add another change. The rollback for this check is the previous value you wrote down, not a reboot. A reboot hides whether the check was the one that mattered. When the check passes, move to the next one. When it fails, the incident is this check.

Check 13 in Provisioning checks before a second host is built. The previous image is still available. Record the device name, the result, and the time on the same line. If the result does not match this check, stop and fix the ticket before you add another change. The rollback for this check is the previous value you wrote down, not a reboot. A reboot hides whether the check was the one that mattered. When the check passes, move to the next one. When it fails, the incident is this check.

Check 14 in Provisioning checks before a second host is built. The hostname in the prompt matches the hostname in the ticket for server provisioning. Record the device name, the result, and the time on the same line. If the result does not match this check, stop and fix the ticket before you add another change. The rollback for this check is the previous value you wrote down, not a reboot. A reboot hides whether the check was the one that mattered. When the check passes, move to the next one. When it fails, the incident is this check.

Check 15 in Provisioning checks before a second host is built. The result line includes the time and the person, not only the command. Record the device name, the result, and the time on the same line. If the result does not match this check, stop and fix the ticket before you add another change. The rollback for this check is the previous value you wrote down, not a reboot. A reboot hides whether the check was the one that mattered. When the check passes, move to the next one. When it fails, the incident is this check.

Check 16 in Provisioning checks before a second host is built. You can point at the rollback value without searching a chat history. Record the device name, the result, and the time on the same line. If the result does not match this check, stop and fix the ticket before you add another change. The rollback for this check is the previous value you wrote down, not a reboot. A reboot hides whether the check was the one that mattered. When the check passes, move to the next one. When it fails, the incident is this check.

Check 17 in Provisioning checks before a second host is built. Done is a sentence a second person can repeat: the proof for server provisioning happened, and the next host is not started early. Record the device name, the result, and the time on the same line. If the result does not match this check, stop and fix the ticket before you add another change. The rollback for this check is the previous value you wrote down, not a reboot. A reboot hides whether the check was the one that mattered. When the check passes, move to the next one. When it fails, the incident is this check.

Tools for this guide

These tools run in the browser on this site. They do not log into your machines.

Guides in this cluster

These supporting pages belong to this pillar. A published page is linked. The others are named until they are published.

The content plan also names a companion in another desk: Cloud: Infrastructure as Code Guide.