Update bashrc with virtualenv info using Ansible
Asked Answered
C

1

11

I have a python virtualenv running on a remote server. I am trying to update the bashrc of the remote server with the following info using Ansible.

export WORKON_HOME=~/TestEnvs
source /usr/local/bin/virtualenvwrapper.sh
workon my_virtual_env

Is there any way to accomplish this using Ansible?

Canine answered 29/10, 2016 at 6:58 Comment(0)
J
37
  1. Use Ansible blockinfile module to maintain the lines in the .bashrc or /etc/bashrc:

    - name: Ensure virtualenv is sourced from the .bashrc
      blockinfile:
        dest: "{{ ansible_env.HOME }}/.bashrc"
        block: |
          export WORKON_HOME=~/TestEnvs
          source /usr/local/bin/virtualenvwrapper.sh
          workon my_virtual_env
        marker: '# {mark} ANSIBLE MANAGED BLOCK - virtualenv'
        insertbefore: BOF
        create: yes 
    
  2. Or better: create a .bashrc.d (or .bash_profile.d) directory, replace your .bashrc with a call to source all files in the directory:

    while read filename
    do
      source "$filename"
    done < <(find -L ~/.bashrc.d -type f)
    

    and add the above commands as a separate file. Move other commands from the current .bashrc to another file and place it in .bashrc.d directory.

    This you can easily achieve with file and copy modules in Ansible.

Jephthah answered 29/10, 2016 at 7:45 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.