ansible: mengapa modul file dilewati?

8

Saya memiliki buku pedoman 1,1 yang mungkin di mana saya melakukan sesuatu seperti ini:

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

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

Tugas kedua, "ganti pemilik" selalu dilewati. adakah yang bisa membantu saya mencari tahu mengapa? Apakah modul file dilewati karena file ada? Aku terjebak :)

Deadsven
sumber
Tidak pernah tahu apakah itu memungkinkan $ item ... Saya pikir itu {{item}}
Arun Sangal

Jawaban:

16

Dari dokumentasi :

Ingat plugin pencarian dijalankan di mesin "pengendali":

with_fileglob adalah plugin pencarian, sehingga mencari file di server lokal, yang Anda jalankan dari playbook-ansible.

Inilah yang dapat Anda lakukan:

- 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
sumber
itu sangat masuk akal sekarang karena Anda mengatakannya. BTW, saya memecahkan ini dengan menggunakan [shell: chown -R newuser: newgroup / to]
deadsven
3
Menggunakan shell dalam hal ini bukan cara yang lebih disukai karena Anda kehilangan idempotensi. Anda sebaiknya menggunakan modul file dan with_items
Tom Aac
ya, saya ingin menggunakan modul file, tetapi with_items tidak mendukung gumpalan bukan? daftar setiap file dalam daftar with_items tidak benar-benar apa yang saya inginkan
deadsven
Lihat jawaban saya, ada yang Anda butuhkan
Tom Aac
2
Setiap kali Anda menjalankan chown, Anda mengubah stempel waktu file. Dalam waktu tertentu. Itu mungkin menjadi masalah untuk beberapa perangkat lunak cadangan misalnya.
Tom Aac
5

Kemungkinan 1.1 menambahkan parameter berulang ke modul file, jadi yang perlu Anda lakukan untuk mengubah tugas kepemilikan adalah:

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

Ini akan membuatnya lebih jelas ketika sebenarnya hal-hal berubah; menggunakan modul shell atau perintah akan selalu mengembalikan status yang diubah, bahkan jika tidak ada yang benar-benar berubah.

HitScan
sumber