有没有办法在我的剧本中的“调试”语句中将ansible日期转换为不同的时区?我不想在剧本级别设置全球时区。我有这个 :
debug:
msg: "{{ '%Y-%m-%d %H:%M:%S' | strftime(ansible_date_time.epoch) }}"
Run Code Online (Sandbox Code Playgroud)
这工作正常,但显示 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 }}"
Run Code Online (Sandbox Code Playgroud)
结果如下:
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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7792 次 |
最近记录: |