установить путь, если файл существует в Ansible yml-коде - PullRequest
1 голос
/ 19 марта 2020

Я пытаюсь установить переменную, только когда файл существует, вот одна из моих попыток

---
- hosts: all
  tasks:
  - stat:
      path: '{{ srch_path_new }}/bin/run'
    register: result
  - vars: srch_path="{{ srch_path_new }}"
    when: result.stat.exists

Это также не сработало

  - vars: srch_path:"{{ srch_path_new }}"

1 Ответ

0 голосов
/ 19 марта 2020

Задача, которую вы ищете, называется set_fact: и является механизмом, который ansible использует для объявления произвольных «переменных хоста», иногда называемых «хост-переменными», или (также сбивающими с толку) «фактами»

Синтаксис будет:

- set_fact:
    srch_path: "{{ srch_path_new }}"
  when: result.stat.exists

Кроме того, хотя vars: является допустимым ключевым словом в задаче, его синтаксис такой же, как set_fact: ( или vars: в книге игр): словарь yaml, пара , а не a key:value, как у вас. Например:

- debug:
    msg: hello, {{ friend }}
  vars:
    friend: Jane Doe

и помните, что vars: в задаче существуют только для этой задачи

...