我有一个使用ansible命令的yml文件。在文件内部,我将服务位置附加到现有环境路径,如下所示:
-name: retreiving the path
raw: $ENV:PATH
register: path_out
- name: adding the services to the environment path
raw: SETX /M PATH "$ENV:PATH;{{item.service_path}}"
with_items:
"{{ services }}"
因此,每当执行脚本时,即使先前添加了相同的服务路径,它也会将服务路径附加到现有环境路径,这会一次又一次地创建相同服务路径的附加。因此我想要的是检查是否已经添加了service_path,并且最后不会再次使用它。我试过以下但没有帮助:
- name: adding the services to the environment path
raw: SETX /M PATH "$ENV:PATH;{{item.service_location}}"
with_items:
"{{ services }}"
when : ansible_env.PATH;{{item.service_location}}.exists is not defined
它根本不起作用请帮忙怎么检查?平台是我正在工作的窗口
答案 0 :(得分:0)
您不应修改PATH变量本身。而是修改/ etc / environment中的PATH,或者如果仅在那里使用PATH,则设置每个任务的PATH。
可以在这里找到一个很好的例子:https://coderwall.com/p/ynvi0q/updating-path-with-ansible-system-wide
- name: add {{extra_path}} to path
lineinfile: >
dest=/etc/environment
state=present
backrefs=yes
regexp='PATH=(["]*)((?!.*?{{extra_path}}).*?)(["]*)$'
line="PATH=\1\2:{{extra_path}}\3"