Enov8-Plugin

Ansible : How do I protect sensitive data with encrypted files

MAR, 2023

by Jane Temov.

 

Author Jane Temov

Jane Temov is an IT Environments Evangelist at Enov8, specializing in IT and Test Environment Management, Test Data Management, Data Security, Disaster Recovery, Release Management, Service Resilience, Configuration Management, DevOps, and Infrastructure/Cloud Migration. Jane is passionate about helping organizations optimize their IT environments for maximum efficiency.

One of the great things about Enov8 Environment Manager is our DevOps Management area. An area that allows you to add your favourite automation independent of language. This includes the ability to “plug in” some very cool IT  Automation tools like Ansible.

 

Enov8 IT & Test Environment Manager

*Innovate with Enov8

Streamlining delivery through effective transparency & control of your IT & Test Environments.

Ansible is an open-source automation tool used to manage and configure systems and applications. It uses a simple and powerful language to describe and automate IT workflows, making it easy to manage complex systems and processes with ease. Ansible is agentless, meaning it does not require any software or daemons to be installed on remote hosts, making it easy to deploy and use. With Ansible, IT teams can automate tasks such as configuration management, application deployment, and orchestration, allowing them to improve efficiency, reduce errors, and improve overall infrastructure reliability.

Evaluate Now

Protecting Sensitive Data with Encrypted Files

To protect sensitive data with encrypted files or elements in Ansible, you can use Ansible Vault. Ansible Vault is a feature in Ansible that allows you to encrypt sensitive data using a password, and then decrypt it when needed during playbook execution. Here are the steps to use Ansible Vault:

  1. Create a file that contains sensitive data, such as passwords, API keys, or private keys. For example, let’s say you have a file named secrets.yml that contains the following:

username: myusername
password: mypassword

  1. Encrypt the file using the ansible-vault command:

ansible-vault encrypt secrets.yml

This will prompt you to enter a password that will be used to encrypt the file.

  1. Edit your playbook to include the encrypted file.

For example, let’s say your playbook includes the following task:

# yaml
– name: Configure the server
become: yes

vars:
my_username: “{{ username }}”
my_password: “{{ password }}”

template:
src: template.j2
dest: /etc/config.cfg

You can replace the username and password variables with the encrypted values by modifying the task as follows:

# yaml
– name: Configure the server
become: yes
vars_files:
– secrets.yml
vars:
my_username: “{{ username }}”
my_password: “{{ password }}”
template:
src: template.j2
dest: /etc/config.cfg

Note that we added the vars_files option to include the encrypted file.

 

  1. Run your playbook using the ansible-playbook command and provide the password for the encrypted file:

python ansible-playbook playbook.yml –ask-vault-pass

This will prompt you to enter the password* you used to encrypt the file.

Once you enter the password, Ansible will decrypt the file and use the values in your playbook.

Tip: *Parameterising the Ansible Secret

If you need to parameterise the secret then you can pass the password for the encrypted file as a parameter to the ansible-playbook command using the –vault-password-file option. For example, if your password is mysecretpassword, you can run the following command: ansible-playbook playbook.yml –vault-password-file=/path/to/password_file where /path/to/password_file is a file containing your password, such as: mysecretpassword. This can be particularly useful when you need to run the Enov8 environment automation on a schedule.

Add Parameter

With these steps, you can protect sensitive data in your Ansible playbooks using Ansible Vault.

Enov8, DevOps Manager: Screenshot

Enov8 DevOps Manager

Conclusion

In conclusion, Ansible Vault provides a powerful and flexible way to protect sensitive data in Ansible playbooks and configuration files. By encrypting sensitive data using strong encryption algorithms and protecting the decryption key with a password or key file, Ansible Vault helps ensure that critical data such as passwords, API keys, and other secrets are kept secure and confidential. Ansible Vault also integrates seamlessly with the rest of the Enov8 & Ansible automation framework, making it easy to incorporate secure credential management into your overall infrastructure management workflow. Overall, Ansible Vault is an essential tool for any organization that wants to ensure the security and integrity of its IT infrastructure and data.

Other TEM Reading

Interested in reading more about Test Environment Management. Why not start here:

Enov8 Blog: Your Essential Test Environment Management Checklist

Enov8 Blog: What makes a good Test Environment Manager

Enov8 Blog: Understanding the Types of Test Environments

 

Relevant Articles

What is Canary Deployment? A Complete Explanation

What is Canary Deployment? A Complete Explanation

Software development and deployment come at you fast. So organizations strive to deliver new features and updates to their users while minimizing risks and disruptions. One of the most effective techniques to achieve this delicate balance is through the use of...

A Comprehensive Guide to Product Lifecycle Management (PLM)

A Comprehensive Guide to Product Lifecycle Management (PLM)

Product lifecycle management (PLM) plays a critical role in ensuring the longevity and competitiveness of software products. A successful software solution is not an accident, but rather a result of ongoing supply chain management, maintenance and a clear long-term...

Data Mesh vs Data Lake: Choosing an Architecture

Data Mesh vs Data Lake: Choosing an Architecture

As organizations scale and mature their digital ecosystems, data becomes both a key asset and a major architectural challenge. Live by the data, die by the data.  With vast quantities of structured and unstructured data pouring in from dozens (or hundreds) of...

RAG Status: What It Is and Using It for Project Management

RAG Status: What It Is and Using It for Project Management

Effective Leadership requires effective tooling to drive successful outcomes. One tool they can use to monitor and measure progress is RAG status. RAG stands for Red, Amber, Green, and is a simple traffic light system used to communicate the current status of a...

Enterprise Architecture Tools: 11 to Be Aware Of in 2025

Enterprise Architecture Tools: 11 to Be Aware Of in 2025

Enterprise architecture (EA) is an essential discipline for organizations aiming to align their IT strategy with business goals. As companies become more complex and technology-driven, having the right set of EA tools is crucial to streamline operations, improve...

What is a Staging Server? An Essential Guide

What is a Staging Server? An Essential Guide

Release issues happen.  Maybe it’s a new regression you didn’t catch in QA. Sometimes it’s a failed deploy. Or, it might even be an unexpected hardware conflict.  How do you catch them in advance?  One popular strategy is a staging server....