• HOME
  • ManVSCloud
  • Dev/Update
  • AWS
  • NCLOUD
  • IT/Linux/Kubernetes
  • Certificate
  • HCX 토큰 계산기

ManVSCloud

NCLOUD

[NCLOUD] 네이버 클라우드에서 이미지 백업을 자동화 해보자(with. Shell script)

안녕하세요 ManVSCloud 김수현입니다.

현재 네이버 클라우드에서는 AWS의 수명 주기 관리자와 같은 기능은 없는 상태입니다.
오늘은 네이버 클라우드에서 이미지 백업을 자동화 할 수 있도록 자료를 공유 해보려합니다.

원래 cloud function을 이용하여 만들어볼까 생각했는데 아직 python, javascript같은 언어에는 익숙하지 않아 shell script를 작성하여 ncloud cli로 이미지 백업을 진행할 수 있도록 하였습니다.

참고로 제가 만든 스크립트는 VPC에서만 사용가능합니다.
(클래식에서 사용하시려면 스크립트 내에 명령어 옵션만 조금 변경해주면 됩니다.)


Download link

아래는 ncloud cli와 제가 만든 스크립트를 다운로드 할 수 있는 링크입니다.

// "ncloud cli" 다운로드 링크
https://www.ncloud.com/api/support/download/5/65

// manvscloud의 "네이버 클라우드 이미지 백업 스크립트(VPC용)" 다운로드 링크
http://file.manvscloud.com/nCloudimgScript.zip

README

해당 스크립트를 잘 사용하고 싶다면 README를 한 번 읽어보면 좋습니다.
적어도 Basic explanation는 읽어야 잘 사용할 수 있습니다.

설치 후에도 디렉토리 내에 존재하는 README 파일입니다.
아무래도 한번에 집중해서 만들기보다 쉬는 시간을 내어 조금씩 만들다보니 내가 왜 이렇게 만들었지? 싶은 부분도 존재하긴 합니다.
그런 부분은 버전 업데이트를 통해 업그레이드 해볼까합니다.

========================================
Updated : 2022-01-19
Maker : 김수현(ManVSCloud)
Blog : https://manvscloud.com/
========================================

############################# Basic explanation #############################
1. 00.Config를 가장 먼저 설정해주셔야합니다.
2. 02.selectiveBackup를 사용하기 위해서는 01.getBackupListConfig를 먼저 설정해주어야합니다.
3. 03.allServerBackup은 전체 백업이므로 01.getBackupListConfig 따로 설정해주지 않아도 됩니다.

## 선택 백업
# 00.Config+01.getBackupListConfig+02.selectiveBackup

## 전체 백업
# 00.Config+03.allServerBackup

############################# Version #############################
// 각 스크립트 생성(2022-01-19)
00.Config v0.1
01.getBackupListConfig v0.1
02.selectiveBackup v0.1
03.allServerBackup v0.1

############################# Function #############################
00.Config
 : 이미지 이름 및 백업 보관일을 설정하는 초기 세팅 파일입니다.
01.getBackupListConfig
 : 백업할 서버를 선택할 수 있습니다.
02.selectiveBackup
 : 01.getBackupListConfig에서 선택된 서버를 대상으로 이미지 백업을 진행합니다.
03.allServerBackup
 : 사용하고 있는 모든 서버에 대해 이미지 백업을 진행합니다.

############################# include #############################
Location : ImageBackup/include

* List
-. allInstanceNo
 : 사용하는 Server의 인스턴스 No를 불러옵니다. 
-. backupCheck
 : 미구현
-. deleteImage
 : 백업 보관일보다 오래된 이미지를 삭제합니다.
-. getInstanceNo
 : 01.getBackupListConfig 에서 선택된 서버에 대한 인스턴스 No를 불러옵니다.
-. imageList
 : 전체 이미지 리스트를 불러옵니다.

############################# Log #############################
AllBackup.log : 03.allServerBackup 실행 시 생성되는 표준 입/출력,에러 로그
CreateBackup.log : 02.selectiveBackup 실행 시 생성되는 표준 입/출력,에러 로그
DeleteBackup.log : 02,03 Backup 실행 시 include/deleteImage 에서 이미지 삭제 시 생성되는 표준 입/출력,에러 로그


========================================
========== Made in ManVSCloud ==========
========================================

아! 그리고 해당 스크립트를 사용하여 발생하는 문제에 대해서 책임지지 않습니다.
충분히 사용이 가능한 환경인지 검토 후 사용하시기 바랍니다.


A to Z

  • 백업 서버를 생성하여 이미지 백업을 관리하는 방법으로 설명 드리도록 하겠습니다.
  • Access Key를 사용하는 것은 지양하고 있으므로 A to Z 설명은 Sub Account의 Role을 서버에 적용시키는 방법으로 진행하겠습니다.

* Create Server & Sub Account

1. 백업용 서버를 생성했습니다.
(물론 기존에 사용하고 있는 서버에도 적용할 수 있습니다.)
2. Sub Account를 이용하여 위 생성한 서버에 Role(역할)을 부여할 수 있습니다.

[A 서버]
[B 역할] (VPC Server 서비스에 대한 모든 권한)
(A서버에게 B역할을 부여하면 A서버는 B역할”VPC Server 서비스를 컨트롤 할 수 있는 권한”을 얻게 된다.)
3. 우선 역할 이름을 생성 해줍니다.
4. 생성한 역할로 들어가 [정책] 부분에서 해당 역할에 정책을 [추가]합니다.
서버와 이미지 리스트만 보는 것이 아니라 이미지 생성 및 삭제도 필요하므로 “NCP_VPC_SERVER_MANAGER” 정책을 추가했습니다.
5. [Role 소유 리소스]에서 이제 위에서 만든 리소스(서버)를 추가합니다.
(해당 등록한 서버에 이 역할을 주는 것)

* Install

위 생성한 서버(백업용 서버)로 접속하여 아래와 같이 설치 과정을 진행합니다.

[root@img-backup-kr1 ~]# cd ~
[root@img-backup-kr1 ~]# wget -O ncloud_cli.zip https://www.ncloud.com/api/support/download/5/65
[root@img-backup-kr1 ~]# unzip ncloud_cli.zip 
[root@img-backup-kr1 ~]# wget http://file.manvscloud.com/nCloudimgScript.zip
[root@img-backup-kr1 ~]# unzip nCloudimgScript.zip 
[root@img-backup-kr1 ~]# chmod 755 -R cli_linux
[root@img-backup-kr1 ~]# cp -avp ~/cli_linux/ncloud ~/cli_linux/ncloud_org
[root@img-backup-kr1 ~]# vi ~/cli_linux/ncloud

vi ~/cli_linux/ncloud 를 통해 경로를 다음과 같이 편집해줍니다.

[기존 파일 내용]

#!/bin/bash
./jre8/bin/java -jar ./lib/ncloud-api-cli-1.1.5-SNAPSHOT-jar-with-dependencies.jar "$@"

[변경 후 파일 내용]

#!/bin/bash
~/cli_linux/jre8/bin/java -jar ~/cli_linux/lib/ncloud-api-cli-1.1.5-SNAPSHOT-jar-with-dependencies.jar "$@"

* Config & Backup

해당 백업을 사용을 하기 위해서는 00.Config 파일을 편집하여 기본 설정을 해주어야합니다.

[root@img-backup-kr1 ~]# vi ~/ImageBackup/00.Config
.
.
.
## 이미지 이름 설정
# * 이미지 생성 시 최대 30 자 제한으로 imgName에는 10자 이하로 설정해주세요.
# * 알파벳 문자로 시작해야합니다.
# * 특수문자 "-" 순서에 따라 백업 보관일을 감지하므로 영문+숫자로만 사용해주세요.
# * 최종 이미지 생성 시 "imgName-instanceNo-생성일자"의 이름으로 생성됩니다.
imgName="이미지명"

## 백업 보관일 설정
# * 일단위 설정입니다. ex) "14" (14일)
saveDay="14"
.
.
.

위에서 설정한 이미지 이름과 백업 보관일을 아래와 같이 실행해줍니다.

[root@img-backup-kr1 ~]# ~/ImageBackup/00.Config

전체 백업을 원하실 경우 ~/ImageBackup/03.allServerBackup 을 바로 실행할 수 있겠지만
원하는 서버만 선택하여 백업할 수 있도록 선택 백업을 진행하도록 하겠습니다.

아래와 같이 01.getBackupListConfig를 실행하면 백업을 원하는 서버를 선택할 수 있습니다.
선택한 서버 번호 앞에 +로 표시가 되고 선택이 끝난 후 ENTER 키를 눌러주면 선택된 서버 목록이 출력되므로 다시 한 번 확인할 수 있습니다.

[root@img-backup-kr1 ~]# ~/ImageBackup/01.getBackupListConfig 
백업이 필요한 서버를 선택해주세요:
  1 ) img-backup-kr1
  2 ) imagetest
  3 ) manvscloud-web-pub-kr2
추가할 서버를 선택해주세요. (저장 후 종료를 원하시면 ENTER 키를 눌러주세요.): 2
백업이 필요한 서버를 선택해주세요:
  1 ) img-backup-kr1
  2+) imagetest
  3 ) manvscloud-web-pub-kr2
imagetest 서버가 추가되었습니다.
추가할 서버를 선택해주세요. (저장 후 종료를 원하시면 ENTER 키를 눌러주세요.): 3
백업이 필요한 서버를 선택해주세요:
  1 ) img-backup-kr1
  2+) imagetest
  3+) manvscloud-web-pub-kr2
manvscloud-web-pub-kr2 서버가 추가되었습니다.
추가할 서버를 선택해주세요. (저장 후 종료를 원하시면 ENTER 키를 눌러주세요.): 
선택된 서버 목록 : imagetest manvscloud-web-pub-kr2

위에서 백업할 서버 선택이 끝났다면 아래와 같이 스크립트를 실행할 수 있습니다.

[root@img-backup-kr1 ~]# ~/ImageBackup/02.selectiveBackup

Cron

위에서 기본 설정(~/ImageBackup/00.Config, ~/ImageBackup/01.getBackupListConfig)이 마쳐졌을 경우 cron을 통해 원하는 시간대에 자동으로 백업이 진행되도록 설정할 수 있습니다.

[root@img-backup-kr1 ~]# vi /etc/crontab

crontab 파일에 아래 서버 선택 백업이나 서버 전체 백업 중 원하는 것을 선택하여 넣어줍니다.
참고로 아래에 설정된 값은 매일 새벽 2시에 해당 스크립트가 실행되도록 설정된 것입니다.

꼭 아래와 같은 시간에 스크립트가 실행되도록 할 필요는 없습니다.

매주 일요일 새벽 3시에 실행되길 원한다면 0 3 * * 7
매월 1일 새벽 1시라면 0 1 1 * *
등 시간은 자유롭게 변경하여 사용하시면 됩니다.

## 서버 선택 백업
0 2 * * * root ~/ImageBackup/02.selectiveBackup
## 서버 전체 백업
0 2 * * * root ~/ImageBackup/03.allServerBackup

마지막으로 crond 서비스를 재시작 해주면 쉘 스크립트를 이용하여 네이버 클라우드에서 이미지 백업을 자동화하기 끝!

[root@img-backup-kr1 ~]# systemctl restart crond.service

Personal Comments

다음엔 쉘 스크립트가 아니라 이런 것들은 Python이나 javascript를 조금 배워서
Cloud Fuction을 통해 실행되도록 하고 싶네요.

일단 저는 테스트 후 사용했을 때 크게 작동이 되지 않는 부분이나 버그는 발견되지 않았습니다. (버그 발견으로 한 3~4번은 뜯어 고친듯…)
혹시라도 사용 중 버그가 발견된다면 댓글로 공유 부탁드립니다.

긴 글 읽어주셔서 감사합니다.


1월 19, 2022 by manvscloud
Older Posts
Newer Posts

About Me

About Me

ManVSCloud Blog, 2020-09-18 ~ AWS, NCP, AZURE, etc... Welcome to my blog!! Naver Cloud Platform Support Master ManVSCloud 입니다.

SUBCRIBE & FOLLOW

SEARCH

CATEGORY

Latest Article

  • [NCLOUD] CPU 환경에서도 가능한 딥러닝: AI-Hub와 네이버 클라우드로 이미지 분류 모델 개발 도전기
  • [NCLOUD] Cloud DB for PostgreSQL 백업 to Object Storage (관리형 데이터베이스 백업이 실패한다면?)
  • [NCLOUD] Secret Manager로 Cloud DB for PostgreSQL 패스워드 관리하기
  • [NCLOUD] 관리형 데이터베이스의 백업 실패, 더 이상 놓치지 마세요!
  • [NCLOUD] Neo4j 기반 GraphRAG 구현과 CLOVA Studio를 통한 Text2SQL 변환

TAG

AI (11) Amazon Web Service (10) API (12) AWS (27) backup (13) blog (8) Certified (6) Certified Kubernetes Administrator (7) Cloud (7) cloud functions (19) CloudNet@ (9) HyperCLOVA X (6) k8s (9) kube (7) kubernetes (15) Linux (9) manvscloud (131) manvscloud blog (10) Master (10) naver (98) naver cloud (107) Naver Cloud PlatForm (108) ncloud (103) NCP (84) object storage (13) python (16) s3 (8) security (12) Serverless (16) slack (6) Support Master (9) 교육 (9) 네이버 (94) 네이버 클라우드 (97) 네이버클라우드 (21) 네이버 클라우드 교육 (8) 네이버 클라우드 플랫폼 (84) 모니터링 (8) 백업 (12) 보안 (14) 자격증 (9) 자동화 (11) 쿠버네티스 (11) 클라우드 (10) 후기 (8)
Instagram LinkedIn
ⓒ 2020 ManVSCloud, BLOG Site. Back to top