Ansible Multiple Environment Best Practices

Ansible Multiple Environment

Handling multiple infrastructure environments with Ansible is easily done by targeting the environment tag that is included in the mandatory AWS Tags. See AWS Tagging Best Practices.

Avoid mixing environments mistakes

Have switches, configurations redundancies, 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 will be a terrible error.

To prevent errors from happening:

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 its private key for each environment ENV.

E.g.: ditwl_pk_USER_ENV_infradmin.pem

Related Cloud Tutorials

Ansible logo
Ansible Roles Granularity We recommend building Ansible roles that are highly reusable by configuration, but we also recommend pragmatism as our highest priority. Roles for systems and applications designed to be standalone, or before the Cloud was around, are called “non-native cloud applications”, often those are stateful applications that can not be clustered without sharing […]
Ansible logo
Define and apply a company-wide consistent structure for all your Ansible Playbooks that allows for easy understanding and maximum reutilization
Ansible logo
Generate inventory (host and group information) dynamically rather than statically defining it in a static inventory file
Terraform Migration to OpenTofu
IaC is an approach to managing and provisioning computing infrastructure through machine-readable code and automation, rather than manual processes.
Kubernetes
Tutorial and full source code explaining how to create a Kubernetes cluster with Ansible and Vagrant for local development under 3 minutes.
Javier Ruiz Cloud and SaaS Expert

Javier Ruiz

IT Wonder Lab tutorials are based on the rich and diverse experience of Javier Ruiz, who founded and bootstrapped a SaaS company in the energy sector. His company, which was later acquired by a NASDAQ traded company, managed over €2 billion per year of electricity for prominent energy producers across Europe and America. Javier has more than 20 years of experience in building and managing IT companies, developing cloud infrastructure, leading cross-functional teams, and transitioning his own company from on-premises, consulting, and custom software development to a successful SaaS model that scaled globally.

Looking for cloud automation best practices tailored to your company?

linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram