Ansible 固定日期和时间

Ansible 固定日期和时间,ansible,Ansible,我利用此功能获取日期/时间,而不在我的剧本中运行事实,以节省运行时间: 亚马尔 date: "{{ lookup('pipe','date \"+%Y-%m-%d-%H%M\"') }}" environment: execution_date: "{{ lookup('pipe','date \"+%Y%m%d-%H%M\"') }}" 我注意到,如果我在剧本开头引用这一点,它只引用一次,例如2019-04-10-1300。如果我在剧本末尾(5分钟后)引用它,则时间不同,例如2019-

我利用此功能获取日期/时间,而不在我的剧本中运行事实,以节省运行时间:

亚马尔

date: "{{ lookup('pipe','date \"+%Y-%m-%d-%H%M\"') }}"
environment:
  execution_date: "{{ lookup('pipe','date \"+%Y%m%d-%H%M\"') }}"
我注意到,如果我在剧本开头引用这一点,它只引用一次,例如2019-04-10-1300。如果我在剧本末尾(5分钟后)引用它,则时间不同,例如2019-04-10-1305

我想使用这个变量来引用一个目录名,因此我希望它在脚本生命周期的任何时候都是常量

 ./outputs/"{{ date }}"/errors.txt
阿卡

如何使该值为常数

编辑 这个任务给了我一个错误

     - name: TESTS
      environment: 
        execution_date: "{{ lookup('pipe','date \"+%Y%m%d-%H%M\"') }}"
      tags:
        - test
下面的组变量不能通过“environment.execution\u date”或“execution\u date”调用

亚马尔

date: "{{ lookup('pipe','date \"+%Y-%m-%d-%H%M\"') }}"
environment:
  execution_date: "{{ lookup('pipe','date \"+%Y%m%d-%H%M\"') }}"

听起来你想保存/回忆一个特定的日期,就像使用变量一样

可能有几种方法可以做到这一点,我的第一个想法是可以将其导出为环境变量,然后调用该值:

      environment:
        execution_date: "{{ lookup('pipe','date \"+%Y-%m-%d-%H%M\"') }}"
然后,您可以像这样使用它:

./outputs/"{{ execution_date }}"/errors.txt

请在此处查看相关文档:

易变变量不存储值,每次引用时都会重新计算它们。因此,
date
变量总是对当前时间进行新的查找

要存储一个值,并在以后调用它,您可以设置一个事实,例如

- hosts: localhost
  connection: local
  tasks:
    - set_fact:
        execution_time: "{{ lookup('pipe','date \"+%Y-%m-%d-%H%M\"') }}"
    - debug:
        msg: "{{ execution_time }}"
    - pause:
        minutes: 2

- hosts: localhost
  connection: local
  tasks:
    - debug:
        msg: "{{ execution_time }}"

请参见编辑注释。我不能让它正常工作。凯尔,谢谢你的回复。如果主机相同,此解决方案可用于在一个播放中设置日期,并在另一个播放中引用该日期。我如何在一个播放中设置日期(比如说“localhost”),在播放两个具有不同主机的播放中设置和引用?如果我在第一场比赛中设置了日期/时间,在第二场比赛中也设置了日期/时间,那么日期/时间可能不同。这将破坏一致性。