У меня есть 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
Это станет более очевидным, когда на самом деле что-то изменится; использование оболочки или командных модулей всегда возвращает измененный статус, даже если на самом деле ничего не было изменено.