ansible: tại sao mô-đun tập tin bỏ qua?


8

Tôi có một playbook khả thi 1.1, nơi tôi làm một cái gì đó như thế này:

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

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

Nhiệm vụ thứ hai, "chủ sở hữu thay đổi" luôn bỏ qua. bất cứ ai có thể giúp tôi tìm hiểu tại sao? là mô-đun tập tin bỏ qua vì các tập tin tồn tại? Tôi bị kẹt :)


Không bao giờ biết nếu nó cho phép $ item ... Tôi nghĩ đó là {{item}}
Arun Sangal

Câu trả lời:


16

Từ tài liệu :

Hãy nhớ các plugin tra cứu được chạy trên máy "điều khiển":

with_fileglob là một plugin tra cứu, vì vậy nó tìm kiếm các tệp trên máy chủ cục bộ, một plugin bạn đang chạy ansible-playbook từ đó.

Dưới đây là những gì bạn có thể làm:

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

Điều đó rất có ý nghĩa khi bạn nói điều đó. BTW, tôi đã giải quyết vấn đề này bằng cách sử dụng [shell: chown -R newuser: newgroup / to]
dẫn đầu

3
Sử dụng shell trong trường hợp này không phải là cách thích hợp hơn vì bạn đang mất dần sự bình tĩnh. Thay vào đó, bạn nên sử dụng mô-đun tệp và with_items
Tom Aac

vâng, tôi muốn sử dụng mô-đun tệp, nhưng with_items không hỗ trợ các khối lượng phải không? liệt kê tất cả các tệp trong danh sách with_items không thực sự là điều tôi muốn
dẫn

Xem câu trả lời của tôi, có những gì bạn cần
Tom Aac

2
Mỗi khi bạn chạy chown, bạn thay đổi dấu thời gian của tệp. Đặc biệt là thời gian. Đó có thể là vấn đề đối với một số phần mềm sao lưu chẳng hạn.
Tom Aac

5

Ansible 1.1 đã thêm tham số recurse vào mô-đun tệp, vì vậy tất cả những gì bạn cần làm cho nhiệm vụ sở hữu thay đổi của mình là:

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

Điều này sẽ làm cho nó rõ ràng hơn khi thực sự mọi thứ thay đổi; sử dụng các mô-đun shell hoặc lệnh sẽ luôn trả về trạng thái đã thay đổi, ngay cả khi không có gì thực sự thay đổi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.