在Ansible yml代码中存在文件时设置路径

在Ansible yml代码中存在文件时设置路径,ansible,yaml,Ansible,Yaml,我试图只在文件存在时设置var,下面是我的一个尝试 --- - 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 }}" 您正在寻找

我试图只在文件存在时设置var,下面是我的一个尝试

---
- 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 }}"

您正在寻找的任务被称为ansible,它是ansible用来声明任意“主机变量”的机制,有时被称为“hostvars”,或者(同样令人困惑的是)“facts”

语法是:

- set_fact:
    srch_path: "{{ srch_path_new }}"
  when: result.stat.exists
此外,虽然
vars:
是任务中的合法关键字,但其语法与
set\u事实:
(或剧本上的
vars:
)相同:yaml字典,不是
键:值
对。例如:

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

请注意,
vars:
任务上只存在该任务

您要查找的任务被调用,并且是ansible用来声明任意“主机变量”的机制,有时称为“hostvars”,或者(也令人困惑的是)“facts”

语法是:

- set_fact:
    srch_path: "{{ srch_path_new }}"
  when: result.stat.exists
此外,虽然
vars:
是任务中的合法关键字,但其语法与
set\u事实:
(或剧本上的
vars:
)相同:yaml字典,不是
键:值
对。例如:

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

请注意,任务上的变量只存在于该任务中

如果某项任务不起作用,请尝试包含有意义的错误。在这种情况下,这不起作用的原因是
tasks
没有
vars
值。请看这里的基本结构应该是什么样子。如果有些东西不起作用,请尝试包含有意义的错误。在这种情况下,这不起作用的原因是
tasks
没有
vars
值。请看这里的基本结构应该是什么样子。