2017-02-15 13 views
1

У меня есть 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

Вы не должны изменять переменную PATH. Вместо этого измените PATH в/etc/environment или установите 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"