Назад | Перейти на главную страницу

ansible: почему пропускается файловый модуль?

У меня есть playbook для ansible 1.1, в котором я делаю что-то вроде этого:

- name: copy files
  sudo: True                                                                                                             
  shell: cp /from/* /to/

- name: change owner
  sudo: True
  file: path=$item owner=newuser group=newgroup
  with_fileglob: /to/*

Вторая задача «смена собственника» всегда пропускается. кто-нибудь может помочь мне узнать почему? модуль файла пропускает, потому что файлы существуют? Я застрял :)

Из документация:

Помните, что плагины поиска запускаются на «управляющей» машине:

with_fileglob - это плагин поиска, поэтому он ищет файлы на локальном сервере, на котором вы запускаете ansible-playbook.

Вот что можно сделать:

- name: list files 
  action: command ls -1 /to/* 
  register: dumpfiles 

- name: change ownership 
  action: file path=$item owner=newuser group=newgroup
  with_items: ${dumpfiles.stdout_lines}

Ansible 1.1 добавил параметр рекурсии в файловый модуль, поэтому все, что вам нужно сделать для задачи смены владельца, это:

- name: change ownership 
  action: file state=directory recurse=yes path=/to/ owner=newuser group=newgroup

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