ansible: por que o módulo de arquivo está pulando?

8

Eu tenho um manual 1.1 ansible onde eu faço algo parecido com isto:

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

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

A segunda tarefa, "alterar proprietário" está sempre pulando. alguém pode me ajudar a descobrir o porquê? o módulo de arquivo está pulando porque os arquivos existem? Estou preso :)

deadsven
fonte
Nunca soube se ele permite que $ item ... Eu pensei que era {{artigo}}
Arun Sangal

Respostas:

16

Da documentação :

Lembre-se de que os plugins de pesquisa são executados na máquina "controladora":

with_fileglob é um plug-in de pesquisa, portanto, ele procura arquivos no servidor local, aquele em que você está executando o ansible-playbook.

Aqui está o que você pode fazer:

- 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}
Tom Aac
fonte
isso faz muito sentido agora que você diz isso. BTW, eu resolvi isso usando [shell: chown -R newuser: newgroup / to] #
deadsven
3
Usar shell neste caso não é a maneira preferível, pois você está perdendo a idempotência. Em vez disso você deve usar módulo de arquivo e with_items
Tom Aac
Sim, eu gostaria de usar o módulo de arquivo, mas with_items não suporta globs, não é? listando todos os arquivos em uma lista with_items não é realmente o que eu quero
deadsven
Veja a minha resposta, não é o que você precisa
Tom Aac
2
Toda vez que você executa o chown, você altera o carimbo de data / hora do arquivo. Em particular ctime. Isso pode ser um problema para alguns softwares de backup, por exemplo.
Tom Aac
5

O Ansible 1.1 adicionou o parâmetro recurse ao módulo do arquivo, portanto, tudo o que você precisa fazer para sua tarefa de propriedade de alteração é:

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

Isso tornará mais aparente quando as coisas realmente mudarem; o uso dos módulos shell ou de comando sempre retornará um status alterado, mesmo que nada tenha sido realmente alterado.

HitScan
fonte