What is configuration?

When I have to configure some machines, I start with the bare machines [9]. The hardware, e.g. architecture of the CPUs, the number of harddisks per machine, or type of network connectivity device, are the first configurated items. Then I pick an OS, a particular version of it, and I boot a particular kernel, and perhaps modify some boot parameters. Usually the machines have disks that need to be partitioned, the partitions need to be assigned to tasks, networking devices must be assigned IP numbers. Then, when the machines are running, they must perform their tasks. Some service, even if it is merely the fact that the machine exists and is listening on the network, must be offered to some clients. Once the machines are running, we get to finetuning. Some services are offered to some clients only. Some values in a configuration file may have to be altered to optimize performance.

So there we have it. Configuration consists of the choices made when putting together a system [10]. Some configuration is stored in files on the configured system, but some is also stored implicitly before the system is even connected to a power supply. Some configuration items are rather independent, but other items are closely interrelated, and one doesn't make sense without the other. However, often only the configuration is stored, and the sense is in the mind of the configurator, and in some commentary on the side if we're lucky. But there is always a reason for configuration, if only that it was there by default and we didn't change it.

[9] Even if I choose the hardware myself, for the purpose of this article, I still start with the bare machine.

[10] And as such, it can be stored separate from the system. If we have the configuration, and the hardware is still available, we can rebuild the system from scratch.