이 문서는 Terraform으로 NHN Cloud NAS 서비스를 사용하는 방법을 설명합니다.
Terraform은 인프라를 손쉽게 구축하고 안전하게 변경하며, 효율적으로 형상을 관리할 수 있는 오픈 소스 도구입니다. 기본적인 사용법은 사용자 가이드 > Compute > Instance > Terraform 사용 가이드를 참고하세요.
일반적으로 각 리소스는 독립적이지만 다른 특정 리소스에 의존성을 가질 수도 있습니다. 리소스의 레이블을 통해 다른 리소스의 정보를 참조하면 Terraform은 자동으로 의존성을 설정합니다.
예를 들어, volume1 볼륨에 연결되는 interface1 인터페이스는 다음과 같이 표현될 수 있습니다.
# 볼륨 리소스
resource "nhncloud_nas_storage_volume_v1" "volume1" {
name = "volume1"
size_gb = 300
mount_protocol {
protocol = "nfs"
}
}
# 인터페이스 리소스
resource "nhncloud_nas_storage_volume_interface_v1" "interface1" {
volume_id = nhncloud_nas_storage_volume_v1.volume1.id
subnet_id = data.nhncloud_networking_vpcsubnet_v2.default_subnet.id
}
[참고] 명시적인 리소스 의존성 지정 방법은 Terraform의 Resource dependencies 문서를 참고하세요.
[참고] CIFS 프로토콜 사용 CIFS 프로토콜을 사용하기 위해서는 CIFS 인증 정보를 생성해야 합니다. 인증 정보는 프로젝트 단위로 관리되며, CIFS 볼륨마다 접근을 허용할 CIFS 인증 정보를 등록해야 합니다. CIFS 인증 정보는 콘솔의 Storage > NAS > CIFS 인증 정보 관리 창에서 생성할 수 있습니다.
[참고] 암호화 키 저장소 설정 암호화 볼륨을 생성하면 암호화에 사용하는 대칭 키가 NHN Cloud Secure Key Manager 서비스의 키 저장소에 저장됩니다. 따라서 암호화 볼륨을 만들기 위해서는 미리 Secure Key Manager 서비스에서 키 저장소를 생성해야 합니다. 키 저장소의 ID를 확인하여 암호화 키 저장소 설정에 입력합니다. 생성한 키 저장소 ID는 콘솔의 Storage > NAS > 암호화 키 저장소 설정 창에서 입력할 수 있습니다. 암호화 볼륨을 생성하면 설정한 키 저장소에 대칭 키가 저장됩니다. 키 저장소에 저장된 대칭 키는 암호화 볼륨 사용 중에는 삭제할 수 없습니다. 암호화 볼륨을 삭제하면 대칭 키도 함께 삭제됩니다. 키 저장소 ID를 변경하면 이후 생성하는 암호화 볼륨의 대칭 키가 변경된 키 저장소에 저장됩니다. 기존 키 저장소에 저장된 대칭 키는 유지됩니다.
# NFS 프로토콜의 빈 NAS 스토리지 생성
resource "nhncloud_nas_storage_volume_v1" "volume_01" {
name = "nas_volume_01"
size_gb = 300
mount_protocol {
protocol = "nfs"
}
}
# CIFS 프로토콜의 빈 NAS 스토리지 생성
resource "nhncloud_nas_storage_volume_v1" "volume_02" {
name = "nas_volume_02"
size_gb = 300
mount_protocol {
protocol = "cifs"
cifs_auth_ids = ["auth_id"]
}
}
# ACL, 암호화 설정 등의 설정을 포함한 볼륨 생성하기
resource "nhncloud_nas_storage_volume_v1" "volume_03" {
name = "nas_volume_03"
description = "create nas volume by terraform"
size_gb = 300
acl = ["10.10.10.0/24"]
encryption {
enabled = true
}
mount_protocol {
protocol = "cifs"
cifs_auth_ids = ["auth_id"]
}
snapshot_policy {
max_scheduled_count = 3
reserve_percent = 10
schedule {
time = "00:00"
time_offset = "+09:00"
weekdays = [1, 3, 5]
}
}
}
| 이름 | 타입 | 필수 | 변경 가능 | 설명 |
|---|---|---|---|---|
| region | String | - | - | 생성할 볼륨의 리전 기본값은 공급자 설정 파일에 설정된 리전 |
| name | String | O | - | 볼륨 이름 |
| description | String | - | O | 볼륨 설명 |
| size_gb | Integer | O | O | 볼륨 크기(GB) 볼륨은 최소 300GB에서 최대 10,000GB까지, 100GB 단위로 설정할 수 있습니다. |
| acl | List | - | O | 볼륨 생성 시 설정할 ACL 목록 IP 또는 CIDR 형식으로 입력할 수 있습니다. |
| encryption | Object | - | - | 볼륨 생성 시 암호화 설정 객체 |
| encryption.enabled | Boolean | - | - | 암호화 설정 활성화 여부 암호화 키 저장소가 설정된 후 해당 필드를 true로 설정하면 암호화가 활성화됩니다. |
| mount_protocol | Object | - | - | 볼륨 생성 시 프로토콜 설정 객체 |
| mount_protocol.cifs_auth_ids | List(String) | - | O | CIFS 인증 ID 목록 NFS 프로토콜 선택 시 입력 불필요 |
| mount_protocol.protocol | String | O | - | 볼륨 마운트 시 프로토콜 지정nfs, cifs 중 하나를 선택할 수 있습니다. |
| snapshot_policy | Object | - | - | 볼륨 스냅숏 설정 객체 |
| snapshot_policy.max_scheduled_count | Integer | - | O | 스냅숏 최대 저장 개수 30개까지 설정 가능하며, 최대 저장 개수에 도달하면 자동으로 생성된 스냅숏 중 가장 먼저 만들어진 스냅숏이 삭제됩니다. |
| snapshot_policy.reserve_percent | Integer | - | O | 스냅숏 용량 비율 |
| snapshot_policy.schedule | Object | - | - | 스냅숏 자동 생성 객체null일 경우 스냅숏 자동 생성이 설정되지 않습니다. |
| snapshot_policy.schedule.time | String | - | O | 스냅숏 자동 생성 시간 |
| snapshot_policy.schedule.time_offset | String | - | O | 스냅숏 자동 생성 기준 시간대 |
| snapshot_policy.schedule.weekdays | List | - | O | 스냅숏 자동 생성 요일. 빈 목록은 매일을 의미하며, 요일은 0(일요일)부터 6(토요일)까지의 숫자 목록으로 지정합니다. |
data "nhncloud_networking_vpcsubnet_v2" "default_subnet" {
...
}
resource "nhncloud_nas_storage_volume_interface_v1" "nas_interface_01" {
volume_id = nhncloud_nas_storage_volume_v1.volume_01.id
subnet_id = data.nhncloud_networking_vpcsubnet_v2.default_subnet.id
}
| 이름 | 타입 | 필수 | 변경 가능 | 설명 |
|---|---|---|---|---|
| region | String | - | - | 연결할 볼륨의 리전 기본값은 공급자 설정 파일에 설정된 리전 |
| volume_id | String | O | - | 연결할 볼륨의 ID |
| subnet_id | String | O | - | 연결할 서브넷 ID |
복제 설정 리소스를 생성하면 대상 볼륨이 자동으로 생성됩니다.
복제 설정 리소스에서 dst_volume의 설정값을 변경하여 대상 볼륨을 업데이트할 수 있지만, 복제 설정 리소스를 삭제해도 대상 볼륨은 자동으로 삭제되지 않습니다.
[주의] 복제 설정 리소스의 값을 변경하면 기존 리소스가 삭제되고 새로 생성될 수 있지만, 기존 대상 볼륨은 삭제되지 않습니다. 남아 있는 대상 볼륨과 새로운 대상 볼륨의 이름이 같으면 생성이 실패할 수 있으니 주의하세요.
[참고] 리소스 삭제 및 업데이트로 인해 삭제되지 않고 남아 있는 대상 볼륨은 콘솔에서 따로 관리해야 합니다.
resource "nhncloud_nas_storage_volume_mirror_v1" "nas_mirror_01" {
src_volume_id = nhncloud_nas_storage_volume_v1.volume_01.id
dst_region = "KR2"
dst_tenant_id = "ba3be1254ab141bcaef674e74630a31f"
dst_volume {
name = "nas_mirror"
description = "create nas mirror by terraform"
size_gb = 400
mount_protocol {
protocol = "nfs"
}
}
}
| 이름 | 타입 | 필수 | 변경 가능 | 설명 |
|---|---|---|---|---|
| src_region | String | - | - | 원본 볼륨의 리전 기본값은 공급자 설정 파일에 설정된 리전 |
| src_volume_id | String | O | - | 원본 볼륨의 ID |
| dst_region | String | O | - | 복제 대상 볼륨의 리전 |
| dst_tenant_id | String | O | - | 복제 대상 볼륨의 테넌트 ID |
| dst_volume | Object | O | - | 복제 대상 볼륨 생성 요청 객체 |
| dst_volume.acl | List | - | O | 볼륨 생성 시 설정할 ACL 목록 IP 또는 CIDR 형식으로 입력할 수 있습니다. |
| dst_volume.description | String | - | O | 볼륨 설명 |
| dst_volume.encryption | Object | - | - | 볼륨 생성 시 암호화 설정 객체 |
| dst_volume.encryption.enabled | Boolean | - | - | 암호화 설정 활성화 여부 암호화 키 저장소가 설정된 후 해당 필드를 true로 설정하면 암호화가 활성화됩니다. |
| dst_volume.mount_protocol | Object | - | - | 볼륨 생성 시 프로토콜 설정 객체 |
| dst_volume.mount_protocol.cifs_auth_ids | List | - | O | CIFS 인증 ID 목록 NFS 프로토콜 선택 시 입력 불필요 |
| dst_volume.mount_protocol.protocol | String | O | - | 볼륨 마운트 시 프로토콜 지정nfs, cifs 중 하나를 선택할 수 있습니다. |
| dst_volume.name | String | O | - | 볼륨 이름 |
| dst_volume.size_gb | Integer | O | O | 볼륨 크기(GB) 볼륨은 최소 300GB에서 최대 10,000GB까지, 100GB 단위로 설정할 수 있습니다. |
| dst_volume.snapshot_policy | Object | - | - | 볼륨 스냅숏 설정 객체 |
| dst_volume.snapshot_policy.max_scheduled_count | Integer | - | O | 스냅숏 최대 저장 개수 30개까지 설정 가능하며, 최대 저장 개수에 도달하면 자동으로 생성된 스냅숏 중 가장 먼저 만들어진 스냅숏이 삭제됩니다. |
| dst_volume.snapshot_policy.reserve_percent | Integer | - | O | 스냅숏 용량 비율 |
| dst_volume.snapshot_policy.schedule | Object | - | O | 스냅숏 자동 생성 객체null일 경우 스냅숏 자동 생성이 설정되지 않습니다. |
| dst_volume.snapshot_policy.schedule.time | String | - | O | 스냅숏 자동 생성 시간 |
| dst_volume.snapshot_policy.schedule.time_offset | String | - | O | 스냅숏 자동 생성 기준 시간대 |
| dst_volume.snapshot_policy.schedule.weekdays | List | - | O | 스냅숏 자동 생성 요일. 빈 목록은 매일을 의미하며, 요일은 0(일요일)부터 6(토요일)까지의 숫자 목록으로 지정합니다. |
Terraform - https://www.terraform.io/ Terraform Registry - https://registry.terraform.io/