Ansible File 모듈

AnsibleBeginner
지금 연습하기

소개

이 랩에서는 원격 호스트의 파일과 디렉토리를 관리할 수 있는 Ansible File 모듈을 살펴봅니다. File 모듈은 파일 및 디렉토리 생성, 삭제, 권한 수정, 존재 여부 확인 등 다양한 기능을 제공합니다.

원격 호스트에 파일 생성

이 단계에서는 Ansible File 모듈을 사용하여 원격 호스트에 파일을 생성합니다.

먼저, /home/labex/project/file-module-playbook.yaml이라는 새 Ansible 플레이북 파일을 생성하고 텍스트 편집기에서 엽니다.
다음 내용을 플레이북 파일에 추가합니다.

- hosts: localhost
  tasks:
    - name: Create a file on remote host
      file:
        path: /home/labex/file.txt
        state: touch
  • file: 파일 시스템을 조작하는 Ansible 모듈입니다.
  • path: 파일의 경로를 지정하며, 이 경우 /home/labex/file.txt입니다.
  • state: 파일의 상태를 지정합니다. 여기에서 touch는 파일이 존재하지 않으면 생성하고, 이미 존재하면 접근 및 수정 타임스탬프로 업데이트함을 나타냅니다.

이 플레이북의 목적은 원격 호스트에 file.txt라는 파일을 생성하는 것입니다.

그런 다음, 다음 명령을 사용하여 플레이북을 실행합니다.

ansible-playbook file-module-playbook.yaml

예시 출력:

[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that
the implicit localhost does not match 'all'

PLAY [localhost] ***************************************************************

TASK [Gathering Facts] *********************************************************
ok: [localhost]

TASK [Create a file on remote host] ********************************************
changed: [localhost]

PLAY RECAP *********************************************************************
localhost : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

마지막으로, 파일 file.txt가 원격 호스트의 지정된 경로에 생성되었는지 확인합니다.

ll /home/labex/file.txt

예시 출력:

-rw-rw-r-- 1 labex labex 0 Mar 10 03:12 file.txt

/home/labex/file.txt가 성공적으로 생성되었다는 메시지를 확인할 수 있습니다.

파일 권한 관리

이 단계에서는 Ansible File 모듈을 사용하여 원격 호스트에서 파일 권한을 관리하는 방법을 배웁니다.

먼저, 기존 플레이북 파일의 모든 내용을 제거하고 다음 내용을 플레이북 파일에 추가하여 수정합니다.

- hosts: localhost
  tasks:
    - name: Set file permissions
      file:
        path: /home/labex/file.txt
        mode: "0644"
  • file: 파일 시스템을 조작하는 Ansible 모듈입니다.
  • path: 파일의 경로를 지정하며, 이 경우 /home/labex/file.txt입니다.
  • mode: 이 매개변수는 파일의 권한 모드를 설정하는 데 사용됩니다. 0644를 파일에 원하는 권한 모드로 바꿉니다. 권한 모드에 대한 자세한 내용은 chmod 문서를 참조하십시오.

이 플레이북의 목적은 /home/labex/file.txt 파일의 권한을 0644로 설정하는 것입니다.

그런 다음, 다음 명령을 사용하여 플레이북을 실행합니다.

ansible-playbook file-module-playbook.yaml

예시 출력:

[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that
the implicit localhost does not match 'all'

PLAY [localhost] ***************************************************************

TASK [Gathering Facts] *********************************************************
ok: [localhost]

TASK [Set file permissions] ****************************************************
changed: [localhost]

PLAY RECAP *********************************************************************
localhost : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

마지막으로, 파일 권한이 원격 호스트에서 지정된 대로 설정되었는지 확인합니다.

ll /home/labex/file.txt

예시 출력:

-rw-r--r-- 1 labex labex 0 Mar 10 03:12 /home/labex/file.txt

여기서 -rw-r--r--/home/labex/file.txt의 모드가 성공적으로 0644로 설정되었음을 나타냅니다.

원격 호스트에서 파일 삭제

이 단계에서는 Ansible File 모듈을 사용하여 원격 호스트에서 파일을 삭제하는 방법을 배웁니다.

먼저, 기존 플레이북 파일의 모든 내용을 제거하고 다음 내용을 플레이북 파일에 추가하여 수정합니다.

- hosts: localhost
  tasks:
    - name: Delete a file on remote host
      file:
        path: /home/labex/file.txt
        state: absent
  • file: 파일 시스템을 조작하는 Ansible 모듈입니다.
  • path: 삭제할 파일의 경로를 지정하며, 즉 /home/labex/file.txt입니다.
  • state: 이 매개변수는 파일이 absent 상태여야 함을 나타냅니다. 따라서 작업의 목표는 지정된 경로에서 파일을 삭제하는 것입니다.

이 플레이북의 목적은 원격 호스트에서 /home/labex/file.txt 파일을 삭제하는 것입니다.

그런 다음, 다음 명령을 사용하여 플레이북을 실행합니다.

ansible-playbook file-module-playbook.yaml

예시 출력:

[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that
the implicit localhost does not match 'all'

PLAY [localhost] ***************************************************************

TASK [Gathering Facts] *********************************************************
ok: [localhost]

TASK [Delete a file on remote host] ********************************************
changed: [localhost]

PLAY RECAP *********************************************************************
localhost : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

마지막으로, file.txt 파일이 삭제되어 더 이상 원격 호스트에 존재하지 않는지 확인합니다.

ll /home/labex/file.txt

예시 출력:

ls: cannot access '/home/labex/file.txt': No such file or directory

이 메시지는 /home/labex/file.txt 파일이 성공적으로 삭제되었음을 나타냅니다.

파일 존재 여부 확인

이 단계에서는 Ansible File 모듈을 사용하여 원격 호스트에서 파일의 존재 여부를 확인하는 방법을 배웁니다.

먼저, 기존 플레이북 파일의 모든 내용을 제거하고 다음 내용을 플레이북 파일에 추가하여 수정합니다.

- hosts: localhost
  tasks:
    - name: Check file existence on remote host
      stat:
        path: /home/labex/file.txt
      register: file_info

    - name: Print file existence
      debug:
        msg: "File exists: {{ file_info.stat.exists }}"
  • stat: 파일 또는 디렉토리에 대한 상태 정보를 얻기 위한 Ansible 모듈 중 하나입니다.
  • path: 확인할 파일의 경로를 지정하며, 즉 /home/labex/file.txt입니다.
  • register: register 키워드를 사용하여 모듈 실행 결과를 변수 file_info에 저장합니다.
  • debug: 디버깅 정보를 출력하는 Ansible 모듈 중 하나입니다.
  • msg: debug 모듈을 사용하여 파일 존재 여부에 대한 정보를 포함하는 메시지를 출력하며, 이는 file_info.stat.exists를 통해 검색됩니다.

이 플레이북의 목적은 원격 호스트에서 /home/labex/file.txt 파일의 존재 여부를 확인하고 정보를 표준 출력으로 인쇄하는 것입니다.

그런 다음, 다음 명령을 사용하여 플레이북을 실행합니다.

ansible-playbook file-module-playbook.yaml

예시 출력:

[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that
the implicit localhost does not match 'all'

PLAY [localhost] ***************************************************************

TASK [Gathering Facts] *********************************************************
ok: [localhost]

TASK [Check file existence on remote host] *************************************
ok: [localhost]

TASK [Print file existence] ****************************************************
ok: [localhost] => {
    "msg": "File exists: False"
}

PLAY RECAP *********************************************************************
localhost                  : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

마지막으로, 출력을 관찰하여 file.txt 파일이 원격 호스트에 존재하는지 확인합니다.
"msg": "File exists: False"/home/labex/file.txt 파일이 존재하지 않음을 나타냅니다.

요약

축하합니다! Ansible File 모듈 랩을 성공적으로 완료했습니다. File 모듈을 사용하여 원격 호스트에서 파일 및 디렉토리를 생성하고, 파일 권한을 관리하고, 파일을 삭제하고, 파일 존재 여부를 확인하는 방법을 배웠습니다.

File 모듈은 자동화 작업 중에 다양한 파일 관련 작업을 수행할 수 있게 해주는 Ansible 의 강력한 도구입니다. 이제 Ansible 플레이북에서 File 모듈을 자신 있게 사용하여 파일과 디렉토리를 효율적으로 관리할 수 있습니다.

Ansible 설명서 및 다른 모듈을 계속 탐색하여 지식을 확장하고 자동화 기술을 향상시키십시오. 즐거운 Ansible-ing!