Ответ 1
Я не верю, что есть встроенный способ генерации даты "на лету", но один из них - использовать lookup, который может выходить на время. Пример:
log_path="/var/log/ansible.{{ lookup('pipe', 'date +%Y%m%d%H%M%S') }}.log"
В настоящее время я разрабатываю ansible script для создания и развертывания Java-проекта.
поэтому я могу установить log_path, как показано ниже
log_path=/var/log/ansible.log
но трудно найти историю сборки. Возможно ли добавить дату и время для имени файла журнала?
например,
ansible.20150326145515.log
Я не верю, что есть встроенный способ генерации даты "на лету", но один из них - использовать lookup, который может выходить на время. Пример:
log_path="/var/log/ansible.{{ lookup('pipe', 'date +%Y%m%d%H%M%S') }}.log"
Вот опция, использующая переменную среды ANSIBLE_LOG_PATH
благодаря Bash псевдониму оболочки:
alias ansible="ANSIBLE_LOG_PATH=ansible-\`date +%Y%m%d%H%M%S\`.log ansible"
Не стесняйтесь использовать абсолютный путь, если хотите.
Я нашел его.
просто добавьте задачу, чтобы скопировать (или команду mv) лог локально
- name: Copy ansible.log
connection: local
command: mv ./logs/ansible.log ./logs/ansible.{{ lookup('pipe', 'date %Y%M%d%H%M%S') }}.log
run_once: true
благодаря @jarv
Как насчет этого:
- shell: date +%Y%m%d%H%M%S
register: timestamp
- debug: msg="foo.{{timestamp.stdout}}.log"
Вывод:
TASK [command] *****************************************************************
changed: [blabla.example.com]
TASK [debug] *******************************************************************
ok: [blabla.example.com] => {
"msg": "foo.20160922233847.log"
}
По словам симпатичных людей в IRC IRC IRIS, это можно сделать с помощью настраиваемого плагина обратного вызова.
Я еще не сделал этого, потому что я не могу установить библиотеку Ansible Python на этом компьютере. В частности, Windows 7 не может иметь имена каталогов > 260 символов в длину, а pip
пытается сделать длительные временные пути. Но если кто-то обходит его, отправьте его здесь.