[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