使用Ansible使用virtualenv信息更新bashrc

时间:2016-10-29 06:58:03

标签: bash ansible ansible-playbook virtualenvwrapper

我在远程服务器上运行了一个python virtualenv。我正在尝试使用Ansible更新远程服务器的bashrc以及以下信息。

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

有没有办法用Ansible来实现这个目标?

1 个答案:

答案 0 :(得分:16)

  1. 使用Ansible blockinfile模块维护.bashrc/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. 或者更好:创建一个.bashrc.d(或.bash_profile.d)目录,将.bashrc替换为源目录中所有文件的来源:

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

    并将上述命令添加为单独的文件。将其他命令从当前.bashrc移动到另一个文件,并将其放在.bashrc.d目录中。

    您可以使用Ansible中的filecopy模块轻松实现这一目标。