답변 : 왜 파일 모듈을 건너 뛰는가?


8

다음과 같은 작업을 수행 할 수있는 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/*

두 번째 작업 인 "소유자 변경"은 항상 건너 뜁니다. 아무도 이유를 찾는 데 도움을 줄 수 있습니까? 파일이 존재하므로 파일 모듈을 건너 뛰고 있습니까? 나는 붙어있다 :)


그것이 $ item을 허용하는지 알지 못했습니다 ... 나는 그것이 {{item}}이라고 생각했습니다
AKS

답변:


16

에서 문서 :

조회 플러그인은 "제어"시스템에서 실행됩니다.

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}

당신이 그것을 말할 수 있도록 지금 너무 의미가 있습니다. [newgroup /에 : 대한 Chown -R NEWUSER 쉘] BTW, 내가 사용하여이 문제를 해결
deadsven

3
이 경우 쉘을 사용하는 것은 dem 등원을 잃기 때문에 선호되는 방법이 아닙니다. 대신 파일 모듈과 with_items를 사용해야합니다.
Tom Aac

예, 파일 모듈을 사용하고 싶지만 with_items는 globs를 지원하지 않습니까? with_items 목록의 모든 파일을 나열하는 것은 실제로 내가 원하는 것이 아닙니다
deadsven

내 대답을 참조하십시오. 필요한 것이 있습니다.
Tom Aac

2
chown을 실행할 때마다 파일의 타임 스탬프가 변경됩니다. 특히 ctime. 예를 들어 일부 백업 소프트웨어에서 문제가 될 수 있습니다.
Tom Aac

5

Ansible 1.1은 recurse 매개 변수를 파일 모듈에 추가 했으므로 소유권 변경 태스크를 위해 수행해야하는 모든 작업은 다음과 같습니다.

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

이것은 실제로 상황이 변할 때 더욱 분명해질 것입니다. 쉘이나 명령 모듈을 사용하면 실제로 변경된 것이 없더라도 항상 변경된 상태를 반환합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.