web-dev-qa-db-fra.com

Ansible - comment enregistrer la sortie du module "FIND" et l'utiliser dans d'autres

J'ai besoin de trouver un fichier dans un répertoire inconnu et de le supprimer . J'ai essayé d'utiliser le module "find", d'enregistrer sa sortie et de le transmettre à "file".

Même si je vois un chemin enregistré, je ne peux pas l'utiliser plus tard:

< TASK [print find_result] >
ok: [1.2.3.4] => {
    "find_result": {
        "changed": false, 
        "examined": 3119, 
        "files": [
            {
                "atime": 1483973253.7295375, 
           ...
                "mode": "0600", 
                "mtime": 1483973253.7295375, 
                "nlink": 1, 
                "path": "/tmp/delme", 

Mon cahier est:

- hosts: "{{ target }}"
  become: no
  vars:
    find_what: "delme*"
    find_where: "/tmp"

  tasks:
  - name: finding files
    find:
      paths:            "{{ find_where }}"
      patterns:         "{{ find_what }}"
      recurse:          "yes"
      file_type:        "file"
    register: find_result

# \/ for debugging
  - name: print find_result
    debug: var=find_result

  - name: remove files
    file:
        path= "{{ item.path }}"
        state=absent
    with_items: "{{ find_result.files }}"
5
Marcin P

Il y a un défaut de syntaxe dans la tâche file - espace après le =

Essayer:

- name: remove files
  file:
    path: "{{ item.path }}"
    state: absent
  with_items: "{{ find_result.files }}"
9
Konstantin Suvorov

Il y a une erreur de syntaxe dans votre remove files task.

Vous pouvez utiliser:

- name: remove files
  file: >
    path={{ item.path }}
    state=absent
  with_items: "{{ find_result.files }}"

Ou

- name: remove files
  file: path={{ item.path }} state=absent
  with_items: "{{ find_result.files }}"
0
Davi Diório Mendes