我正在编写Ansible手册来在Solaris服务器上设置和安装我们的应用程序。
问题是我需要执行的(bash)脚本都假定某个目录位于PATH上,即/data/bin
- 这通常不会成为问题,因为它不是Ansible忽略所有.profile
和.bashrc
配置。
现在,我知道您可以通过shell
标志为environment
任务指定环境,例如:
- shell: printenv
environment:
PATH: /usr/bin:/usr/sbin:/data/bin
这将正确路径/data/bin
文件夹,printenv
命令将正确显示(或我的bash脚本将正确运行)。
但是。然而有两个问题:
environment: ...
任务上设置shell
。PATH: $PATH:/data/bin
- 因为Ansible以不解析$PATH
的方式执行此操作,因此命令会灾难性地失败。所以基本上这将覆盖对PATH
。我正在寻找一个解决方案
PATH
条目
PATH
条目不应覆盖其他任务添加的条目 P.S。我在how to do this on Linux上找到了这个很好的解释,但它使用了Solaris上不存在的/etc/environment
。 (并且/etc/profile
再次被Ansible忽略。)
答案 0 :(得分:1)
尝试在ansible.cfg中将-o SendEnv=PATH
添加到ssh_args
。需要