[Ansible] 앤서블 학습 - 원격 서버에 파일 복사

반응형
반응형

 

앤서블을 이용하여 로컬 서버의 파일을 원격 서버의 파일로 복사하는 방법에 대해 확인해 보겠습니다.

 

 

원격 서버를 hosts 파일에 등록

hosts 파일에 파일을 copy 하려는 대상 서버들을 등록해 줍니다.

[root@k8s-master-1 TASK]# cat hosts
k8s-worker-1

 

yml 파일 생성

yml 파일 생성 단계입니다.

파일 복사에는 여러 가지 방법이 있는데요 이 예제에서는 copy 모듈을 사용하였습니다.

간단하게 src(출발지) dest(목적지) 파일 위치만 입력해 주면 됩니다.

[root@k8s-master-1 TASK]# cat copy_file.yml
---
- hosts: all
  remote_user: root
  tasks:
  - name: store file to remote server
    copy:
      src: /tmp/sample.txt
      dest: /root/sample.txt

 

 

실행하기 전에 /tmp/ 경로에 sample.txt 파일을 만들어줍니다.

[root@k8s-master-1 TASK]# echo have a nice day > /tmp/sample.txt

 

yml playbook 실행

 

copy 확인

원격 서버에 이상 없이 복사가 된 것을 확인하실 수 있습니다.

 

 

 

yml playbook 수정 및 playbook 재실행

이번에는 backup 설정을 추가해서 실행해 보겠습니다.

[root@k8s-master-1 TASK]# cat copy_file.yml
---
- hosts: all
  remote_user: root
  tasks:
  - name: store file to remote server
    copy:
      src: /tmp/sample.txt
      dest: /root/sample.txt
      backup: yes

 

sample.txt 파일을 좀 수정하고 다시 playbook을 실행합니다.

[root@k8s-master-1 TASK]# echo god night >> /tmp/sample.txt
[root@k8s-master-1 TASK]# ansible-playbook  -i ./hosts copy_file.yml

 

copy 확인

sample.txt 파일이 수정이 되었고, 파일 리스트를 보시면 기존의 smaple.txt 파일 이름이 조금 변형되어 백업이 된 것을 보실 수 있습니다. 원격 서버의 중요 설정 파일을 배포하실 때 사용하시면 유용할 것 같네요

 

추가

추가로, 아래와 같이 owner, group, mode 설정으로 파일의 권한을 설정할 수 있고, 

---
- hosts: all
  remote_user: root
  tasks:
  - name: store file to remote server
    copy:
      src: /tmp/sample.txt
      dest: /root/sample.txt
      backup: yes
      owner: root
      group: root
      mode: '0644'

 

여러 파일 copy가 필요하신 경우 아래처럼 with_items를 사용하시면 됩니다.

---
- hosts: all
  remote_user: root
  tasks:
  - name: store file to remote server
    copy:
      src: "/tmp/{{ item }}"
      dest: /tmp/
    with_items:
       - a.txt
       - b.txt
       - c.txt
반응형

댓글

Designed by JB FACTORY

loading