在 ansible 中,我想要操作像这样组成或组成的文件/目录/档案:
我该怎么做?看来 Ansible 无法处理这个问题。(我怀疑)。那么,我做错了什么?
前任:
- name: create file with a date in name
file: path=/path/somefile.`date +%y_%m_%d`
- name: unzip a file
unarchive: path=/path/zomezip.`date +%y_%m_%d`.tar.gz bla bla....
答案1
设置一个变量,然后将其与 Ansible 的Jinja2 模板系统(看起来您正在尝试使用点运算符和反引号来执行 PHP)
vars:
date: "{{ lookup('pipe', 'date +%Y%m%d-%H%M') }}"
tasks:
- name: create file with a date in name
file: path="/path/somefile{{ date }}"
或者在模板中使用查找本身:
- name: create file with a date in name
file: path="/path/somefile{{ lookup('pipe', 'date +%Y%m%d-%H%M') }}"
答案2
从 2.4 开始,您还可以使用strftime
过滤器 (文档):
# Display year-month-day
{{ '%Y-%m-%d' | strftime }}
# Display hour:min:sec
{{ '%H:%M:%S' | strftime }}
# Use ansible_date_time.epoch fact
{{ '%Y-%m-%d %H:%M:%S' | strftime(ansible_date_time.epoch) }}
# Use arbitrary epoch value
{{ '%Y-%m-%d' | strftime(0) }} # => 1970-01-01
答案3
你可以试试..
vars:
- a_timestamp: "{{ timestamp.stdout }}"
tasks:
- name: Get a timestamp
command: date +%Y%m%d%H%M%S
register: timestamp
然后在需要的地方添加变量。