Build a Production Ready Ansible Playbook
In this lab, you'll practice the construction of production-ready Ansible playbooks that manage applications/services on Linux systems. When you're finished with this lab, you'll have a playbook that configures a BIND DNS server, complete with DNS record management capabilities.
Terms and conditions apply.
Lab info
Lab author
Challenge
Getting Started in the Lab Environment
Here are the initial instructions and explanation of the lab environment. Read this while your environment is busy creating itself from nothing. Yes, this violates physics; we know. How fun!
Challenge
Creating and Populating Basic BIND DNS Configuration Files
You will start by diving into the basic configuration of the BIND DNS server using Ansible through the static definition of BIND configuration files. You will use a basic Jinja2 template to accomplish this task.
Challenge
Use Jinja2 Templates to Deploy BIND DNS Zone Database
You'll deepen your understanding of Jinja2 templates by dynamically defining the BIND DNS zone database. You'll use Ansible to deploy these templates to your managed host, and will also add domain and DNS record variables to your inventory file.
Challenge
Confirm DNS Functionality from Ansible Controller
Now that your BIND DNS server is up and running, it's crucial to confirm its functionality. You'll run DNS queries using dig and nslookup commands from the terminal of the Ansible controller to ensure your DNS servers are resolving queries as expected.
Challenge
Control Ansible Execution with Conditional Statements
You'll refine your Ansible playbook to make it more efficient. You'll add conditional statements to ensure that the BIND DNS server and the rndc reload command are only executed when necessary–specifically, when there are changes to the named.conf or zone database files.
Challenge
The Last Challenge
Welcome to the final challenge! This is your last chance to experiment in the environment. Clicking Finish Lab will end this little world that flittered into existence just for you.
Provided environment for hands-on practice
We will provide the credentials and environment necessary for you to practice right within your browser.
Guided walkthrough
Follow along with the author’s guided walkthrough and build something new in your provided environment!
Did you know?
On average, you retain 75% more of your learning if you get time for practice.
Recommended prerequisites
- Basic understanding of using Visual Studio Code, and the Ubuntu CLI.
- Basic understanding of YAML file structure and format.
- Basic understanding of Ansible playbook, configuration file, and inventory structure.
- Basic understanding of networking concepts.
- Basic understanding of use cases for Jinja2 templates and Jinja2 templating language syntax.