Ansible Multiple Environment Best Practices
Ansible Multiple Environment #
Handling multiple infrastructure environments with Ansible is easy when the playbooks target the environment tag that is included in the mandatory AWS Tags. See AWS Tagging Best Practices.
Avoid mixing up environments #
Use safeguards, redundant configurations and different keys for each environment to reduce the possibility of applying changes to the wrong client or environment.
Applying the PRE environment configuration to the PRO environment would be a serious mistake.
To prevent these errors:
Environment Tag #
Use the tag tag_environment_ENV as a selector in playbooks, for example:
- hosts: tag_os_ubuntu:&tag_environment_ENV
become: yes
roles:
- { role: linux/pam_limits, tags: [ 'pam_limits'] }
- { role: linux/hosts_file, tags: [ 'hosts_file'] }
- { role: linux/host_name, tags: [ 'host_name'] }
tags:
- common
...Multiple Ansible Playbooks #
Have a different Ansible playbook for each environment, e.g.:
- ditwl_des.yml
- ditwl_pre.yml
- ditwl_pro.yml
Unique Ansible Private Keys #
Have different SSH Key files for each combination of environment and user that has to have SSH access either by console or using Ansible.
The key is set using the ANSIBLE_PRIVATE_KEY_FILE environment variable. Each USER should have their own private key for each environment ENV.
E.g.: ditwl_pk_USER_ENV_infradmin.pem