Как я могу автоматически сгенерировать имя файла с ansible -playbook? - PullRequest
0 голосов
/ 05 марта 2020

Я использую ansible -playbook для генерации пакета.

Эта задача запускается каждое утро, один раз.

Но иногда мне приходится заново генерировать пакет.

В то время (если я уже сгенерировал пакет, и пакет находится в каталоге пакета), я надеюсь, что второй пакет имеет другое имя.

Мой код для генерации имени пакета это как сильфон.

package_file_name: "NLUD_{{lookup('pipe','date +%Y%m%d')}}_0.tar.gz"

Тогда результат имени пакета будет "NLUD_% Y% m% d_0.tar.gz"

Я надеюсь создать пакет с именем "NLUD_% Y% m% d_1.tar.gz" во втором поколении.

Ответы [ 2 ]

0 голосов
/ 05 марта 2020

Просто проверьте существование файла и измените имя файла, если файл существует. Например

    - set_fact:
        package_file_name: "NLUD_{{ lookup('pipe','date +%Y%m%d') }}_0.tar.gz"

    - stat:
        path: "{{ package_directory }}/{{ package_file_name }}"
      register: result

    - set_fact:
        package_file_name: "NLUD_{{lookup('pipe','date +%Y%m%d')}}_1.tar.gz"
      when: result.stat.exists
0 голосов
/ 05 марта 2020

Я почти уверен, что вы можете сделать это с помощью fileglob поиска :

- block:
  - name: sniff out existing filenames
    set_fact:
     file_suffix: '{{ (
        lookup("fileglob", package_pattern+"*.tar.gz", wantlist=True)
        | length) + 1 }}'
  - name: set the next sequential filename
    set_fact:
      package_file_name: '{{ package_pattern ~ file_suffix ~ ".tar.gz" }}'
  vars:
     package_pattern: NLUD_{{ lookup('pipe','date +%Y%m%d') }}_

Отдельно, хотя для вас это может и не иметь значения, в этом нет необходимости чтобы выполнить форматирование даты, фильтр strftime сделает это:

vars:
   package_pattern: NLUD_{{ "%Y%m%d" | strftime }}_
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...