1. 파일관리 일반 모듈

파일관리 일반 모듈

/usr/local/lib/python3.9/site-packages/ansible/modules <- modules 경로

Linux 파일 관리와 관련하여 일반적으로 사용되는 module은 ansible.builtin 컬렉션에 ansible-core와 함께 제공돼

파일의 권한 및 기타 속성의 생성, 복사, 편집, 수정과 같은 작업을 수행하지.

모듈 설명
lineinfile 특정행이 파일에 있는지 확인하거나 역참조 정규식을 사용하여 기존행의 내용을 변경.
blockinfile 마커 선으로 둘러싸인 여러 줄의 텍스트 블록을 삽입 및 업데이트 또는 제거
copy 특정 파일을 관리호스트의 특정 위치로 복사. file모듈과 유사한 속성을 지님
fetch copy와 반대로 동작. 관리호스트의 파일을 제어노드로 가져와 저장.
file 권한, 소유권, SELinux 컨텍스트, 일반 파일의 타임 스탬프, 심볼릭 링크, 하드 링크 및 디렉터리와 같은 속성을 설정. 일반 파일, 심볼릭 링크, 하드 링크 및 디렉터리를 생성하거나 제거.
stat linux stat 명령어와 유사. 파일의 상태 정보를 조회

위 표는, 자주 사용되는 파일 관리 모듈들이야.

file 모듈

---
- name: first play
  hosts: localhost
  become: true
  tasks:
    - name: set context
      file:
        path: /home/vagrant/samba_file
        owner: vagrant
        group: vagrant
        mode: 0640
        setype: samba_share_t
        state: touch

위 코드는 file 모듈을 사용해서 관리호스트에서 새로운 파일을 만들거나 파일 속성을 수정하는 예시야.

$ ls -Z samba_file
-rw-r--r--.  owner group unconfined_u:object_r: samba_share_t :s0 samba_file

file 모듈로 설정 후 위 코드로 확인할 수 있지.

---
- name: first play
  hosts: localhost
  become: true
  tasks:
    - name: set context
      file:
        path: /home/vagrant/samba_file
        owner: vagrant
        group: vagrant
        mode: 0640
        setype: samba_share_t
        state: absent

file 모듈에서 state 값을 absent로 설정하여 삭제 작업을 수행할 수 있어

copy 모듈

작업디렉토리의 파일을 관리 호스트로 복사하는 module이야. 즉, controller node -> managed host

이때, selinux 타입이나 권한 설정을 변경할 수 있어

- name: copy file
  copy:
    src: file
    dest: /path/to/file

fetch 모듈

copy 모듈과 반대로 관리 호스트의 파일을 제어 노드로 복사할 때 fetch 모듈을 사용해