Ansible for DevOps

Errata and Changes

Since many book sales platforms don't allow easy book revisioning, this page will collect all known flaws in Ansible for DevOps, starting with the 1.0 release (as tracked on LeanPub).

If you'd like to report an error or suggest an improvement, please post an issue in the Ansible for DevOps issue queue on GitHub.

Version 1.17 - Current

  1. No errata at this time.

Version 1.16 - 1.17

  1. Updated Mac Ansible install instructions in chapter 1 (thanks to @vtraida!).
  2. Install Django version 1.x in chapter 3 example so it works with CentOS 7 out of the box (thanks to @everett-toews!).
  3. Tidied up ntpd service detection in example script in chapter 2 (thanks to Germain G!).
  4. Added more detailed current book publication stats in the preface (thanks to vinceskahan!).
  5. Removed mention of nonexistent host_vars/all inventory file in chapter 5 (thanks to @vaygr!).
  6. Updated link to Hashicorp's Vagrant box directory in chapter 2 (thanks to bryankennedy!).
  7. Added note about overcoming host key prompts when connecting to a server for the first time in chapter 3 (thanks to i-zu!).
  8. Mention .bash_login instead of repeating .bash_profile ad nauseam in chapter 5 (thanks to jdavid5815!).
  9. Fixed a typo in chapter 6 (thanks to jdavid5815!).
  10. Add become: yes to playbook example for Node.js App deployment in chapter 4 (thanks to krystan!).
  11. Fixed a typo in chapter 5 (thanks to nkabir!).
  12. Use https for git repository in chapter 4 and chapter 6 includes examples (thanks to dglinder!).
  13. Add chapter 13, dedicated to Docker and Ansible. Move Docker content from chapter 8 into this new chapter.
  14. Updated cowsay quote in chapter 8 (moved it's cowsay to chapter 13).
  15. Add Hubot Slack bot example in chapter 13.
  16. Add chapter 14, dedicated to Kubernetes and Ansible.
  17. Fixed typo in MySQL example in chapter 8 (thanks to ck05!).
  18. Install dependency libssl-dev to ensure self-signed cert example works in chapter 12.
  19. Fix spelling errors in chapter 13.
  20. Standardize on spelling 'web server' instead of 'webserver'.
  21. Adjusted Remi's repo and GPG key URLs to use https (thanks to scottdavis99!).

Version 1.15 - 1.16

  1. Updated example Dockerfiles; removed usage of deprecated MAINTAINER property.
  2. Updated HAProxy example in chapter 9 to use with_items: "{{ variable }}" syntax.
  3. Updated Includes and Role vars examples in chapter 6 to use with_items: "{{ variable }}" syntax.
  4. Fixed withitems and withindexed_items syntax in chapter 8 AWS LAMP infrastructure example (thanks to Ben K!).
  5. Switch the memcached_listen_ip to in chapter 8 LAMP infrastructure example so Memcached starts more reliably.
  6. Use 64-bit CentOS image in chapter 8 DigitalOcean LAMP infrastructure example (thanks to @mattjmcnaughton!).
  7. Updated URLs for Cobbler and Func in introduction (thanks to @codeyy!).
  8. Added chapter 12: "Automating HTTPS and TLS Certificates".
  9. Switch from using '.dev' to '.test' for local domains.
  10. Switch from using ansible.sudo to ansible.become in Vagrantfiles.
  11. Fix typo in chapter 11 (double 'a's) (thanks to bngsudheer!).
  12. Switch incorrect usage of 'most any' to 'almost any' in chapter 11 (thanks to @Gogowitsch!).
  13. Updated now-deprecated use of include: to import_tasks: or include_tasks:.
  14. Fixed three typos spotted by Amazon Kindle's AI bot that loves good spelling.
  15. Updated DigitalOcean provisioning example in chapter 8 to work with new size and image slugs.
  16. Updated Docker Flask example in chapter 8 to use Ubuntu 16.04 and library MySQL image.
  17. Updated use of include: to import_playbook: in examples in chapter 9.
  18. Updated DigitalOcean playbook to use new size and image slugs in chapter 7.

Version 1.14 - 1.15

  1. Updated the creates examples in chapter 4's Drupal example to be Composer-specific (thanks to @santisaez!).
  2. Updated the Drupal example to default to Drupal 8.2.x (was 8.1.x).
  3. Updated the Drupal example to use PHP 7.1 instead of 7.0.
  4. Updated the Drupal example to install Ondrej's updated and maintained PPA (thanks to @jonleibowitz!).
  5. Rewrote appendix a in light of the Windows 10 WSL and Bash on Ubuntu on Windows.
  6. Updated documentation to switch from deprecated always_run: yes to check_mode: no.
  7. Fixed Node.js rolling deployment example's forever usage in chapter 9 (thanks to @mattjmcnaughton!).
  8. Fixed bare variable warning for environment setting in chapter 9 Rails deployment playbook.
  9. Fixed Drupal playbook example in chapter 4; drush git checkout is now version: 8.x (thanks to @cwardgar, @rschmidtz, and @scarroy!).
  10. Fixed Docker example in chapter 8; docker module is deprecated, use the docker_container module instead.
  11. Fixed Drupal playbook includes example in chapter 6 (to match tasks from chapter 4 Drupal playbook) (thanks to @cwardgar!).
  12. Fixed reference to docker-py Pip library (now it's just docker) in chapter 8.
  13. Switched Jenkins example in chapter 11 to use Ubuntu 16.04 since CentOS 7 doesn't include Java 8 by default.
  14. Removed deprecated {{ var }} syntax from Node.js when clauses in examples in chapters 4 and 5.
  15. Fixed links to various Ansible Galaxy roles that were 404'ing.
  16. Updated Solr example in chapter 4 to use Solr 6.5.1.

Version 1.13 - 1.14

  1. Fixed typo in Node.js app section in chapter 4 (thanks to @guntbert!).
  2. In chapter 1, when installing Ansible on Mac via pip, don't use sudo (thanks to @rdonkin!).
  3. In chapter 4, an incorrect use of 'play' was replaced with 'task' in 'Power Plays' (thanks to @guntbert!).
  4. In chapters 3, 8, and 11, updated multiple instances of -s and --sudo in ad-hoc commands; should use -b and --become instead (thanks to @charleshepner!).
  5. Fixed typo: s/infrasturcture/infrastructure in chapter 9 (thanks to /u/levelupirl!).
  6. Rewrote entire Travis CI testing section in chapter 11 to use Docker for multi-platform tests.
  7. Added a note on SSH key IDs in chapter 7 and chapter 8 DigitalOcean examples (thanks to @tychay!).
  8. Fixed playbook name (was do_test, should be provision) in chapter 7 (thanks to @tychay!).
  9. Removed deprecated include variables usage example in chapter 6 in 'Includes' section (thanks to @williamt!).
  10. Added unzip dependency to Drupal example in chapter 4 (thanks to @wurzeldub!).

Version 1.12 - 1.13

  1. Updated DigitalOcean example in chapter 7 to use DO v2 API, as well as updated nomenclature in Ansible 1.9.5/2.0+. See updated example in the book's repository: DigitalOcean Example.
  2. Updated DigitalOcean example in chapter 8 to use DO v2 API. See updated example in the book's repository: LAMP Infrastructure - DigitalOcean example.

Version 1.11 - 1.12

  1. Updated links to resources in Introduction, removed link to defunct Ansible Weekly newsletter.
  2. Fixed grammar mistakes in parts of the Foreword, Preface, and Introduction.
  3. Updated URLs to Vagrant resources in chapter 2.
  4. Added note about cleaning up example VM with vagrant destroy in chapter 2.
  5. Use [linked clones]( in Vagrantfiles for faster build in chapters 3, 7, 8, 9, and 11.
  6. Added 'Manage packages' section in chapter 3 to discuss different package modules like package, yum, and apt.
  7. Switched usage of sudo and sudo-related CLI options to become lingo for 1.9+.
  8. Updated Drupal playbook example in chapter 4 to use Ubuntu 16.04 LTS and PHP 7.
  9. Updated Apache Solr playbook example in chapter 4 to use Ubuntu 16.04 LTS and Solr 6.1.0.
  10. Added example images of running Drupal and Apache Solr home pages in chapter 4.

Version 1.1 - 1.11

  1. Fixed Apache Solr mirror URL in chapter 4—should be{{ solr_version }}/solr-{{ solr_version }}.tgz (thanks to @daniloradenovic!).
  2. Updated Drupal example in chapter 4 for Ubuntu 14.04 and PHP 5.6 (see this commit for specific changes; thanks to @e1nh4nd3r!).
  3. Updated Node.js app server example in chapter 4 to use yum for Remi repo install (see this commit for specific changes).
  4. Update a few lines for Ansible 2.1.x support.
  5. Fixed 'Variable Precedence' section in chapter 5 for Ansible 2.x (see Ansible's updated documentation on Variable Precedence; thanks to @daniel!).
  6. Updated misspellings of 'RedHat' to 'Red Hat' or 'RHEL' when referring to the OS.

Version 1.0 - 1.1

  1. Fixed sentence describing use of serial: 2 in chapter 9 (inside "Ensuring zero downtime with serial" section).
  2. Fixed sentence describing SSH password behavior in chapter 10 (inside "SSH" section). The sentence about disabling password-based SSH authentication should read "Even though passwords are not sent in the clear".
  3. Fixed private key destination path in example in chapter 6 (inside "Includes" section). The private key destination should read:
    dest: "/home/{{ username }}/.ssh/{{ item.dest }}"
  4. Fixed order of vars_files includes in example in chapter 5 (inside "Playbook Variables" section). The example should read:
    - hosts: example
        - "apache_default.yml"
        - "apache_{{ ansible_os_family }}.yml"
        - service: name={{ apache }} state=running
  5. Updated usage of become instead of now-deprecated sudo throughout book and examples (thanks to David!).
  6. Fixed task name text in idempotence example in chapter 4 (thanks to Joel S!).
  7. Fixed Node.js Forever installation in chapter 4 and chapter 6 due to Ansible npm module bug; state=latest is now state=present (thanks to Stephen W!).
  8. Add geerlingguy.php-mysql role to LAMP server example in chapter 6 (thanks to Paul M!).
  9. Fixed typo in "Configure PHP with lineinfile" example in chapter 4 (thanks to Adrian!).
  10. Fixed script name in bullet point 5 under the DigitalOcean dynamic inventory section in chapter 7 (thanks to Adrian!).

Back to Ansible for DevOps home