4장. cloud-init를 사용하여 가상 머신 생성
cloud-init
가 포함된 새 VM(가상 머신)을 생성하려면 meta-data
파일 및 user-data
파일을 생성합니다.
-
meta-data
파일에는 인스턴스 세부 정보가 포함됩니다. -
user-data
파일에는 사용자를 생성하고 액세스 권한을 부여하는 정보가 포함되어 있습니다.
이러한 파일을 새 ISO 이미지에 포함하고 ISO 파일을 KVM 게스트 이미지에서 생성된 새 VM에 연결합니다. 이 시나리오에서는 데이터 소스는 NoCloud입니다.
프로세스
cloudinitiso
디렉터리를 생성하고 이를 작업 디렉터리로 설정합니다.mkdir cloudinitiso cd cloudinitiso
$ mkdir cloudinitiso $ cd cloudinitiso
Copy to Clipboard Copied! meta-data
파일을 편집합니다.vi meta-data
$ vi meta-data instance-id: citest local-hostname: citest-1
Copy to Clipboard Copied! user-data
파일을 편집합니다.vi user-data
$ vi user-data #cloud-config password: cilogon chpasswd: {expire: False} ssh_pwauth: True ssh_authorized_keys: - <ssh-rsa AAA...fhHQ== sample@example.com>
Copy to Clipboard Copied! 참고SSH 공개 키는
~/.ssh/id_rsa.pub
파일에서 찾을 수 있습니다.user-data
및meta-data
를 포함하는 ISO 이미지를 생성합니다.genisoimage -output ciiso.iso -volid cidata -joliet -rock user-data meta-data
# genisoimage -output ciiso.iso -volid cidata -joliet -rock user-data meta-data I: -input-charset not specified, using utf-8 (detected in locale settings) Total translation table size: 0 Total rockridge attributes bytes: 331 Total directory bytes: 0 Path table size(bytes): 10 Max brk space used 0 183 extents written (0 MB)
Copy to Clipboard Copied! -
Red Hat 고객 포털에서 KVM 게스트 이미지를
/var/lib/libvirt/images
디렉터리에 다운로드합니다. virt-install
유틸리티를 사용하여 KVM 게스트 이미지에서 새 VM을 생성하고 다운로드한 이미지를 기존 이미지에 연결합니다.virt-install \ --memory 4096 \ --vcpus 4 \ --name mytestcivm \ --disk /var/lib/libvirt/images/rhel-8.1-x86_64-kvm.qcow2,device=disk,bus=virtio,format=qcow2 \ --disk /home/sample/cloudinitiso/ciiso.iso,device=cdrom \ --os-type Linux \ --os-variant rhel10.0 \ --virt-type kvm \ --graphics none \ --import
# virt-install \ --memory 4096 \ --vcpus 4 \ --name mytestcivm \ --disk /var/lib/libvirt/images/rhel-8.1-x86_64-kvm.qcow2,device=disk,bus=virtio,format=qcow2 \ --disk /home/sample/cloudinitiso/ciiso.iso,device=cdrom \ --os-type Linux \ --os-variant rhel10.0 \ --virt-type kvm \ --graphics none \ --import
Copy to Clipboard Copied! 기본 사용자 이름
cloud-user
및 기본 암호cilogon
:을 사용하여 이미지에 로그인합니다.citest-1 login: cloud-user Password: [cloud-user@citest-1 ~]$
citest-1 login: cloud-user Password: [cloud-user@citest-1 ~]$
Copy to Clipboard Copied!
검증
cloud-init
서비스의 상태를 확인하여 유틸리티가 정의된 작업을 완료했는지 확인합니다.cloud-init status
[cloud-user@citest-1 instance]$ cloud-init status status: done
Copy to Clipboard Copied! cloud-init
/var/lib/cloud
아래에 cloud-init 디렉터리 레이아웃을 생성하고 사용자가 지정한 지시문에 따라 특정 디렉터리 콘텐츠를 업데이트하거나 변경합니다.예를 들어 데이터 소스 파일을 확인하여 데이터 소스가
NoCloud
인지 확인할 수 있습니다.cd /var/lib/cloud/instance cat datasource
$ cd /var/lib/cloud/instance $ cat datasource DataSourceNoCloud: DataSourceNoCloud [seed=/dev/sr0][dsmode=net]
Copy to Clipboard Copied! cloud-init
는 user-data를/var/lib/cloud/instance/user-data.txt
에 복사합니다.cat user-data.txt #cloud-config password: cilogon chpasswd: {expire: False} ssh_pwauth: True ssh_authorized_keys: - ssh-rsa AAA...fhHQ== sample@redhat.com
$ cat user-data.txt #cloud-config password: cilogon chpasswd: {expire: False} ssh_pwauth: True ssh_authorized_keys: - ssh-rsa AAA...fhHQ== sample@redhat.com
Copy to Clipboard Copied!
OpenStack의 경우 인스턴스 생성 및 관리에 는 cloud-init
를 사용하여 인스턴스를 구성하는 데 필요한 정보가 포함되어 있습니다. 특정 프로시저 는 사용자 지정 인스턴스 생성 을 참조하십시오.