Ansible 플레이 북을 사용하여 데비안 기반 시스템 www
에서 디렉토리 를 어떻게 만드 /srv
나요?
Ansible 플레이 북을 사용하여 데비안 기반 시스템 www
에서 디렉토리 를 어떻게 만드 /srv
나요?
답변:
파일 모듈이 필요합니다. 디렉토리를 작성하려면 다음 옵션을 지정해야합니다 state=directory
.
- name: Creates directory
file:
path: /src/www
state: directory
http://docs.ansible.com/file_module.html 에서 다른 옵션을 볼 수 있습니다
all immediate subdirectories
는 혼란 스럽습니다. 정의하고 예를 들어 주시겠습니까?
파일 모듈을 확장하고 소유자, 그룹 및 권한을 설정할 수도 있습니다. (참고 : Ansible 파일 문서 )
- name: Creates directory
file:
path: /src/www
state: directory
owner: www-data
group: www-data
mode: 0775
디렉토리를 재귀 적으로 작성할 수도 있습니다.
- name: Creates directory
file:
path: /src/www
state: directory
owner: www-data
group: www-data
mode: 0775
recurse: yes
이렇게하면 두 디렉토리가 존재하지 않으면 두 디렉토리가 모두 만들어집니다.
recursive
인수는 사용 등이 많이 있습니다 mkdir -p
(그 인터넷 검색에 대한 ansible에서 mkdir -p를 ).
recurse
매개 변수는을 좋아하지 않습니다 mkdir -p
. 지정된 파일 속성을 반복적으로 설정합니다 (state = directory에만 적용됨). 인 경우 state=directory
모든 직계 서브 디렉토리가 존재하지 않으면 작성됩니다. 1.7 이후 제공된 권한으로 작성됩니다.
=
문자 와 함께 오래된 구문을 사용하고 :
, 새로운 줄에 각
chmod -R
. 즉, path
이미 디렉토리로 존재하고 그 안에 파일이 있으면 recurse
옵션은 (아쉽게도) 동일한 권한을 파일에 적용합니다. 이것은 더 나은 또는 더 나쁜 의도적으로 설계된 것 입니다.
다음을 사용하여 만들 수 있습니다.
- name: Create Folder
file:
path: /srv/www/
owner: user
group: user
mode: 0755
state: directory
- name: Create Folder
file:
path=/srv/www/
owner=user
group=user
mode=0755
state=directory
디렉토리를 만들 수 있습니다. 사용
# create a directory if it doesn't exist
- file: path=/src/www state=directory mode=0755
regaridng 디렉토리 및 파일 시스템에 대한 자세한 내용은 http://docs.ansible.com/ansible/file_module.html 을 참조 하십시오 .
여기에 모든 답변에 추가로 하나 이상의 디렉토리를 만들어야하는 상황이 많으므로 각 디렉토리에 대해 별도의 작업을 만드는 대신 루프를 사용하는 것이 좋습니다.
- name: Creates directory
file:
path: "{{ item }}"
state: directory
with_items:
- /srv/www
- /dir/foo
- /dir/bar
Windows에서 디렉토리를 작성하려면 다음을 수행하십시오.
- 이름 : 디렉토리 구조 생성
win_file :
경로 : C : \ Temp \ folder \ subfolder>
상태 : directory
---
- hosts: all
connection: local
tasks:
- name: Creates directory
file: path=/src/www state=directory
위의 플레이 북은 / src 경로에 www 디렉토리를 만듭니다.
위의 플레이 북을 실행하기 전에. 사용 가능한 호스트 연결이 설정되어 있는지 확인하십시오.
"localhost ansible_connection = local"
/ etc / ansible / hosts에 있어야합니다
자세한 내용은 알려주십시오.
파일 모듈을 사용하여 디렉토리를 작성하고 "ansible-doc file"명령을 사용하여 파일 모듈에 대한 세부 사항을 가져 오십시오.
다음은 "state"옵션입니다.
인 경우
directory
모든 직계 서브 디렉토리가 존재하지 않으면 작성됩니다. 1.7 이후 제공된 권한으로 작성됩니다.
인 경우file
파일이없는 경우 파일이 작성되지 않습니다. 해당 동작을 원하면 [복사] 또는 [서식 파일] 모듈을 참조하십시오.
인 경우link
심볼릭 링크가 생성되거나 변경됩니다.hard
하드 링크에 사용하십시오 .
인 경우absent
디렉토리가 재귀 적으로 삭제되고 파일 또는 심볼릭 링크가 연결 해제됩니다.참고
file
상태가 변경되지 않았으로 경로가 존재하지 않는 경우 실패하지 않습니다.만약
touch
경로가 존재하지 않을 경우 기존 파일 또는 디렉토리 (방식과 유사한 파일 액세스 및 수정 시간을 업데이트받을 때 (1.4 신규), 빈 파일이 생성됩니다touch
명령 줄에서 작동).
이 경우 "file"모듈을 사용할 수 있습니다. 소유자, 그룹, 위치, 모드 등과 같이 새로 작성된 디렉토리에 전달할 수있는 인수가 너무 많습니다 .....
파일 모듈에 대한 자세한 설명은이 문서를 참조하십시오.
https://docs.ansible.com/ansible/latest/modules/file_module.html#file-module
이 모듈은 디렉토리를 만들기위한 것이 아니라는 것을 기억하십시오 !!!
많은 Playbooks 예제를보고 Adhoc 명령 예제를 언급하고 싶습니다.
$ ansible -i inventory -m file -a "path = / tmp / direcory state = directory (디렉토리 대신 파일을 만들기 위해 터치를 언급 할 수 있음)
디렉토리가 존재하는지 확인한 다음 일부 작업을 실행하려면 (예 : 디렉토리 작성) 다음을 사용하십시오.
- name: Check if output directory exists
stat:
path: /path/to/output
register: output_folder
- name: Create output directory if not exists
file:
path: /path/to/output
state: directory
owner: user
group: user
mode: 0775
when: output_folder.stat.exists == false
state=directory
모든 직계 서브 디렉토리가 존재하지 않으면 작성됩니다. 1.7 이후 제공된 권한으로 작성됩니다.