作为大多数Ansible剧本的一部分,我需要从内部托管的tarball安装Node和Mongo。 Sudo特权和互联网访问不可用。所有Ansible运行都发生在localhost上。
此设置的一个问题是,在解开节点/ mongo之后,需要将它们添加到PATH,否则后续角色/任务将无法依赖它们。不幸的是,我似乎无法在Ansible playbook运行中找到修改PATH的方法。
我已经尝试使用shell和命令任务来导出PATH和源.bashrc,这些似乎都没有帮助。有没有办法在同一个剧本中使用我的节点安装? yum任务似乎可以解决问题,但现在我无法使用它。
答案 0 :(得分:2)
您是否尝试过使用'环境'?
您可以将本地PATH变为变量
environment:
PATH: "{{ lookup('env', 'PATH') }}"
或者您可以设置路径
environment:
PATH: "{{ node_path }}:{{mongo_path}}:{{ lookup('env', 'PATH') }}"
以上假设您可以注册mongo&的路径。节点为vars,并使其可供以后播放。
使用环境和信息的信息PATH本地和远程在这里: https://serverfault.com/questions/577188/how-can-i-prepend-to-path-while-running-ansibles-pip-module
- hosts: localhost
gather_facts: False
vars:
path1: "{{lookup('env', 'PATH')}}"
tasks:
- shell: echo $PATH
environment:
PATH: 'mypath2'
register: path2
- shell: echo $PATH
environment:
PATH: 'mypath3'
register: path3
- shell: echo $PATH
environment:
PATH: "{{ path1 }}"
register: path4
- debug: msg={{path1}}
- debug: msg={{path2}}
- debug: msg={{path3}}
- debug: msg={{path4}}
- debug: msg={{lookup('env', 'PATH')}}