Подтвердить что ты не робот

Как проверить файл в недоступном?

Мне нужно проверить, существует ли файл в /etc/. Если файл существует, я должен пропустить задачу. Вот код, который я использую:

- name: checking the file exists
  command: touch file.txt
  when: $(! -s /etc/file.txt)

Если существует file.txt, я должен пропустить задачу.

4b9b3361

Ответ 1

Вы можете сначала проверить, существует ли целевой файл или нет, а затем принять решение на основе результата его результата.

tasks:
  - name: Check that the somefile.conf exists
    stat:
      path: /etc/file.txt
    register: stat_result

  - name: Create the file, if it doesnt exist already
    file:
      path: /etc/file.txt
      state: touch
    when: stat_result.stat.exists == False 

Ответ 2

Модуль stat сделает это, а также получит много другой информации для файлов. В приведенной ниже документации:

- stat: path=/path/to/something
  register: p

- debug: msg="Path exists and is a directory"
  when: p.stat.isdir is defined and p.stat.isdir

Ответ 3

В общем, вы сделали бы это с . Но командный модуль имеет параметр creates, который делает это очень простым:

- name: touch file
  command: touch /etc/file.txt
  args:
    creates: /etc/file.txt

Я думаю, что ваша команда touch - всего лишь пример? Лучшая практика заключалась бы в том, чтобы не проверять что-либо вообще и позволить незаметному выполнять свою работу - с правильным модулем. Поэтому, если вы хотите, чтобы файл существовал, вы должны использовать файловый модуль:

- name: make sure file exists
  file:
    path: /etc/file.txt
    state: touch

Ответ 4

Это может быть достигнуто с помощью модуля stat, чтобы пропустить задачу, когда файл существует.

- hosts: servers
  tasks:
  - name: Ansible check file exists.
    stat:
      path: /etc/issue
    register: p
  - debug:
      msg: "File exists..."
    when: p.stat.exists
  - debug:
      msg: "File not found"
    when: p.stat.exists == False