这看起来应该很简单:
tasks:
- name: install python packages
pip: name=${item} virtualenv=~/buildbot-env
with_items: [ buildbot ]
- name: create buildbot master
command: buildbot create-master ~/buildbot creates=~/buildbot/buildbot.tac
Run Code Online (Sandbox Code Playgroud)
但是,除非首先获取virtualenv的激活脚本,否则该命令将不会成功,并且似乎没有在Ansible命令模块中执行此操作.
我已尝试在各种.profile,.bashrc,.bash_login等中获取激活脚本,但没有运气.或者,有shell命令,但它看起来像一个尴尬的黑客:
- name: create buildbot master
shell: source ~/buildbot-env/bin/activate && \
buildbot create-master ~/buildbot \
creates=~/buildbot/buildbot.tac executable=/bin/bash
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?
我有一个文件中的别名列表.bash_aliases
,正在被复制到远程服务器ansible playbook
.该文件得到复制到目标,但.bashrc
(这反过来加载.bash_aliases
)文件是没有得到使用以下ansible任务加载.
我试过给出可执行参数
- name: source the .bashrc file
shell: source ~/.bashrc
args:
executables: "/bin/bash"
Run Code Online (Sandbox Code Playgroud)
没有争论
- name: source the .bashrc file
shell: source ~/.bashrc
Run Code Online (Sandbox Code Playgroud)
使用原始模块
- name: source the .bashrc file
raw: source ~/.bashrc
Run Code Online (Sandbox Code Playgroud)
使用命令模块 - 名称:源.bashrc文件命令:source~/.bashrc
什么都行不通!任何帮助
在~/.bash_aliases
while 中使用别名$HOME=/home/ubuntu
作为:
alias k="kubectl -s http:xxxx"
Run Code Online (Sandbox Code Playgroud)
k
这里代表不同服务器中的不同命令,我必须使用此功能,但我不能source
在 Ansible shell 模块中使用它。
有没有其他方法可以解决它?
我读了几篇文章:
并尝试:
shell: ". /home/ubuntu/.bash_aliases && k get pods --all-namespaces | grep {{ serviceName }}"
Run Code Online (Sandbox Code Playgroud)
shell: ". /home/ubuntu/.bashrc && k get pods --all-namespaces | grep {{ serviceName }}"
Run Code Online (Sandbox Code Playgroud)
以上两种尝试都给了我这个错误:
"/bin/sh: 1: k: not found"
Run Code Online (Sandbox Code Playgroud)
shell: "source /home/ubuntu/.bash_aliases && …
Run Code Online (Sandbox Code Playgroud)