2017-02-15 6 views
1

나는 안전한 명령을 사용하여 yml 파일을 가지고 있습니다. 다음과 같이 파일 내부 i는 기존의 환경 경로에 서비스 위치를 추가하고 : 그래서어떻게 적용하여 환경 경로가 이미 존재하는지 여부를 확인할 수 있습니까?

-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가 이미 추가되었는지 확인하기위한 검사를하는 것입니다. 결국 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

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" 
관련 문제