【问题标题】:Ansible date compare EC2Ansible 日期比较 EC2
【发布时间】:2017-02-04 02:40:32
【问题描述】:

我是 Ansible 的新手。 我使用 ansible 创建了 EC2 实例,并且能够使用 EC2 事实检索启动时间。

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

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

感谢任何指导。

问候, 纳雷什·夏尔马

【问题讨论】:

  • @trebor 这是 python 切片的方式。见here

标签: ansible


【解决方案1】:

从 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

【讨论】:

  • 非常感谢..康斯坦丁·苏沃洛夫
  • ansible_date_time.iso8601 | to_datetime('%Y-%m-%dT%H:%M:%SZ') 也可以。
  • [:19] 的绝招。该语法是否记录在某处?
  • 请注意,如果您想在进行时间计算之前在执行大量操作的 playbook 中使用 ansible_date_time,则需要使用 setup: filter='ansible_date_time' 强制更新当前时间戳以获得准确的当前时间。
猜你喜欢
  • 2011-12-31
  • 2018-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-20
  • 2020-09-08
  • 2012-09-06
  • 2015-12-29
相关资源
最近更新 更多