datetime - Ansible 日期时间时区转换
问题描述
有没有办法在我的剧本中的“调试”语句中将 ansible 日期转换为不同的时区?我不想在剧本级别设置全局时区。我有这个 :
debug:
msg: "{{ '%Y-%m-%d %H:%M:%S' | strftime(ansible_date_time.epoch) }}"
这工作正常,但以 UTC 显示时间。我需要在 EDT 中显示时间而不在全局剧本级别设置时区。我该如何做到这一点?
解决方案
如果您使用command
任务运行date
而不是依赖ansible_date_time
变量,则可以通过环境变量设置时区。例如以下剧本:
- hosts: localhost
vars:
ansible_python_interpreter: /usr/bin/python
tasks:
- command: "date '+%Y-%m-%d %H:%M:%S'"
register: date_utc
environment:
TZ: UTC
- command: "date '+%Y-%m-%d %H:%M:%S'"
register: date_us_eastern
environment:
TZ: US/Eastern
- debug:
msg:
- "{{ date_utc.stdout }}"
- "{{ date_us_eastern.stdout }}"
输出结果:
PLAY [localhost] *****************************************************************************
TASK [Gathering Facts] ***********************************************************************
ok: [localhost]
TASK [command] *******************************************************************************
changed: [localhost]
TASK [command] *******************************************************************************
changed: [localhost]
TASK [debug] *********************************************************************************
ok: [localhost] => {
"msg": [
"2020-05-12 15:21:05",
"2020-05-12 11:21:06"
]
}
PLAY RECAP ***********************************************************************************
localhost : ok=4 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
推荐阅读
- javascript - 使用 Node 的“加密”模块时是否需要使用密钥派生?
- javascript - JavaScript:按常见项目字段组合项目值列表
- api - 将 LogMeIn Refresh Token Curl 转换为 Coldfusion
- java - 在 Java 对象中发送 Multipart 和 JSON 数据 - Spring Boot Rest
- python - 网上银行网页抓取
- google-cloud-platform - 有没有办法通过存储在 Google Cloud Storage 中的文本文档进行 grep?
- html - 寻找更简洁的语法来使用 css 网格重复模式的列?
- python - Python:类方法中的 *args 行为
- javascript - jQuery.val() 仅在使用 datepicker 的第二个事件上返回值
- flutter - 如何显示html的一部分?