이는 단일 명령을 실행 chmod
하고 사용자 권한을 읽어야 하는 Ansible 자동화의 일부입니다. 그러므로,
chmod -R $fileperm <filename>
그러나 때때로 사용자가 아무것도 제공하지 않아 비어 있을 수 있습니다 fileperm
. $fileperm
이 경우 파일 권한은 동일하게 유지되어야 하지만 위 명령은 실패합니다.
chmod
두 명령이 서로 다른 조건을 갖는 것을 원하지 않습니다 when
.
가능하다면 동일한 명령에서 사용자가 권한을 제공하는지 여부를 수용하는 방법을 제안해 주시겠습니까? 현재 Ansible의 command
모듈을 사용하여 chmod
.
답변1
chmod
패스 command
하거나 전화 하지 마십시오 shell
. 모듈을 사용하여 file
권한을 설정합니다. 참조문서. 이는 멱등적입니다. 이 모듈은 파일/디렉토리의 현재 상태를 확인하고 필요한 경우에만 변경합니다.
이 경우 이 작업을 추가합니다.
- set_fact:
files:
- name: file1
mode: 0755
- name: file2
- name: file3
mode: 0644
- file:
path: "{{ item.name }}"
mode: "{{ item.mode | default(omit) }}"
loop: "{{ files }}"
"때때로 사용자가 제공하지 않을 수도 있습니다"라는 말이 무슨 뜻인지 잘 모르겠습니다. Ansible은 상호작용성이 거의 없습니다. 그래서 무슨 뜻인지 잘 모르겠습니다. 또한 bash 변수에 대해 이야기하고 있습니다 $fileperm
. 예를 들어 Ansible에는 "bash vars"가 없습니다. 그것들은 사실이며 Jinja를 사용하여 이를 평가합니다.