OPS635 Lab 3: System Configuration Management using Ansible
In an enterprise environment, the existence of different hardware and operating systems running on production servers is very common. You may find the same software running on different OSes and even different hardware platforms. To manage the software configuration on different platforms by using a script, your script would have to be aware of and account for their differences. Your scripts would need to be written in way that they know how to query the operating environment and execute the appropriate installation and configuration actions based on the operating environment it is running on.
There are commercial and open source configuration management systems which aware of and know how to handle such difference in operating platforms. Ansible is a CMS (Content Management System) that we are going to study for this lab. In this lab, we will start by trying to convert the script that you have written for configuring Nagios on CentOS 7 to an Ansible playbook, test it on your testing environment and then deploy it to a new VM.
Investigation 1: Installing Ansible
- Install Ansible on one of your VMs (we will refert to that as the server).
- If you have not already done so, create an SSH key-pair for the root user on your server and transfer the public portion of it to another VM (we will refer to it as the client). Ensure that you can use it to ssh to root on the other VM without entering a password.
- Modify the inventory file on your server to include the fully qualified domain names of client VM.
- Use the setup module to verify that your Ansible server can run plays on your client VM.
Investigation 2: Creating an Ansible Playbook
- Create an ansible playbook to make your client machine meet the following conditions:
- The httpd package must be installed
- The httpd service must be enabled and running
- A simple webpage of your creation must be the DocumentRoot.
- Provide a copy of the configuration file with some minor changes (e.g. ServerAdmin)
- The firewall must be allowing traffic to your webservers.
- Run your play and ensure it makes the required changes.
- Break your machine (e.g. modify the configuration file), then re-run your play and ensure it fixes your machine.
Investigation 3: Applying a Playbook
- Use the ansible-playbook command to execute your play on both VMs in the same play. If anything goes wrong, fix it and re-run the play. Continue doing so until the play runs successfully.
Demonstrate your Ansible playbook working in class, then upload it to Blackboard.