例: CentOS イメージ

例: CentOS イメージ

この例は、CentOS イメージのインストール方法を説明します。おもに CentOS 7 を対象にしています。CentOS のインストールプロセスはバージョンにより異なる可能性があるため、違うバージョンの CentOS を使用している場合、インストール手順が異なる可能性があります。

CentOS インストール ISO のダウンロード

  1. CentOS ミラー ページに移動します。
  2. ミラーの右側にある HTTP リンクをクリックします。
  3. 使用したい CentOS のバージョンのリンクをクリックします。例えば、 7/ です。
  4. isos/ フォルダーへのリンクをクリックします。
  5. 64 ビットイメージ用の x86_64/ フォルダーへのリンクをクリックします。
  6. Click the netinstall ISO image that you want to download. For example, CentOS-7-x86_64-NetInstall-1611.iso is a good choice because it is a smaller image that downloads missing packages from the Internet during installation.

インストールプロセスの開始

Start the installation process using either the virt-manager or the virt-install command as described previously. If you use the virt-install command, do not forget to connect your VNC client to the virtual machine.

以下を前提としています。

  • 仮想マシンイメージの名前は centos です。 virsh コマンドを使用してイメージの状態を操作する際に、この名前が必要になります。
  • ネットワークインストール ISO イメージは /data/isos ディレクトリーに保存されています。

virt-install をコマンド使用する場合、このコマンドは以下のようになるでしょう。

# qemu-img create -f qcow2 /tmp/centos.qcow2 10G
# virt-install --virt-type kvm --name centos --ram 1024 \
  --disk /tmp/centos.qcow2,format=qcow2 \
  --network network=default \
  --graphics vnc,listen=0.0.0.0 --noautoconsole \
  --os-type=linux --os-variant=centos7.0 \
  --location=/data/isos/CentOS-7-x86_64-NetInstall-1611.iso

インストールのステップ実行

At the initial Installer boot menu, choose the Install CentOS 7 option. After the installation program starts, choose your preferred language and click Continue to get to the installation summary. Accept the defaults.

_images/centos-install.png

Ethernet 状態の変更

デフォルトの Ethernet 設定は OFF です。 Ethernet 設定を OFF から ON に変更します。特に、 IPv4 設定方法 (IPv4 Settings Method) は必ず 自動 (DHCP) (Automatic (DHCP)) に設定してください。なお、デフォルト値は 自動 (DHCP) です。

_images/centos-tcpip.png

ホスト名

The installer allows you to choose a host name. The default (localhost.localdomain) is fine. You install the cloud-init package later, which sets the host name on boot when a new instance is provisioned using this image.

CentOS Web サーバーの指定

CentOS のバージョンによっては、ユーザーが CentOS のミラーに応じた、URL や Web サイト、および CentOS のディレクトリをネットワークインストーラーに指定する必要があります。インストーラーが URL だけを要求する場合、http://mirror.umd.edu/centos/7/os/x86_64 は有効な URL の 1 つです。

注釈

mirror.umd.edu の代わりに、他のミラーを使用することを考えてください。

_images/centos-url-setup.png

インストーラーが Web サイト名と CentOS ディレクトリをそれぞれ確認する場合、次のとおり入力します。

  • Web サイト名: mirror.umd.edu
  • CentOS ディレクトリー: centos/7/os/x86_64

ミラーの一覧は CentOS ミラーページ を参照してください。取得したいミラー Web サイト名の HTTP リンクをクリックしてください。

ストレージデバイス

インストールに使用するデバイスの種類の確認が表示された場合、virtio ブロックデバイス (Virtio Storage Devices) を選択します。

ディスクのパーティション作成

ディスクのパーティションは、さまざまな選択肢があります。デフォルトでは、LVM パーティションが使用され、3 つのパーティション (/boot/swap) が作成されます。これでうまく動作します。この代わりに、単一の ext4 パーティション を作成し、 / にマウントしたい場合もあるでしょう。これもうまく動作します。

よくわからない場合、インストーラーのデフォルトのパーティション設定を使用します。基本的には、他のスキーマより良くありませんが、最終パーティションに動的リサイズできるパーティションを作成することにより、他のパーティションの境界をまたがることなくリサイズできます。

インストールオプションの指定

デフォルトのオプションを使用して、インストールをステップ実行します。最も簡単な方法は、「最小インストール (Minimal Install)」インストールを選択することです。SSH サーバーがインストールされます。

Set the root password

During the installation, remember to set the root password when prompted.

CD-ROM の取り出しと再起動

Wait until the installation is complete.

_images/centos-complete.png

To eject a disk by using the virsh command, libvirt requires that you attach an empty disk at the same target that the CD-ROM was previously attached, which may be hda. You can confirm the appropriate target using the virsh dumpxml vm-image command.

# virsh dumpxml centos
<domain type='kvm' id='19'>
  <name>centos</name>
...
    <disk type='block' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <target dev='hda' bus='ide'/>
      <readonly/>
      <address type='drive' controller='0' bus='1' target='0' unit='0'/>
    </disk>
...
</domain>

virsh を使用して、ディスクを取り出し、再起動するために、ホストから root として以下のコマンドを実行します。 virt-manager を使用している場合、以下のコマンドを使用することもできますが、GUI を使用して、ディスクを切断し、手動で停止および起動を実行することもできます。

# virsh attach-disk --type cdrom --mode readonly centos "" hda
# virsh reboot centos

ACPI サービスのインストール

ハイパーバイザーがインスタンスを再起動やシャットダウンできるようにするために、ゲストシステムに acpid サービスをインストールし実行しておく必要があります。

Log in as root to the CentOS guest and run the following commands to install the ACPI service and configure it to start when the system boots:

# yum install acpid
# systemctl enable acpid

メタデータ取得の設定

インスタンスは、起動時にいくつかの処理を実行するために、メタデータサービスと通信する必要があります。例えば、インスタンスが SSH 公開鍵を取得し、ユーザーデータエージェントを実行する必要があります。インスタンスが確実にこれらの処理を実行するために、以下の方法のどれかを使用します。

  • cloud-init RPM をインストールします。これは、Ubuntu cloud-init パッケージを移植したものです。これが推奨の方法です。
  • メタデータサービスから必要な情報を取得するために、次のセクションに記載されているとおり、 /etc/rc.local ファイルを編集します。

cloud-init を使用した公開鍵の取得

The cloud-init package automatically fetches the public key from the metadata server and places the key in an account. Install cloud-init inside the CentOS guest by running:

# yum install cloud-init

The account varies by distribution. On CentOS-based virtual machines, the account is called centos.

You can change the name of the account used by cloud-init by editing the /etc/cloud/cloud.cfg file and adding a line with a different user. For example, to configure cloud-init to put the key in an account named admin, use the following syntax in the configuration file:

users:
  - name: admin
    (...)

パーティションのリサイズをサポートするための cloud-utils-growpart のインストール

In order for the root partition to properly resize, install the cloud-utils-growpart package, which contains the proper tools to allow the disk to resize using cloud-init.

# yum install cloud-utils-growpart

公開鍵取得のスクリプトの書き込み (cloud-init なしの場合)

cloud-init パッケージをインストールできない場合、SSH 公開鍵を取得し、それを root アカウントに追加するために、 /etc/rc.d/rc.local ファイルを編集し、 touch /var/lock/subsys/local 行の前に以下の行を追加します。

if [ ! -d /root/.ssh ]; then
  mkdir -p /root/.ssh
  chmod 700 /root/.ssh
fi

# Fetch public key using HTTP
ATTEMPTS=30
FAILED=0
while [ ! -f /root/.ssh/authorized_keys ]; do
  curl -f http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key \
    > /tmp/metadata-key 2>/dev/null
  if [ \$? -eq 0 ]; then
    cat /tmp/metadata-key >> /root/.ssh/authorized_keys
    chmod 0600 /root/.ssh/authorized_keys
    restorecon /root/.ssh/authorized_keys
    rm -f /tmp/metadata-key
    echo "Successfully retrieved public key from instance metadata"
    echo "*****************"
    echo "AUTHORIZED KEYS"
    echo "*****************"
    cat /root/.ssh/authorized_keys
    echo "*****************"
  fi
done

注釈

いくつかの VNC クライアントは、コロン (:) を セミコロン (;) に、アンダースコア (_) をハイフン (-) に置き換えます。http; ではなく、http: であること、authorized-keys ではなく authorized_keys であることを確認してください。

注釈

上記のスクリプトは、メタデータサーバーから SSH 公開鍵のみを取得します。新しいインスタンスの要求時に、ユーザーが指定できるオプションデータである「ユーザーデータ」の取得を行いません。ユーザーデータは、インスタンスの起動時に、カスタムスクリプトを実行するためにしばしば使用されます。

OpenStack メタデータサービスは、Amazon EC2 メタデータサービスの 2009-04-04 版と互換性があります。ユーザーデータの取得方法に関する詳細は Using Instance Metadata にある Amazon EC2 のドキュメントを参照してください。

zeroconf ルートの無効化

インスタンスがメタデータサービスにアクセスできるようにするために、デフォルトの zeroconf ルートを無効化する必要があります。

# echo "NOZEROCONF=yes" >> /etc/sysconfig/network

コンソールの設定

For the nova console-log command to work properly on CentOS 7, you might need to do the following steps:

  1. Edit the /etc/default/grub file and configure the GRUB_CMDLINE_LINUX option. Delete the rhgb quiet and add console=tty0 console=ttyS0,115200n8 to the option.

    例:

    ...
    GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=cl/root rd.lvm.lv=cl/swap console=tty0 console=ttyS0,115200n8"
    
  2. 以下のコマンドを実行し、設定を反映します。

    # grub2-mkconfig -o /boot/grub2/grub.cfg
    Generating grub configuration file ...
    Found linux image: /boot/vmlinuz-3.10.0-229.14.1.el7.x86_64
    Found initrd image: /boot/initramfs-3.10.0-229.14.1.el7.x86_64.img
    Found linux image: /boot/vmlinuz-3.10.0-229.4.2.el7.x86_64
    Found initrd image: /boot/initramfs-3.10.0-229.4.2.el7.x86_64.img
    Found linux image: /boot/vmlinuz-3.10.0-229.el7.x86_64
    Found initrd image: /boot/initramfs-3.10.0-229.el7.x86_64.img
    Found linux image: /boot/vmlinuz-0-rescue-605f01abef434fb98dd1309e774b72ba
    Found initrd image: /boot/initramfs-0-rescue-605f01abef434fb98dd1309e774b72ba.img
    done
    

インスタンスのシャットダウン

From inside the instance, run as root:

# poweroff

クリーンアップ (MAC アドレスの詳細の削除)

The operating system records the MAC address of the virtual Ethernet card in locations such as /etc/sysconfig/network-scripts/ifcfg-eth0 during the instance process. However, each time the image boots up, the virtual Ethernet card will have a different MAC address, so this information must be deleted from the configuration file.

virt-sysprep というユーティリティーがあります。これは、MAC アドレス参照の削除など、さまざまなクリーンアップ作業を実行します。決まった場所にある仮想マシンイメージをクリーンアップします。

# virt-sysprep -d centos

libvirt ドメインの定義削除

これで、イメージを Image service にアップロードできます。今後は、この仮想マシンイメージは libvirt により管理する必要がありません。virsh undefine vm-image コマンドを使用して libvirt に通知します。

# virsh undefine centos

イメージの完成

qemu-img create コマンドを用いて作成したベースとなるイメージファイルは、アップロードできる状態になりました。例えば、openstack image create コマンドを使用すると /tmp/centos.qcow2 イメージを Image service にアップロードできます。詳細は イメージの作成・更新 を参照してください。

Creative Commons Attribution 3.0 License

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.