You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Jeff Geerling 00543f5268 Issue #310: Fix link to Docker Flask app example. [ci skip] 4 days ago
.github Issue #264: Tweaks to ci.yml workflow for consistent style. 2 months ago
collection Issue #202: Local collections don't require config to be picked up. 1 month ago
deployments Fixes #259: Update Rails deployment demo Vagrantfile for better WSL compatibility. 1 week ago
deployments-balancer Fixes #239: Rework HAProxy balancer example and make sure apt cache is updated. 1 week ago
deployments-rolling Fixes #298: Change usage of 'src' in requirements.yml files. 2 weeks ago
docker Issue #310: Fix link to Docker Flask app example. [ci skip] 4 days ago
docker-flask Fixes #298: Change usage of 'src' in requirements.yml files. 2 weeks ago
docker-hubot Fixes #165: Fix lingering deprecation warnings in some examples. 11 months ago
drupal Issue #308: Remove unused variables. 6 days ago
dynamic-inventory Fixes #303: Update 'Dynamic inventory with AWS' example to use aws_ec2 plugin. 1 week ago
elk Fixes #258: Add pip to elk example requirements and bump RAM for ES to 4GB. 1 week ago
first-ansible-playbook Fix capitalization for chrony 1 week ago
galaxy-role-servers Fixes #187: Add galaxy role-based servers for lamp and solr. 2 weeks ago
gluster Fixes #298: Change usage of 'src' in requirements.yml files. 2 weeks ago
https-letsencrypt Fixes #93: Assume Python 3 is available on Ubuntu 20.04. 2 weeks ago
https-nginx-proxy Fixes #298: Change usage of 'src' in requirements.yml files. 2 weeks ago
https-self-signed Fixes #298: Change usage of 'src' in requirements.yml files. 2 weeks ago
includes Issue #295: Even more fixes for Ubuntu 20.04 compatibility. 2 weeks ago
jenkins Fixes #298: Change usage of 'src' in requirements.yml files. 2 weeks ago
kubernetes Fixes #249: Update Helm example in chapter 16. 2 weeks ago
lamp-infrastructure Fixes #303: Update 'Dynamic inventory with AWS' example to use aws_ec2 plugin. 1 week ago
molecule Issue #101: Remember to document all the things. 3 months ago
nodejs Issue #295: Update memory allocation for VMs. 2 weeks ago
nodejs-role Issue #295: Update memory allocation for VMs. 2 weeks ago
orchestration Fixes #221: Final tweaks to orchestration testing. 5 days ago
security Final tweaks to security test configuration. 1 week ago
solr Issue #307: Update Apache Solr example in Chapter 4 to latest 8.6.0 version. 6 days ago
test-plugin Issue #202: More idiomatic Ansible Python style. 1 month ago
tests Issue #221: Fix broken tests by using the right names. 5 days ago
.gitignore Fixes #249: Update Helm example in chapter 16. 2 weeks ago
.travis.yml Issue #221: Add tests for current multi-server ad-hoc orchestration examples. 6 days ago
LICENSE Issue #5: Add MIT License. 5 years ago
README.md Fixes #283: Add security code snippets to new playbook for chapter 11. 1 week ago

README.md

Ansible for DevOps Examples

Build Status GitHub CI

This repository contains Ansible examples developed to support different sections of Ansible for DevOps, a book on Ansible by Jeff Geerling.

Most of the examples are full-fledged VM examples, which use Vagrant, VirtualBox, and Ansible to boot and configure VMs on your local workstation. Not all playbooks follow all of Ansible’s best practices, as they illustrate particular Ansible features in an instructive manner.

For more interesting examples of what you can do with Ansible, please see the Ansible Vagrant Examples repository, and browse through some of geerlingguy’s roles on Ansible Galaxy.

Examples and Chapters in which they’re used

Here is an outline of all the examples contained in this repository, by chapter:

Chapter 1

  • N/A

Chapter 2

Chapter 3

  • orchestration: A simple multiple-VM Vagrant configuration and Ansible inventory to allow testing of multi-server orchestration with ansible ad-hoc commands.

Chapter 4

  • drupal: A single-file playbook which configures the LAMP stack on a Linux host and installs Drupal.
  • includes: The same playbook as the drupal example, but using includes to make the playbook more understandable.
  • nodejs: A single-file playbook which configures a Node.js app to run on a Linux host.
  • solr: A single-file playbook which installs Apache Solr on a Linux host.

Chapter 5

  • N/A

Chapter 6

  • nodejs-role: The same playbook as the nodejs example, but using a role to break out the Node.js aspects into a separate nodejs role.
  • galaxy-role-servers: A couple very short playbooks that demonstrate how easy it is to get new servers running leveraging the power of community Ansible Galaxy roles.

Chapter 7

  • test-plugin: A simple test plugin that verifies a given value is representative of the color blue.
  • collection: An example local collection to demonstrate the basic structure of content collections.

Chapter 8

  • dynamic-inventory: Two example dynamic inventory scripts (one in PHP, one in Python) for use with Ansible.

Chapter 9

  • lamp-infrastructure: A multi-server LAMP-based web application infrastructure focused on high-availability and performance for a LAMP-stack app.
  • elk: A two-server example of the Elasticsearch-Logstash-Kibana stack, which uses one server to store and visualize logs centrally, and another server to send logs via Filebeat.
  • gluster: A two-server example of building a fast networked storage setup using Gluster.

Chapter 10

  • deployments: A playbook that deploys a Ruby on Rails application into an environment that runs Passenger and Nginx to handle web requests.
  • deployments-balancer: A playbook that handles zero-downtime deployments to webservers running behind an HAProxy load balancer.
  • deployments-rolling: A playbook that demonstrates rolling deployments to multiple servers for a Node.js app.

Chapter 11

  • security: A playbook containing many security automation tasks to demonstrate how Ansible helps automate security hardening.

Chapter 12

  • jenkins: A playbook that installs and configures Jenkins for CI/CD.

Chapter 13

  • molecule: A Molecule example used for testing and developing an Ansible playbook, or for testing in a Continuous Integration (CI) environment.
  • ci.yml GitHub Actions workflow: A GitHub Actions workflow which runs the molecule example in a CI environment.

Chapter 14

  • https-self-signed: A playbook that generates self-signed certificates.
  • https-letsencrypt: A playbook that demonstrates automated certificate management with Let’s Encrypt and Ansible.
  • https-nginx-proxy: A playbook that demonstrates proxying HTTPS traffic through Nginx to HTTP backends.

Chapter 15

  • docker: Very simple playbook demonstrating Ansible’s ability to manage Docker container images.
  • docker-hubot: Slightly more involved example of Ansible’s ability to manage and run Docker container images.
  • docker-flask: A sample Flask app built with Ansible playbooks running inside the container.

Chapter 16

  • kubernetes: A playbook that builds a three-node Kubernetes cluster.

License

MIT

Buy the Book

Ansible for DevOps Cover

Buy Ansible for DevOps for your e-reader or in paperback format.