Check! Azure 仮想マシンで、Linux ベースのカスタムイメージを作成する

  • 0
    いいね
  • 0
    コメント

    こんにちは、エクストリームデザイン@dz_ こと大平かづみです。

    Prologue - はじめに

    Azure の仮想マシンで何度も同じインストールをするのは手間なので、カスタムイメージを作ってみました。

    下記の記事を参考に CLI 版を試し、さらに後半の手順はポータルからもできて簡単だったので、併せてご紹介します。

    環境

    CentOS 7.3 および CentOS 6.8 の2つで、動作検証しました。また、 Azure Managed Disks で作成した仮想マシンを前提とします。

    手順

    大まかな流れは以下の3ステップです。

    1. ディスクをバックアップする
    2. 対象の仮想マシンを一般化する(個別情報の削除とプロビジョニングの解除)
    3. 対象の仮想マシンのイメージを作成する

    [おまけ] 作成したイメージから仮想マシンのインスタンスを作成する

    1. ディスクをバックアップする

    まず、念のため、インスタンスのディスクのバックアップを取っておきます。

    下記ドキュメントが参考になります。

    2. 対象の仮想マシンを一般化する(個別情報の削除とプロビジョニングの解除)

    用意ができたら、イメージに不要な個別の情報の削除とVMプロビジョニングの解除を行います。対象の仮想マシンにSSHログインし、下記を実行してください。

    # 対象の仮想マシンにSSHログインする
    $ ssh xxx@xxx
    
    # 個別情報を削除し、Linux エージェントを削除する
    $ sudo 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! dev account and entire home directory will be deleted.
    Do you want to proceed (y/n)y
    
    2017/03/27 12:16:05.736443 INFO examine /proc/net/route for primary interface
    2017/03/27 12:16:05.738062 INFO primary interface is [eth0]
    2017/03/27 12:16:05.739166 INFO interface [lo] has flags [73], is loopback [True]
    2017/03/27 12:16:05.746650 INFO interface [lo] skipped
    2017/03/27 12:16:05.747737 INFO interface [eth0] has flags [4163], is loopback [False]
    2017/03/27 12:16:05.749394 INFO interface [eth0] selected
    
    # インスタンスからログアウトする
    $ exit
    

    3. 対象の仮想マシンのイメージを作成する

    そして、カスタムイメージを作成します。

    ポータルでも Azure CLI でも作業できます。どちらも簡単なので慣れた方をどうぞ~

    ポータルの場合

    仮想マシンのブレードから、「撮影タブ」を開きます。保存するイメージの「名前」と「リソースグループ」を指定し、必要に応じてオプションを設定し、作成します。

    20170331_azure-vm-snapshot_003.png

    あら、簡単!(。・ω・)ノ

    Azure CLI の場合

    Azure CLI 2.0 の環境を用意し、ログイン後、下記のコマンドを実行します。

    # Azure CLI 2.0 をインストールする
    $ pip install azure-cli
    
    # Azure にログインする
    $ az login
    
    # 仮想マシンの割り当てを解除する
    $ az vm deallocate --resource-group yourResourceGroup --name targetVM
    
    # 仮想マシンを一般化する
    $ az vm generalize --resource-group yourResourceGroup --name targetVM
    
    # 一般化した仮想マシンからイメージを作成する
    $ az image create --resource-group yourResourceGroup --name targetImage --source targetVM
    

    これだけ!簡単!ヾ(*・ω・*)o

    [おまけ] 作成したイメージから仮想マシンのインスタンスを作成する

    ちなみに、イメージから仮想マシンのインスタンスを作成する作業は、ポータルからでもCLIからでも可能です。

    なお、作成したインスタンスは、セキュリティグループの SSH が開いてないかもしれません。起動後にSSHで接続できない場合は、ネットワークセキュリティグループを確認してみてください。

    ポータルの場合

    ポータルで作成したイメージを開き、「VMの作成」から仮想マシンのインスタンスを作成できます。

    20170331_azure-vm-snapshot_005.png

    CLI の場合

    Prologue に掲載した記事の「手順 3: キャプチャしたイメージから VM を作成する」をご参照ください。

    Epilogue - おわりに

    独自のイメージをつくっておけるのは、便利ですねー!