我在远程服务器上运行了一个python virtualenv。我正在尝试使用Ansible更新远程服务器的bashrc以及以下信息。
export WORKON_HOME=~/TestEnvs
source /usr/local/bin/virtualenvwrapper.sh
workon my_virtual_env
有没有办法用Ansible来实现这个目标?
答案 0 :(得分:16)
使用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
或者更好:创建一个.bashrc.d
(或.bash_profile.d
)目录,将.bashrc
替换为源目录中所有文件的来源:
while read filename
do
source "$filename"
done < <(find -L ~/.bashrc.d -type f)
并将上述命令添加为单独的文件。将其他命令从当前.bashrc
移动到另一个文件,并将其放在.bashrc.d
目录中。
您可以使用Ansible中的file
和copy
模块轻松实现这一目标。