使用 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 来实现吗?
使用 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
模块轻松实现。
我在远程服务器上有一个 python virtualenv 运行。我正在尝试使用 Ansible 使用以下信息更新远程服务器的 bashrc。
export WORKON_HOME=~/TestEnvs
source /usr/local/bin/virtualenvwrapper.sh
workon my_virtual_env
有什么方法可以使用 Ansible 来实现吗?
使用 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
模块轻松实现。