проверить, существует ли файл / папка и выполнить действия в ansible - PullRequest
0 голосов
/ 16 июня 2019

У меня есть следующий код:

- name: check if file/folder exists
  stat:
    path: "{{ item }}"
  register: check_file
  with_items:
  - ['{{ source_folder }}','/etc/file', '/usr/file', '/root/dir', '/etc/test']

- debug:
    msg: "{{ check_file }}"
    #msg: "{{ check_file.stat.exists }}"
    #msg: "{{ check_file.results }}"

- name: Backup files
  copy:
   src: "{{ item }}"
   dest: "{{ backup_folder }}/{{ datetime }}/files"
  with_items:
  - ['{{ source_folder }}','/etc/file', '/usr/file', '/root/dir', '/etc/test']
  ignore_errors: "{{ not failure_is_critical }}

Я пытаюсь проверить файлы / папки и, если они не существуют, продолжить резервное копирование и записать некоторую информацию в журналы,что-то вроде:

folder1 found - OK
file1   found - OK
folder2 not found -skipping
file2   not found -skipping

И в конце покажите результат полного резервного копирования (успешное завершение) или частичного резервного копирования (сбой)

Ответы [ 2 ]

1 голос
/ 17 июня 2019

может быть, вы можете попробовать это: зациклитесь на результатах вашей статистики и добавьте условие существования для каждого элемента

- name: Backup files
  copy:
    src: "{{ 'item.stat.path }}"
    dest: "{{ backup_folder }}/{{ datetime }}/files"
  loop: "{{ check_file.results }}"
  when: item.stat.exists      
  ignore_errors: "{{ not failure_is_critical }}

[ПРАВИТЬ] заменил item.item.name на item.stat.path, как предложено @ anarchist

0 голосов
/ 27 июня 2019

Я написал это так, чтобы получить результат:

- name: Set check files result
  set_fact:
    store_check_file: "{{ check_file.results | map(attribute='stat.exists') | list }}"

- name: Set backup result
  set_fact:
    backup_result: "{{ 'partial' if false in store_check_file else 'full'}}"

Тогда я могу напечатать его с отладкой

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...