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?
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
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.