Ansible 可比数据比较EC2

Ansible 可比数据比较EC2,ansible,Ansible,我不熟悉Ansible。 我使用ansible创建了EC2实例,并且能够使用EC2事实检索启动时间 但我无法以日期格式存储启动时间 我的目标是获得启动时间日期与系统日期之间的差异(无法找到),并执行一些操作 感谢您的指导 问候,, Naresh Sharma自Ansible 2.2以来,有一个方便的to_datetime(format)过滤器可用 以下是您的任务示例: --- - hosts: localhost gather_facts: yes tasks: - name:

我不熟悉Ansible。 我使用ansible创建了EC2实例,并且能够使用EC2事实检索启动时间

但我无法以日期格式存储启动时间

我的目标是获得启动时间日期与系统日期之间的差异(无法找到),并执行一些操作

感谢您的指导

问候,,
Naresh Sharma

自Ansible 2.2以来,有一个方便的
to_datetime(format)
过滤器可用

以下是您的任务示例:

---
- hosts: localhost
  gather_facts: yes
  tasks:
    - name: local date
      debug:
        msg: "{{ ansible_date_time.iso8601 }}"
    - ec2_remote_facts:
        region: eu-west-1
      register: ec2
    - name: instance date
      debug:
        msg: "{{ ec2.instances[0].launch_time }}"
    - name: date difference in days
      debug:
        msg: "{{ (ansible_date_time.iso8601[:19] | to_datetime(fmt) - ec2.instances[0].launch_time[:19] | to_datetime(fmt)).days }}"
      vars:
        fmt: "%Y-%m-%dT%H:%M:%S"
注意
[:19]
获取前19个字符以避免处理毫秒和时区字符

结果:

PLAY [localhost] ***************************************************************

TASK [setup] *******************************************************************
ok: [localhost]

TASK [local date] **************************************************************
ok: [localhost] => {
    "msg": "2017-02-03T18:39:12Z"
}

TASK [ec2_remote_facts] ********************************************************
ok: [localhost]

TASK [instance date] ***********************************************************
ok: [localhost] => {
    "msg": "2016-09-21T15:43:40.000Z"
}

TASK [date difference in days] *************************************************
ok: [localhost] => {
    "msg": "135"
}

PLAY RECAP *********************************************************************
localhost                  : ok=5    changed=0    unreachable=0    failed=0

非常感谢..Konstantin Suvorov
ansible_date_time.iso8601|to_datetime(“%Y-%m-%dT%H:%m:%SZ”)
也可以。这是
[:19]
的好把戏。语法在什么地方有记录吗?@trebor这是python切片的方式。请参阅