AnsiblePilot — Master Ansible Automation

AnsiblePilot is the leading resource for learning Ansible automation, DevOps, and infrastructure as code. Browse over 1,400 tutorials covering Ansible modules, playbooks, roles, collections, and real-world examples. Whether you are a beginner or an experienced engineer, our step-by-step guides help you automate Linux, Windows, cloud, containers, and network infrastructure.

Popular Topics

About Luca Berton

Luca Berton is an Ansible automation expert, author of 8 Ansible books published by Apress and Leanpub including "Ansible for VMware by Examples" and "Ansible for Kubernetes by Example", and creator of the Ansible Pilot YouTube channel. He shares practical automation knowledge through tutorials, books, and video courses to help IT professionals and DevOps engineers master infrastructure automation.

Ansible Set Environment Variables: lineinfile for /etc/environment & .bashrc — Video Tutorial

How to permanently set system-wide and user-level environment variables on Linux with Ansible. Use lineinfile for /etc/environment, profile.d, and .bashrc.

Watch on YouTube · Read the written article

Tutorial summary

What you'll learn

  • How to permanently set system-wide environment variables on remote Linux with Ansible?
  • Permanently Set System-Wide Environment Variables on Remote Linux
  • Links
  • code
  • execution
  • idempotency
  • before execution
  • after execution
  • Conclusion
  • System-Wide Environment Variables
How to permanently set system-wide environment variables on remote Linux with Ansible? I'm going to show you a live Playbook with some simple Ansible code. I'm Luca Berton and welcome to today's episode of Ansible Pilot. Permanently Set System-Wide Environment Variables on Remote Linux - /etc/environment - /etc/profile.d directory There are principally two ways to configure System-Wide Environment Variables on Linux: - `/etc/environment` is a system-wide configuration file, which means it is used by all users. It is owned by root so you need admin user privilege or sudo to modify it. Specifically, this file stores the system-wide locale and path settings. - `/etc/profile` and `/etc/profile.d/*.sh` are the global initialization scripts. This file gets executed whenever a bash login shell is entered via console, terminal, ssh, or graphical user interface. The global scripts get executed before the user-specific scripts though, and the main `/etc/profile` executes all the `*.sh` scripts in `/etc/profile.d/` just before it exits. Each user could customize their `~/.profile`, the user's personal shell initialization scripts. Every user has one and can edit their file without affecting others. This is the equivalent to `/etc/profile` for each user. Links - [ansible.builtin.lineinfile](https://docs.ansible.com/ansible/latest/collections/ansible/builtin/lineinfile_module.html) ## Playbook How to permanently set System-Wide Environment variables on Remote Linux with Ansible Playbook. code ```yaml --- - name: set environment Playbook hosts: all gather_facts: false become: true vars: os_environment: - key: EDITOR value: vi - key: MY_ENV_VARIABLE value: ansiblepilot tasks: - name: customize /etc/environment ansible.builtin.lineinfile: dest: "/etc/environment" state: present regexp: "^{{ item.key }}=" line: "{{ item.key }}={{ item.value }}" with_items: "{{ os_environment }}" ``` execution ```bash ansible-pilot $ ansible-playbook -i virtualmachines/demo/inventory ansible\ statements/set-environment.yml PLAY [set environment Playbook] *********************************************************************** TASK [customize /etc/environment] ***************************************************************** changed: [demo.example.com] => (item={'key': 'EDITOR', 'value': 'vi'}) changed: [demo.example.com] => (item={'key': 'MY_ENV_VARIABLE', 'value': 'ansiblepilot'}) PLAY RECAP **************************************************************************************** demo.example.com : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 ansible-pilot $ ``` idempotency ```bash ansible-pilot $ ansible-playbook -i virtualmachines/demo/inventory ansible\ statements/set-environment.yml PLAY [set environment Playbook] *********************************************************************** TASK [customize /etc/environment] ****

About this tutorial

  • Author: Luca Berton
  • Difficulty: Beginner
  • Read time: 5 min
  • Category: troubleshooting

Topics covered

Related video tutorials