Azure CLI 2.0을 사용한 Linux 가상 머신 이미징

전제 조건



· Azure에서 CentOS 가상 머신이 생성되었다고 가정합니다.
· CentOS는 이번 CentOS 7.3을 이용하여 동작 확인했습니다.
· 이 가상 머신은 포털 사이트에서 작성한 것이 됩니다.
· AzureCLI2.0을 사용할 수 있는 환경이 준비되어 있다고 가정합니다.

Azure CLI 1.0과 2.0의 차이



Azure CLI 1.0을 사용한 이미징은 관리되지 않는 디스크를 사용합니다. 취득한 이미지 파일의 적용은 동일한 스토리지 계정에만 적용됩니다.
Azure CLI 2.0은 Azure Managed Disks를 활용합니다. 검색된 이미지 파일의 적용은 구독 전체에서 사용할 수 있습니다.

프로비저닝 해제



주의) 이것을 실행하면(자), 이 가상 머신은 기동할 수 없게 되는 것 같습니다. Windows의 sysprep 실행과 비슷한 느낌입니다.
1. 가상 머신에 SSH로 로그인하고 다음 명령을 실행합니다.
# sudo su - (rootになりましょう)
# waagent -deprovision+user
 WARNING! The waagent service will be stopped.
 WARNING! All SSH host key pairs will be deleted.
 WARNING! Cached DHCP leases will be deleted.
 WARNING! root password will be disabled. You will not be able to login as root.
 WARNING! /etc/resolv.conf will be deleted.
 WARNING! swradmin account and entire home directory will be deleted.
Do you want to proceed (y/n)y  ★ y を入力します。

※ 뒤에서는 이런 일이 실행되고 있습니다.
· 모든 SSH 호스트 키 삭제 (구성 파일에서 Provisioning.RegenerateSshHostKeyPair가 'y'인 경우)
·/etc/resolv.conf의 네임 서버 구성 지우기
·/etc/shadow 루트 사용자의 암호 삭제 (구성 파일에서 Provisioning.DeleteRootPassword가 "y"인 경우)
· 캐시 된 DHCP 클라이언트의 임대 삭제
· 호스트 이름을 localhost.localdomain으로 재설정
· (/var/lib/waagent에서 가져온) 마지막으로 프로비저닝 된 사용자 계정 및 관련 데이터 삭제

2. 오류 없이 종료되면 SSH 연결을 종료합니다.

Azure CLI를 사용한 이미지(캡처) 획득



3. Azure CLI에서 구독에 로그인합니다.# az login -u <MSアカウント> -p <パスワード>
4. 해당 구독이 설정되지 않은 경우 계정 세트를 변경합니다.
<設定> # az account set <サブスクリプション名>
<確認> # az account list

★ 해당 구독에서 Current 열이 true 로 되어 있는지 확인하십시오.

5. 리소스 관리자 모드에 있는지 확인합니다.
<確認> 
# azure config list
info:    Executing command config list
info:    Getting config settings
data:    Setting  Value
data:    -------  -----
data:    mode     arm                 ★ Default はarmのはずです。
info:    config list command OK

<設定>
# azure config mode arm      ★ 必要であれば、設定してください。

6. 가상 머신을 종료합니다.
# azure vm deallocate -g <リソースグループ名> -n <仮想マシン名>

Sample)
# azure vm deallocate -g staging -n stg-ap01
info:    Executing command vm deallocate
+ Looking up the VM "stg-ap01"
+ Deallocating the virtual machine "stg-ap01"
info:    vm deallocate command OK

7. VM을 일반화합니다.
# azure vm generalize -g <リソースグループ名> -n <仮想マシン名>

Sample)
# azure vm generalize -g staging -n stg-ap01
info:    Executing command vm generalize
+ Looking up the VM "stg-ap01"
+ Generalizing the virtual machine "stg-ap01"
info:    vm generalize command OK

★ 셧다운이 제대로 완료하고 나서가 아니면, 이런 에러가 나옵니다. 포털에서 활동 로그를 보고 확인하는 것이 좋습니다.
info:    Executing command vm generalize
+ Looking up the VM "stg-ap01"
+ Generalizing the virtual machine "stg-ap01"
error:   Operation 'generalize' is not allowed on VM 'stg-ap01' since the VM is running. Please power off explicitly in
case you shut down the VM from inside the guest operating system.
error:   Error information has been recorded to C:\Users\神都\.azure\azure.err
error:   vm generalize command failed

8. 하이! 치즈! !
# azure vm capture -g <リソースグループ名> -n <仮想マシン名> -p <任意の名前>
-p オプションの後に付ける名前は、イメージファイルの頭につきます。

Sample)
# azure vm capture -g staging -n stg-ap01 -p test
info:    Executing command vm capture
Virtual hard disk's name prefix:  test
+ Looking up the VM "stg-ap01"
+ Capturing the virtual machine "stg-ap01"
   ・
   ・
(省略)
   ・
   ・
info:    vm capture command OK

9. 캡처 확인
기본 가상 머신을 만들 때 지정한 스토리지 계정을 포털에서 선택합니다.
개요 - BLOB 스토리지를 보면 캡처를 획득한 시간에 system이라는 이미지가 획득되었는지 확인할 수 있습니다.
클릭하고 아래 계층 구조로 이동하면 VHD 파일을 볼 수 있습니다.



캡처 이미지를 이용한 가상 머신의 작성은 별도로 게시합니다.

참고 URL

좋은 웹페이지 즐겨찾기