Name
Last commit
Last update
..
.gitkeep ansible, 2021-03-08, update16
README.md file_fetch init

logo

Ansible의 fetch 모듈을 이용한 파일 가져오기

원격 시스템의 파일 및 디렉토리를 로컬로 가져올 수 있다.

활용 용도

  • 원격 서버에 스크립트를 수행한 후의 결과파일을 로컬로 가져오는 구조의 Job
  • /etc/passwd 파일과 같은 전체 시스템의 특정 파일을 모두 가져와야 하는 Job
  • 보안취약점 진단에 File Copy 모듈과 함께 사용 중이다.

Inventory 설정

# cat hosts
[ALL_HOSTS]
172.16.0.100 managed_ip=172.16.0.100 des="2020-12-03"

[ALL_HOSTS_OK]

대상 호스트는 172.16.0.100이며, 추가는 2020-12-03에 수행한다. 참고적으로 ALL_HOSTS_OK 호스트 그룹은 작업이 완료된 호스트의 history를 위한 그룹이다.

Host Variables 설정

# cat host_vars/172.16.0.100
ansible_ssh_host: 172.16.0.100
ansible_ssh_port: SSH_포트번호
ansible_ssh_user: 사용자 아이디
ansible_ssh_pass: "사용자 패스워드"
ansible_become: yes
ansible_become_method: su
ansible_become_user: root
ansible_become_pass: "!root_패스워드"
ansible_python_interpreter: python2.7

Playbook 설정

---
- name : Config File Fetch Playbook
  hosts: ALL_HOSTS
  gather_facts: no
  tasks:
    - name: Local Directory Create
      local_action: command mkdir -p FETCH/{{ managed_ip }}

    - name: Nginx Configure file fetch
      fetch:
        src: /etc/passwd
        dest: FETCH/{{ managed_ip }}/
        flat: yes

File Fetch에 대한 Playbook 분석

  • 대용량의 파일을 가져오려면, Ansible 2.5 이상을 사용해야하고, become 모듈을 사용하지 않아야 메모리에러 이슈를 방지할 수 있다.
  • 가져올 파일은 로컬 시스템(PC 또는 서버)의 FETCH/IP주소/ 로 가져온다.

playbook 실행

# ansible-playbook -i hosts file_fetch.yml