본문 바로가기
기초 튼튼탄탄탄/DevOps

[ansible] fetch 모듈을 사용하여 파일 가져오기

by 잇서니 2020. 4. 17.
반응형

 

ansible로 원격 서버의 파일을 로컬(ansible 수행하는 서버)에 복사하는 방법을 기술합니다.

 

우선 제가 개발한 ansible playbooks 구조는 아래와 같습니다.

├── mwav-db-backup-playbooks_v0.2
│   ├── group_vars
│   │   ├── mwavtst.yml
│   │   └── staging.yml
│   ├── roles
│   │   ├── mwavtst-db
│   │   │   └── tasks
│   │   │       ├── full_backup.yml
│   │   │       └── main.yml
│   │   └── staging-db
│   │       └── tasks
│   │           ├── base_backup.yml
│   │           ├── incremental_backup.yml
│   │           ├── init.yml
│   │           └── main.yml
│   ├── backup_final.yml
│   ├── backup_mwavtst.yml
│   ├── backup.retry
│   ├── backup.yml
│   ├── hosts
│   ├── mysqldump_restore.yml
│   └── test.yml

 

roles/mwavtst-db/tasks/full_backup.yml 에 원격 서버의 파일을 로컬에 복사하는 task를 작성했습니다. ansible의 fetch 모듈을 사용합니다.

- name: Send mwavtst-db data to Stg-Server
  fetch:
   src: "/home/user/mwavtst/db_bak/mwavtst_{{ cur_date }}.sql"
   dest: "{{ mwav_tst_backup_dir }}"
   flat: yes

 

  • src, dest 에 ansible 변수를 사용하려면 양쪽에 "" 붙혀야 합니다.
  •  dest 경로에 src 파일명으로만 복사하기 위해서 flat: yes 를 추가합니다. 단, mwav_tst_backup_dir 변수(디렉토리경로) 끝에 '/'를 붙혀야 합니다. flat 을 추가하지 않으면 dest 경로에 src 경로전체가 복사됩니다.
  • 예를 들어, dest 경로가 /home/sunny면 복사된 파일은 /home/sunny/<원격서버 호스트네임>/home/user/mwavtst/db_back/mwavtst_20200418.sql 에 위치합니다.

 

참고로

로컬에 있는 파일을 다른 서버에 보낼 때는 copy 모듈을 사용합니다.

- name: Copy Ranger Admin Init
  copy: src=ranger-admin-initd dest=/usr/lib/ranger-admin/ews/ranger-admin-initd mode=0755
  when: ansible_fqdn in groups['ranger_admin']

 

 

반응형

댓글