ansible: perché il modulo file salta?


8

Ho un playbook 1.1 responsible in cui faccio qualcosa del genere:

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

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

La seconda attività, "cambia proprietario", è sempre ignorata. qualcuno può aiutarmi a scoprire perché? il modulo file salta perché i file esistono? Sono bloccato :)


Non ho mai saputo se permettesse $ item ... Pensavo fosse {{item}}
Arun Sangal il

Risposte:


16

Dalla documentazione :

Ricorda che i plug-in di ricerca vengono eseguiti sulla macchina "di controllo":

with_fileglob è un plug-in di ricerca, quindi cerca i file sul server locale, quello da cui stai eseguendo ansible-playbook.

Ecco cosa puoi fare:

- 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}

questo ha molto senso ora che lo dici. A proposito, l'ho risolto usando [shell: chown -R newuser: newgroup / to]
deadsven

3
Usare la shell in questo caso non è il modo preferibile poiché stai perdendo l'idempotenza. Dovresti invece utilizzare il modulo file e with_items
Tom Aac

si, mi piacerebbe usare il modulo file, ma with_items non supporta globs, vero? elencare tutti i file in un elenco with_items non è proprio quello che voglio
deadsven,

Vedi la mia risposta, ecco di cosa hai bisogno
Tom Aac,

2
Ogni volta che esegui chown, cambi il timestamp del file. In particolare ctime. Questo potrebbe essere un problema per alcuni software di backup, ad esempio.
Tom Aac,

5

Ansible 1.1 ha aggiunto il parametro recurse al modulo file, quindi tutto ciò che devi fare per il tuo compito di modifica della proprietà è questo:

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

Ciò renderà più evidente quando effettivamente le cose cambiano; l'uso della shell o dei moduli di comando restituirà sempre uno stato modificato, anche se nulla è stato effettivamente modificato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.