使用 Ansible 使用 virtualenv 信息更新 bashrc

Update bashrc with virtualenv info using Ansible

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

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

有什么方法可以使用 Ansible 来实现吗?

  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 模块轻松实现。