# Configuration Management

Exercise 4 and the Project (and hopefully the TechEvalDemo) for this course will be developed and deployed using configuration management tools, allowing us to represent our infrastructure as code.

Configuration management code will let us express things like install the apache package or put the apache.conf file from my code repo on the server at /etc/apache2/apache.conf.

The idea is that the configuration of your system is automatic so it can be duplicated by the other group members as they develop, the system can be instantiated by us for marking, and (not in this course but in theory) many instances can be deployed to cloud infrastructure automatically.

Here's an outline of what's happening:

1. We create configuration management code (with Chef or Puppet or Fabric or Docker) that says how our system needs to be set up.
2. We use Vagrant or Docker to direct the creation of a virtual machine. (vagrant up or docker-compose up)
3. As part of that, Vagrant starts the provisioner which runs our configuration code. This actually installs and starts everything on our server.
4. The system is up and running.

There are several tools for configuration management. It's not at all clear to me which one is best, but I'll give example code for Chef.

More specific technology instructions on the DeployConfig page.

## Videos

See my introductory videos:

Updated Mon Aug. 30 2021, 07:36 by ggbaker.