Вычтите дату из выражения дзиндзя - PullRequest
1 голос
/ 14 января 2020

Я просто хочу удалить 1 месяц до date_operation в Ansible задачу

vars:
  # for example current
  current_date_operation: "{{ ansible_date_time.date }}" 
  previous_date_operation : "{{ '%Y-%m-%d'|strftime(current_date_operation.epoch|int - 2592000) }}"

Я хочу вычесть 1 месяц до current_date_operation из date_operation, но приведенный выше код дает мне следующая ошибка:

"msg": "Задача включает параметр с неопределенной переменной. Ошибка: 'ansible .utils.unsafe_proxy.AnsibleUnsafeText object' не имеет атрибута 'epoch'

Есть идеи?

Спасибо

1 Ответ

1 голос
/ 14 января 2020

В вашей декларации vars вы сначала получаете ключ date от объекта ansible_date_time.

На следующей строке вы используете эту переменную set (которая является строкой) и вызываете на нем ключ epoch, который не существует, так как является свойством родительского объекта (т. е. ansible_date_time). Поскольку ваше объявление var не может быть правильно проанализировано, сама переменная не определена.

Следующая книга демонстрирует, что вы можете получить ожидаемый результат, исправив определение vars:

---
 - hosts: localhost

   vars:
     current_date_operation: "{{ ansible_date_time.date }}"
     previous_date_operation : "{{ '%Y-%m-%d' | strftime(ansible_date_time.epoch | int - 2592000) }}"

   tasks:
     - debug:
         var: current_date_operation
     - debug:
         var: previous_date_operation

Тестовый прогон:

$ ansible-playbook playbook.yml 

PLAY [localhost] **************************************************************************************************************************************************************************************************

TASK [Gathering Facts] ********************************************************************************************************************************************************************************************
ok: [localhost]

TASK [debug] ******************************************************************************************************************************************************************************************************
ok: [localhost] => {
    "current_date_operation": "2020-01-14"
}

TASK [debug] ******************************************************************************************************************************************************************************************************
ok: [localhost] => {
    "previous_date_operation": "2019-12-15"
}

PLAY RECAP ********************************************************************************************************************************************************************************************************
localhost                  : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
...