Ansible을 사용하여 디렉토리를 만드는 방법


답변:


635

파일 모듈이 필요합니다. 디렉토리를 작성하려면 다음 옵션을 지정해야합니다 state=directory.

- name: Creates directory
  file:
    path: /src/www
    state: directory

http://docs.ansible.com/file_module.html 에서 다른 옵션을 볼 수 있습니다


36
인 경우 state=directory모든 직계 서브 디렉토리가 존재하지 않으면 작성됩니다. 1.7 이후 제공된 권한으로 작성됩니다.
Alex

1
@Alex all immediate subdirectories는 혼란 스럽습니다. 정의하고 예를 들어 주시겠습니까?
Jamie Jackson

8
@JamieJackson 실수가 있습니다. "모든 중간 서브 디렉토리"여야합니다.
Alex

203

파일 모듈을 확장하고 소유자, 그룹 및 권한을 설정할 수도 있습니다. (참고 : 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

이렇게하면 두 디렉토리가 존재하지 않으면 두 디렉토리가 모두 만들어집니다.


38
recursive인수는 사용 등이 많이 있습니다 mkdir -p(그 인터넷 검색에 대한 ansible에서 mkdir -p를 ).
Micah Elliott

2
나는 거의 chmod를에서 mkdir -p / foo는 / 바 &&처럼 ... 그것은 또한 하위 파일의 권한을 변경 것을 발견 -R 0775 / foo는 / 바 .. 다른 Ansible 2.0.0.2으로이 관찰 사람이있다
ThePracticalOne

5
recurse매개 변수는을 좋아하지 않습니다 mkdir -p. 지정된 파일 속성을 반복적으로 설정합니다 (state = directory에만 적용됨). 인 경우 state=directory모든 직계 서브 디렉토리가 존재하지 않으면 작성됩니다. 1.7 이후 제공된 권한으로 작성됩니다.
Alex

1
이것은 =문자 와 함께 오래된 구문을 사용하고 :, 새로운 줄에 각
공헌으로

@ThePracticalOne-예 ... "반복"을 사용하면 정확히 같은 방식으로 동작합니다 chmod -R. 즉, path이미 디렉토리로 존재하고 그 안에 파일이 있으면 recurse옵션은 (아쉽게도) 동일한 권한을 파일에 적용합니다. 이것은 더 나은 또는 더 나쁜 의도적으로 설계된 것 입니다.
데일 앤더슨


14

디렉토리는 파일 일 뿐이므로 파일 모듈 만 사용하여 디렉토리를 작성할 수 있습니다.

# create a directory if it doesn't exist
- file:
    path: /etc/some_directory
    state: directory
    mode: 0755
    owner: foo
    group: foo

8
- file:
    path: /etc/some_directory
    state: directory
    mode: 0755
    owner: someone
    group: somegroup

이것이 실제로 권한, 소유자 및 그룹을 설정할 수있는 방법입니다. 마지막 세 매개 변수는 필수가 아닙니다.



7

여기에 모든 답변에 추가로 하나 이상의 디렉토리를 만들어야하는 상황이 많으므로 각 디렉토리에 대해 별도의 작업을 만드는 대신 루프를 사용하는 것이 좋습니다.

- name: Creates directory
  file:
    path: "{{ item }}"
    state: directory
  with_items:
  - /srv/www
  - /dir/foo
  - /dir/bar

3

특정 배포를 위해 작업을 실행하기위한 조건을 설정하면됩니다.

- name: Creates directory
  file: path=/src/www state=directory
  when: ansible_distribution == 'Debian'

3

당신은 진술을 사용할 수 있습니다

- name: webfolder - Creates web folder
  file: path=/srv/www state=directory owner=www-data group=www-data mode=0775`

3

Windows에서 디렉토리를 작성하려면 다음을 수행하십시오.

  • 이름 : 디렉토리 구조 생성
    win_file :
    경로 : C : \ Temp \ folder \ subfolder>
    상태 : directory


2

우리는 디렉토리를 만들 수있는 모듈을 가지고 있습니다.

- name: Creates directory
  file:
    path: /src/www
    state: directory

1

명령을 직접 실행하고 ansible을 사용하여 직접 만들 수 있습니다.

ansible -v targethostname -m shell -a "mkdir /srv/www" -u targetuser

또는

ansible -v targethostname -m file -a "path=/srv/www state=directory" -u targetuser

1
---
- hosts: all
  connection: local
  tasks:
    - name: Creates directory
      file: path=/src/www state=directory

위의 플레이 북은 / src 경로에 www 디렉토리를 만듭니다.

위의 플레이 북을 실행하기 전에. 사용 가능한 호스트 연결이 설정되어 있는지 확인하십시오.

"localhost ansible_connection = local"

/ etc / ansible / hosts에 있어야합니다

자세한 내용은 알려주십시오.


파일 : path = / src / www state = directory
Saurabh

1

디렉토리를 만들려면

ansible host_name -m file -a "dest=/home/ansible/vndir state=directory"

1

파일 모듈을 사용하여 디렉토리를 작성하고 "ansible-doc file"명령을 사용하여 파일 모듈에 대한 세부 사항을 가져 오십시오.

다음은 "state"옵션입니다.

인 경우 directory모든 직계 서브 디렉토리가 존재하지 않으면 작성됩니다. 1.7 이후 제공된 권한으로 작성됩니다.
인 경우 file파일이없는 경우 파일이 작성되지 않습니다. 해당 동작을 원하면 [복사] 또는 [서식 파일] 모듈을 참조하십시오.
인 경우 link심볼릭 링크가 생성되거나 변경됩니다. hard하드 링크에 사용하십시오 .
인 경우 absent디렉토리가 재귀 적으로 삭제되고 파일 또는 심볼릭 링크가 연결 해제됩니다.

참고 file상태가 변경되지 않았으로 경로가 존재하지 않는 경우 실패하지 않습니다.

만약 touch경로가 존재하지 않을 경우 기존 파일 또는 디렉토리 (방식과 유사한 파일 액세스 및 수정 시간을 업데이트받을 때 (1.4 신규), 빈 파일이 생성됩니다 touch명령 줄에서 작동).



1

Ansible 에서 디렉토리만드는 가장 쉬운 방법 .

  • name : your_directory가 없으면 작성하십시오. 파일 : 경로 : / etc / your_directory

또는

당신이주고 싶은 sudo는 권한을 해당 디렉토리에.

  • name : your_directory가 없으면 작성하십시오. 파일 : 경로 : / etc / your_directory 모드 : '777'

0

많은 Playbooks 예제를보고 Adhoc 명령 예제를 언급하고 싶습니다.

$ ansible -i inventory -m file -a "path = / tmp / direcory state = directory (디렉토리 대신 파일을 만들기 위해 터치를 언급 할 수 있음)


0

이 경우 파일 모듈을 사용해야합니다. 플레이 북 아래에서 참조 용으로 사용할 수 있습니다.

    ---
     - hosts: <Your target host group>
       name: play1
       tasks: 
        - name: Create Directory
          files:
           path=/srv/www/
           owner=<Intended User>
           mode=<Intended permission, e.g.: 0750>
           state=directory 

0

디렉토리가 존재하는지 확인한 다음 일부 작업을 실행하려면 (예 : 디렉토리 작성) 다음을 사용하십시오.

- 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

0

file모듈 이 필요합니다 . 디렉토리를 작성하려면 다음 옵션을 지정해야합니다 state: directory.

- name: Creates directory
  file:
    path: /src/www
    state: directory

-5

여기 더 쉬운 방법입니다.

- name: create dir command: mkdir -p dir dir/a dir/b


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