【问题标题】:set path when file exists in Ansible yml code当文件存在于 Ansible yml 代码中时设置路径
【发布时间】:2020-06-30 16:53:32
【问题描述】:

我试图仅在文件存在时设置 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 }}"

【问题讨论】:

  • 如果某些东西不起作用,请尝试包含有意义的错误。在这种情况下,这不起作用的原因是 tasks 没有 vars 值。请看这里docs.ansible.com/ansible/latest/user_guide/…,了解基本结构应该是什么样子。

标签: ansible yaml


【解决方案1】:

您要查找的任务称为 set_fact:,它是 ansible 用于声明任意“主机变量”的机制,有时称为“主机变量”或(也令人困惑的)“事实”

语法是:

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

另外,虽然vars: Task 上的合法关键字,但其语法与set_fact:(或剧本上的vars:)相同:yaml 字典,不是像你以前那样一对key:value。例如:

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

请注意,任务上的vars: 存在仅用于该任务

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-11
    • 2017-03-20
    • 1970-01-01
    • 2015-08-10
    • 2016-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多