콘텐츠로 이동

Ansible - 파일 관리

이 문서에서는 Ansible로 파일을 관리하는 방법을 배웁니다.


목적: 이 문서에서는 다음을 수행하는 방법에 대해 알아볼 것 입니다:

✔ 파일 내용 수정하기;
✔ 대상 서버에 파일 업로드하기;
✔ 대상 서버에서 파일을 검색하기.

🏁 ansible, 모듈, 파일

지식: ⭐ ⭐
복잡성: ⭐

소요 시간: 20분


필요에 따라 시스템 구성 파일을 수정하기 위해 다른 앤서블 모듈을 사용해야 할 수 있습니다.

ini_file 모듈

INI 파일을 수정하려는 경우([]key=value 쌍 사이의 섹션) 가장 쉬운 방법은 ini_file 모듈을 사용하는 것입니다.

참고

자세한 내용은 여기에서 확인할 수 있습니다.

이 모듈은 다음을 필요로 합니다:

  • 섹션의 값
  • 옵션의 이름
  • 새로운 값

사용 예:

- name: change value on inifile
  community.general.ini_file:
    dest: /path/to/file.ini
    section: SECTIONNAME
    option: OPTIONNAME
    value: NEWVALUE

lineinfile 모듈

특정 파일에 특정 줄이 있는지 확인하거나 파일에 한 줄을 추가하거나 수정해야 할 때는 linefile모듈을 사용합니다.

참고

자세한 내용은 여기에서 확인할 수 있습니다.

이 경우, 파일에서 수정해야 할 줄은 정규식을 사용하여 찾게 됩니다.

예를 들어 /etc/selinux/config 파일에서 SELINUX=로 시작하는 행에 enforcing 값이 포함하도록 확인하려면 다음과 같이 사용할 수 있습니다:

- ansible.builtin.lineinfile:
    path: /etc/selinux/config
    regexp: '^SELINUX='
    line: 'SELINUX=enforcing'

copy 모듈

앤서블 서버에서 하나 이상의 호스트로 파일을 복사해야 할 때는 copy 모듈을 사용하는 것이 좋습니다.

참고

자세한 내용은 여기에서 확인할 수 있습니다.

다음과 같이 myflile.conf를 한 위치에서 다른 위치로 복사합니다:

- ansible.builtin.copy:
    src: /data/ansible/sources/myfile.conf
    dest: /etc/myfile.conf
    owner: root
    group: root
    mode: 0644

fetch 모듈

파일을 원격 서버에서 로컬 서버로 복사해야 하는 경우 fetch 모듈을 사용하는 것이 가장 좋습니다.

참고

자세한 내용은 여기에서 확인할 수 있습니다.

이 모듈은 copy 모듈과 반대 역할을 합니다.

- ansible.builtin.fetch:
    src: /etc/myfile.conf
    dest: /data/ansible/backup/myfile-{{ inventory_hostname }}.conf
    flat: yes

template 모듈

Ansible 및 해당 template 모듈은 Jinja2 템플릿 시스템(http://jinja.pocoo.org/docs/)을 사용하여 대상 호스트에 파일을 생성합니다.

참고

자세한 내용은 여기 에서 확인할 수 있습니다.

예시:

- ansible.builtin.template:
    src: /data/ansible/templates/monfichier.j2
    dest: /etc/myfile.conf
    owner: root
    group: root
    mode: 0644

대상 서비스에서 허용하는 경우 유효성 검사 단계를 추가할 수 있습니다(예: apachectl -t 명령이 있는 apache).

- template:
    src: /data/ansible/templates/vhost.j2
    dest: /etc/httpd/sites-available/vhost.conf
    owner: root
    group: root
    mode: 0644
    validate: '/usr/sbin/apachectl -t'

get_url 모듈

웹 사이트 또는 ftp에서 하나 이상의 호스트로 파일을 업로드하려면 get_url 모듈을 사용합니다:

- get_url:
    url: http://site.com/archive.zip
    dest: /tmp/archive.zip
    mode: 0640
    checksum: sha256:f772bd36185515581aa9a2e4b38fb97940ff28764900ba708e68286121770e9a

파일의 체크섬을 제공하면 파일이 이미 대상 위치에 있고 해당 체크섬이 제공된 값과 일치하는 경우 파일이 다시 다운로드되지 않습니다.