사용자 데이터
IBM Cloud® Virtual Servers for Virtual Private Cloud 인스턴스를 생성할 때 자동으로 일반 구성 태스크를 수행하거나 스크립트를 실행하는 선택적 사용자 데이터를 지정할 수 있습니다. 사용자 데이터 및 사용자 이름에 대한 자세한 정보는 IAM 액세스 를 참조하십시오.
IBM Cloud VPC 는 Cloud-init 기술을 사용하여 가상 서버 인스턴스를 구성합니다. VPC용 새 가상 서버 페이지의 사용자 데이터 필드를 통해 사용자는 cloud-init를 사용하여 사용자 정의 구성 옵션을 입력할 수 있습니다. Cloud-init는 cloud-config 파일의 yaml을 포함하여 구성 데이터에 대한 여러 형식을 지원합니다.
사용자 데이터 필드에 직접 클라우드 구성 데이터를 지정하거나, 텍스트 파일에 클라우드 구성 데이터를 포함시키고 인스턴스를 작성할 때 파일 이름을 지정할 수 있습니다. 예를 들어 userdata.blob
에서 클라우드 구성 데이터를 저장하는 경우 CLI를 사용하여 인스턴스를 작성할 때 -user-data @userdata.blob
을 지정하십시오.
IBM Hyper Protect Container Runtime 이미지를 사용하여 가상 서버 인스턴스를 작성할 때 사용자 데이터 필드의 일부로 계약을 전달해야 합니다. 이미지는 SSH 액세스가 사용 안함으로 설정된 잠긴 이미지이므로 인스턴스와 상호작용하는 유일한 방법은 계약을 전달하는 것입니다.
사용자 데이터 필드(또는 파일)의 크기 한계는 64KB입니다.
Linux용 사용자 데이터 예제
Linux 의 기본 사용자 계정은 운영 체제에 따라 다릅니다. 운영 체제 목록과 그에 해당하는 기본 사용자 계정을 보려면, Linux 인스턴스에 연결하기: 기본 사용자 계정 결정하기를 참조하세요.
사용자 및 SSH 키 추가
다음 cloud-init 예제는 Linux 사용자가 사용자를 초대하고 권한 부여된 SSH 키를 사용자에게 제공하는 방법을 보여줍니다. 이름 필드에는 ~/.ssh/authorized_keys
에 추가된 공개 키가 있습니다.
Linux 경우, 운영 체제의 SSH 서버가 이 키 유형을 지원하는 경우에만 Ed25519 SSH키 유형을 사용할 수 있습니다. 자세한 정보는 SSH키 시작하기를 참조하십시오.
#cloud-config
users:
- name: demouser
gecos: Demo User
sudo: ALL=(ALL) NOPASSWD:ALL
groups: users, admin
ssh_import_id: None
lock_passwd: true
ssh_authorized_keys:
- <ssh public key>
다음 쉘 스크립트 예제는 Linux 사용자가 현재 사용자를 위해 SSH 키를 추가하는 방법을 보여줍니다.
#!/bin/bash
echo <sshKey> > ~/.ssh/authorized_keys
이러한 예제 중 하나를 직접 사용자 데이터 필드에 붙여넣을 수 있습니다. 그런 다음 사용자 데이터는 프로비저닝 동안 가상 서버 인스턴스에 제공됩니다.
파일을 포함하도록 지정하고 파일 이름 앞에 공백이 있는 경우 데이터가 올바르게 해석되지 않습니다. 파일 지정(<<EOF
)의 끝 바로 다음에 오는 줄의 첫 번째 문자가 #!/bin/sh
또는 #!/bin/bash
인지 확인합니다. 이 문자는 들여쓰기할 수 없습니다.
자세한 Linux 사용자 데이터 예제 및 정보는 클라우드 구성 예제를 참조하세요.)
클라우드 구성 스크립트를 사용하여 단일 디스크 인스턴스 스토리지 구성
인스턴스 스토리지는 빠른 로컬 스토리지가 연결된 상태에서 가상 서버 인스턴스를 요청할 수 있는 VPC의 기능입니다. 인스턴스 스토리지에 대한 자세한 정보는 인스턴스 스토리지 정보를 참조하십시오.
기본적으로 인스턴스 스토리지로 가상 서버 인스턴스를 프로비저닝한 후 처음 해당 서버에 로그인하면 인스턴스 스토리지 디스크는 구성되어 있지 않습니다. 인스턴스 스토리지 디스크는 블록 디바이스로 표시되며(예: /dev/vdb
) 파일 시스템에 사용하기 전에 다음을 수행해야 합니다.
- 디바이스를 파티셔닝합니다.
- 파일 시스템에서 파티션을 형식화합니다.
- 파일 시스템을 마운트하십시오.
이 활동은 사용자 데이터 필드를 사용하여 가상 인스턴스를 프로비저닝할 때 자동으로 수행될 수도 있습니다. cloud-config
스크립트는 다음 조치를 정의합니다.
- 가상 인스턴스를 처음 부팅하는 동안 클라우드 초기화 프로세스를 실행하도록 지시합니다.
- 디바이스를 자동으로 파티셔닝합니다.
ext4
파일 시스템을 사용하여 파티션을 형식화합니다.- 파일 시스템을 마운트합니다.
가상 인스턴스 정의의 일부가 아닌 인스턴스 스토리지 디스크를 자동으로 구성하도록 사용자 데이터 필드를 지정하지 마십시오. 가상 인스턴스 정의의 일부가 아닌 인스턴스 스토리지 디스크를 자동으로 구성하려고 하면 dev/vdb device
가 대상으로 지정되고 cloud-init 데이터 소스를 가리킬 수 있습니다. 이러한 경우 호스트 이름 및 SSH 키와 같은 cloud-init
구성이 손상됩니다.
다음 예에서는 인스턴스 스토리지 디스크를 자동으로 구성하는 사용자 데이터를 보여줍니다. 이 예는 단일 디스크를 지정하는 인스턴스 프로파일에 사용될 수 있습니다.
#cloud-config
# Cloud-init supports simple partition and file system config.
# This user data yaml will create a full partition on the first
# virtio_blk device after the boot device, initialize ext4 on it and
# mount it on a folder matching the label.
#
disk_setup:
/dev/vdb:
table_type: 'mbr'
layout:
- 100
overwrite: false
fs_setup:
- label: /mnt/inststg1
filesystem: 'ext4'
device: /dev/vdb1
overwrite: false
runcmd:
- [ mkdir, /mnt/inststg1 ]
mounts:
- ["/dev/vdb1", "/mnt/inststg1"]
mount_default_fields: [ None, None, "auto", "defaults,nofail", "0", "2" ]
이 스크립트는 가상 인스턴스에서 사용 가능한 첫 번째 인스턴스 저장 장치( /dev/vdb, )를 가상 인스턴스에서 사용 가능한 인터페이스 유형 virtio_blk로 구성합니다. 해당 스크립트는 사용자 데이터 필드에 붙여넣거나 UI에서 사용자 데이터 가져오기 링크를 사용하여 가져올 수 있습니다.
이 스크립트는 Ubuntu 20.04 LTS Focal Fossa
의 스톡 이미지로 테스트됩니다. 스크립트가 기타 Linux 스톡 및 사용자 정의 이미지에 적합할 수 있지만 스크립트 조정이 필요할 수 있습니다.
클라우드 구성 스크립트는 Windows 가상 서버에 적합하지 않습니다. 인스턴스에 인스턴스 스토리지가 포함되어 있지 않으면 이 스크립트를 사용하지 마십시오. 계획되지 않은 디바이스를 구성할 수 있습니다.
클라우드 구성 스크립트에 있는 항목에 대한 다음 정보를 참조하십시오
- disk_setup: 마스터 부트 레코드를 사용하여 디스크에 걸쳐 있는 단일 기본 파티션을 작성합니다. 디바이스가 이미 파티셔닝되어 있으면 “overwrite: false”를 통해 이 오퍼레이션을 건너뛸 수 있습니다.
- fs_setup: vdb 블록 디바이스의 첫 번째 파티션에 ext4 파일 시스템을 작성하고 레이블 “inststg1”을 지정합니다. 요구사항을 충족하도록 파일 시스템 유형 및 레이블을 조정할 수 있습니다. 파일 시스템에서 이미 형식화된 경우 “overwrite: false”를 설정하면 파티션이 형식화될 수 없습니다.
- runcmd: 계층 구조 파일 시스템에서 ‘/’로 마운트 지점을 분리하도록 디렉토리를 작성합니다.
- mounts: /inststg1로 파일 시스템 디바이스의 마운트를 수행합니다. runcmd로 여기에서 디렉토리 경로의 이름을 변경할 수 있습니다.
- mount_default_fields: /etc/fstab 파일에서 영구적인 마운트 지시문을 작성합니다. 다시 부팅 명령을 실행하면 가상 서버는 인스턴스 스토리지 파일 시스템이 계속해서 마운트된 상태로 작동됩니다.
CLI와 API는 사용자 데이터 필드도 지원합니다.
이 클라우드 구성 스크립트 예에서는 인스턴스 스토리지 /dev/vdb
블록 디바이스를 자동으로 구성합니다. 가상 서버만 재부팅하는 경우 구성 및 데이터가 유지되므로 이 구성은 계속 작동합니다. 그러나 이전에 중지된 가상 서버를 시작하는 경우 가상 서버가 부팅될 때 새로운 인스턴스 스토리지 디스크 세트를 갖게 됩니다. 이러한 상황에서는 cloud-init 단계가 수동으로 다시 실행되어야 합니다. 기본적으로
cloud-config 스크립트는 처음 부팅할 때만 실행됩니다. cloud-init 단계가 각 부팅 시 자동으로 실행되도록 cloud.config 파일의 cloud-init 섹션도 편집할 수 있습니다. 이 단계의 경우 각 부팅 시 실행할 cloud.config 파일의 cloud_cloud_init_modules 섹션 편집 절을 참조하십시오.
클라우드-config 스크립트를 사용하여 2개의 디스크 인스턴스 스토리지 구성하기
다음 예에서는 인스턴스 스토리지 디스크를 자동으로 구성하는 사용자 데이터를 보여줍니다. 이 예는 두 개의 디스크를 지정하는 인스턴스 프로파일에 사용될 수 있습니다.
#cloud-config
# Cloud-init supports simple partition and file system config.
# This user data yaml will create a full partition on the first two
# virtio_blk devices after the boot device, initialize ext4 on them and
# mount them on new folders off of ‘/mnt/’.
#
disk_setup:
/dev/vdb:
table_type: 'mbr'
layout:
- 100
overwrite: false
/dev/vdc:
table_type: 'mbr'
layout:
- 100
overwrite: false
fs_setup:
- label: /mnt/inststg1
filesystem: 'ext4'
device: /dev/vdb1
overwrite: false
- label: /mnt/inststg2
filesystem: 'ext4'
device: /dev/vdc1
overwrite: false
runcmd:
- [ mkdir, /mnt/inststg1 ]
- [ mkdir, /mnt/inststg2 ]
mounts:
- ["/dev/vdb1", "/mnt/inststg1"]
- ["/dev/vdc1", "/mnt/inststg2"]
mount_default_fields: [ None, None, "auto", "defaults,nofail", "0", "2" ]
이 cloud-config 스크립트 예제는 인스턴스 스토리지 /dev/vdb
및 dev/vdc
블록 디바이스 모두를 자동으로 구성하며 인스턴스 스토리지에 대한 virtio_blk
인터페이스 유형을 가정합니다. 가상 서버만 재부팅하는 경우 구성 및 데이터가 유지되므로 이 구성은 계속 작동합니다.
중지된 가상 서버를 시작하면 가상 서버가 부팅될 때 새로운 인스턴스 스토리지 디스크 세트를 갖게 됩니다. 이 경우 클라우드 초기화 단계를 수동으로 다시 실행해야 합니다. 기본적으로 cloud-config 스크립트는 처음 부팅할 때만 실행됩니다. cloud-init 단계가 각 부팅 시 자동으로 실행되도록 cloud.config 파일의 cloud-init 섹션도 편집할 수 있습니다.
각 부팅 시 실행할 cloud.config 파일의 cloud_cloud_init_modules 섹션 편집
이전 예의 클라우드 구성 스크립트는 인스턴스 스토리지 /dev/vdb
블록 디바이스를 자동으로 구성합니다. 가상 서버만 재부팅하는 경우 구성 및 데이터가 유지되므로 이 구성은 계속 작동합니다. 그러나 중지된 가상 서버를 시작하면 가상 서버가 부팅될 때 새로운 인스턴스 스토리지 디스크 세트를 갖게 됩니다. 이 경우 클라우드 초기화 단계를 수동으로 다시 실행해야 합니다. 기본적으로 cloud-config
스크립트는 처음 부팅할 때만 실행됩니다.
- 이전 예에서 클라우드 이니셔티브 yaml 데이터를 지정하는 사용자 데이터 필드가 있는 프로비저닝된 인스턴스가 필요합니다.
- 시작된 인스턴스에 로그인할 때 파일 시스템을 구성하고 마운트해야 합니다.
- Cloud-config yaml의 disk_setup 또는 mount 섹션에 사용자 데이터로 지정된 다른 지시어가 없습니다.
연속적으로 부팅할 때마다 클라우드 구성 스크립트를 실행하려면 다음 절차를 따르세요:
-
etc/cloud/cloud.cfg
파일을 편집하십시오. -
cloud_init_modules
섹션을 찾으십시오. 여기에는 disk_setup과 mount 모듈이 포함되어 있습니다. -
disk_setup 및 mount 모듈 행을
always
로 변경하십시오. 해당 섹션은 다음과 같이 표시됩니다.# The modules that run in the 'init' stage cloud_init_modules: - migrator - seed_random - bootcmd - write-files - growpart - resizefs - [disk_setup, always] - [mounts, always] - set_hostname - update_hostname - update_etc_hosts - ca-certs - rsyslog - users-groups - ssh
-
파일을 저장하고 중지한 후 인스턴스를 시작하십시오. 마운트가 새로 파티셔닝되고 형식화된 파일 시스템에 자동으로 작성됩니다.
Windows용 사용자 데이터 예제
다음 예제는 Windows 인스턴스로 전달할 수 있는 사용자 데이터를 보여줍니다. 이 사용자 데이터 샘플은 시간대를 설정합니다.
"user_data": "Content-Type: multipart/mixed; boundary=MIMEBOUNDARY\nMIME-Version: 1.0\n\n--MIMEBOUNDARY\nContent-Type: text/cloud-config; charset=\"us-ascii\"\nMIME-Version: 1.0\nContent-Transfer-Encoding: 7bit\nContent-Disposition: attachment; filename=\"cloud-config\"\n#cloud-config\n\nset_timezone: America/Detroit\n\n--MIMEBOUNDARY--\n"
더 많은 Windows 사용자 데이터 예제 및 정보는 Cloudbase-init 1.0 설명서를 참조하세요.
Fedora Core OS에 대한 사용자 데이터 예제
다음 예제에서는 Fedora Core OS 인스턴스에 전달할 수 있는 사용자 데이터를 보여줍니다.
Fedora Core OS에서는 사용자 로그인 'root'가 기본적으로 사용 안함으로 설정되어 있습니다. 사용자 로그인 'core'를 사용하여 Fedora Core OS 인스턴스에 로그인할 수 있습니다.
Fedora Core OS 사용자 데이터는 ignition 형식이어야 합니다.
다음 예제를 사용하여 Fedora Core OS 인스턴스를 부팅하십시오.
ibmcloud is instance-create $NAME $VPC $ZONE $PROFILE $SUBNET --image-id $IMAGE --key-ids $SSHKEY --user-data @example.ign
다음 예제를 사용하여 로컬 사용자를 작성하십시오.
-
YAML 형식으로 Butane 구성을 작성하십시오.
Butane 구성
variant: fcos version: 1.4.0 passwd: users: - name: demouser
-
Butane을 사용하여 Butane 구성을 Ignition 구성으로 변환하십시오.
Ignition 구성
"ignition": { "version": "1.4.0" }, "passwd": { "users": [ { "name": "demouser" } ] } }
다음 샘플 사용자 데이터를 사용하여 로컬 사용자에 대한 SSH 키를 추가합니다.
-
YAML 형식으로 Butane 구성을 작성하십시오.
Butane 구성
variant: fcos version: 1.4.0 passwd: users: - name: demouser ssh_authorized_keys: - <ssh public key>
-
Butane을 사용하여 Butane 구성을 Ignition 구성으로 변환하십시오.
Ignition 구성
"ignition": { "version": "1.4.0" }, "passwd": { "users": [ { "name": "demouser", "sshAuthorizedKeys": [ "<ssh public key>" ] } ] } }
추가 Fedora Core OS 사용자 데이터 예제 및 정보는 Fedora 프로젝트 문서를 참조하십시오.
다음 단계
프로파일을 선택한 후 인스턴스를 계획하고 작성해야 합니다.