4장. cloud-init 구성
cloud-init 를 사용하면 다양한 구성 작업을 수행할 수 있습니다.
cloud-init 구성에서는 cloud.cfg 파일 및 cloud.cfg. d 디렉터리에 지시문을 추가해야 할 수 있습니다. 또는 특정 데이터 소스에 사용자 데이터 파일 및 메타데이터 파일과 같은 지시문을 파일에 추가해야 할 수 있습니다. 데이터 소스는 지시문을 HTTP 서버에 업로드해야 할 수 있습니다. 데이터 소스의 요구 사항을 확인하고 그에 따라 지시문을 추가합니다.
4.1. NoCloud 데이터 소스에 대한 cloud-init가 포함된 가상 머신 생성 링크 복사링크가 클립보드에 복사되었습니다!
cloud-init 가 포함된 새 VM(가상 머신)을 생성하려면 meta-data 파일 및 user-data 파일을 생성합니다.
-
meta-data파일에는 인스턴스 세부 정보가 포함됩니다. -
user-data파일에는 사용자를 생성하고 액세스 권한을 부여하는 정보가 포함되어 있습니다.
이러한 파일을 새 ISO 이미지에 포함하고 ISO 파일을 KVM 게스트 이미지에서 생성된 새 VM에 연결합니다. 이 시나리오에서는 데이터 소스가 NoCloud입니다.
절차
cloudinitiso라는 디렉터리를 만들고 is를 작업 디렉터리로 설정합니다.$ mkdir cloudinitiso $ cd cloudinitisometa-data파일을 생성하고 다음 정보를 추가합니다.instance-id: citest local-hostname: citest-1user-data파일을 생성하고 다음 정보를 추가합니다.#cloud-config password: cilogon chpasswd: {expire: False} ssh_pwauth: True ssh_authorized_keys: - ssh-rsa AAA...fhHQ== sample@redhat.com참고user-data파일의 마지막 줄은 SSH 공개 키를 참조합니다.~/.ssh/id_rsa.pub에서 SSH 공개 키를 찾습니다. 이 샘플 프로시저를 시도할 때 공개 키 중 하나를 포함하도록 행을 수정합니다.genisoimage명령을 사용하여user-data및meta-data를 포함하는 ISO 이미지를 생성합니다.# 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)-
Red Hat 고객 포털에서
/var/lib/libvirt/images디렉토리로 KVM 게스트 이미지를 다운로드합니다. 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 rhel9.0 \ --virt-type kvm \ --graphics none \ --import사용자 이름
cloud-user및 암호cilogon:을 사용하여 이미지에 로그인합니다.citest-1 login: cloud-user Password: [cloud-user@citest-1 ~]$
검증
cloud-init상태를 확인하여 유틸리티가 정의된 작업을 완료했는지 확인합니다.[cloud-user@citest-1 instance]$ cloud-init status status: done유틸리티는 실행 시cloud-init/var/lib/cloud아래에 cloud-init 디렉터리 레이아웃을 생성하고 사용자가 지정한 지시문에 따라 특정 디렉터리 콘텐츠를 업데이트하거나 변경합니다.예를 들어 데이터 소스 파일을 확인하여 데이터 소스가
NoCloud인지 확인할 수 있습니다.$ cd /var/lib/cloud/instance $ cat datasource DataSourceNoCloud: DataSourceNoCloud [seed=/dev/sr0][dsmode=net]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
OpenStack의 경우 인스턴스 생성 및 관리에 는 cloud-init 를 사용하여 인스턴스를 구성하기 위한 정보가 포함되어 있습니다. 특정 프로시저 에 대한 사용자 지정 인스턴스 생성을 참조하십시오.