このセクションでは、CentOS-7-x86_64-Minimal-1804.iso を使って、Openstack で使用するイメージファイルを手動で作成する方法を紹介します。

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

ISOファイル CentOS-7-x86_64-Minimal-1804.iso をダウンロードすします。

■ ダウンロードのディレクトリへ移動
$ cd /mnt/DISK1
$ 

■ ISOのダウンロード
[DISK1]$ sudo curl -LO http://ftp.riken.jp/Linux/centos/7.5.1804/isos/x86_64/CentOS-7-x86_64-Minimal-1804.iso
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  906M  100  906M    0     0   444k      0  0:34:49  0:34:49 --:--:--  915k
[DISK1]$ 

CentOS-7-x86_64-Minimal-1804 のイメージファイルを qcow2 形式で作成します。ここでは、イメージファイル名を centos7-minimal としています。

$ sudo qemu-img create -f qcow2 /tmp/centos7-minimal.qcow2 10G
[sudo] yuji のパスワード:
Formatting '/tmp/centos7-minimal.qcow2', fmt=qcow2 size=10737418240 encryption=off cluster_size=65536 lazy_refcounts=off 
$ 

ダウンロードした CentOS-7-x86_64-Minimal-1804.iso と作成したイメージファイル centos7-minimal を使って、仮想インスタンスをインストールします。ここでは、仮想インスタンス名を centos7-minimal としています。

$ sudo virt-install --virt-type kvm --name centos7-minimal --ram 1024 \
  --disk /tmp/centos7-minimal.qcow2,format=qcow2 \
  --network network=ovsbr0 \
  --graphics vnc,listen=0.0.0.0 --noautoconsole \
  --os-type=linux --os-variant=centos7.0 \
  --location=/mnt/DISK1/CentOS-7-x86_64-Minimal-1804.iso

インストールの開始中...
ファイル .treeinfo を読出中...                      |  354 B  00:00     
ファイル vmlinuz を読出中...                        | 5.9 MB  00:00     
ファイル initrd.img を読出中...                     |  50 MB  00:00     
仮想マシンのインストールが進行中です。インストール
が完了するまでコンソールの再接続を待っています。
$

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

仮想マシンマネージャーで、仮想インスタンス centos7-minimal  を開き、インストールを進めます。

インストール完了後に再起動を求められますが、この時点では再起動せず以降の手順に進みます。

virsh dumpxml コマンドを使って、仮想インスタンス centos7-minimal の設定ファイルを確認します。ここでは、<disk type=… device=’cdrom’> 〜 </disk> 内にある <target dev=…> が hda であることを確認する。

$ sudo virsh dumpxml centos7-minimal
[sudo] yuji のパスワード:
<domain type='kvm' id='14'>
  <name>centos7-minimal</name>
  <uuid>3974c0ad-55b9-4a6b-9528-174df293df48</uuid>
  <memory unit='KiB'>1048576</memory>
  <currentMemory unit='KiB'>1048576</currentMemory>
  <vcpu placement='static'>1</vcpu>
  <resource>
    <partition>/machine</partition>
  </resource>
  <os>
    <type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type>
    <kernel>/var/lib/libvirt/boot/virtinst-vmlinuz.nqaClp</kernel>
    <initrd>/var/lib/libvirt/boot/virtinst-initrd.img.PLprAw</initrd>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
    <apic/>
  </features>
  <cpu mode='custom' match='exact' check='full'>
    <model fallback='forbid'>Skylake-Client-IBRS</model>
    <feature policy='require' name='hypervisor'/>
    <feature policy='disable' name='arat'/>
  </cpu>
  <clock offset='utc'>
    <timer name='rtc' tickpolicy='catchup'/>
    <timer name='pit' tickpolicy='delay'/>
    <timer name='hpet' present='no'/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>destroy</on_reboot>
  <on_crash>destroy</on_crash>
  <pm>
    <suspend-to-mem enabled='no'/>
    <suspend-to-disk enabled='no'/>
  </pm>
  <devices>
    <emulator>/usr/libexec/qemu-kvm</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/tmp/centos7-minimal.qcow2'/>
      <backingStore/>
      <target dev='vda' bus='virtio'/>
      <alias name='virtio-disk0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/mnt/DISK1/CentOS-7-x86_64-Minimal-1804.iso'/>
      <backingStore/>
      <target dev='hda' bus='ide'/>
      <readonly/>
      <alias name='ide0-0-0'/>
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </disk>
    <controller type='usb' index='0' model='ich9-ehci1'>
      <alias name='usb'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x7'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci1'>
      <alias name='usb'/>
      <master startport='0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0' multifunction='on'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci2'>
      <alias name='usb'/>
      <master startport='2'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x1'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci3'>
      <alias name='usb'/>
      <master startport='4'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x2'/>
    </controller>
    <controller type='pci' index='0' model='pci-root'>
      <alias name='pci.0'/>
    </controller>
    <controller type='ide' index='0'>
      <alias name='ide'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
    </controller>
    <controller type='virtio-serial' index='0'>
      <alias name='virtio-serial0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
    </controller>
    <interface type='bridge'>
      <mac address='52:54:00:14:df:71'/>
      <source network='ovsbr0' bridge='ovsbr0'/>
      <virtualport type='openvswitch'>
        <parameters interfaceid='beee5530-1bbc-4677-a45c-a63617f5b6f0'/>
      </virtualport>
      <target dev='vnet10'/>
      <model type='virtio'/>
      <alias name='net0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
    <serial type='pty'>
      <source path='/dev/pts/0'/>
      <target type='isa-serial' port='0'>
        <model name='isa-serial'/>
      </target>
      <alias name='serial0'/>
    </serial>
    <console type='pty' tty='/dev/pts/0'>
      <source path='/dev/pts/0'/>
      <target type='serial' port='0'/>
      <alias name='serial0'/>
    </console>
    <channel type='unix'>
      <source mode='bind' path='/var/lib/libvirt/qemu/channel/target/domain-14-centos7-minimal/org.qemu.guest_agent.0'/>
      <target type='virtio' name='org.qemu.guest_agent.0' state='disconnected'/>
      <alias name='channel0'/>
      <address type='virtio-serial' controller='0' bus='0' port='1'/>
    </channel>
    <input type='tablet' bus='usb'>
      <alias name='input0'/>
      <address type='usb' bus='0' port='1'/>
    </input>
    <input type='mouse' bus='ps2'>
      <alias name='input1'/>
    </input>
    <input type='keyboard' bus='ps2'>
      <alias name='input2'/>
    </input>
    <graphics type='vnc' port='5907' autoport='yes' listen='0.0.0.0'>
      <listen type='address' address='0.0.0.0'/>
    </graphics>
    <video>
      <model type='cirrus' vram='16384' heads='1' primary='yes'/>
      <alias name='video0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </video>
    <memballoon model='virtio'>
      <alias name='balloon0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
    </memballoon>
  </devices>
  <seclabel type='dynamic' model='selinux' relabel='yes'>
    <label>system_u:system_r:svirt_t:s0:c847,c948</label>
    <imagelabel>system_u:object_r:svirt_image_t:s0:c847,c948</imagelabel>
  </seclabel>
  <seclabel type='dynamic' model='dac' relabel='yes'>
    <label>+107:+107</label>
    <imagelabel>+107:+107</imagelabel>
  </seclabel>
</domain>

$ 

virsh コマンドを使用して CD-ROM ディスクを取り出すためには、CD-ROM が前に接続された場所と同じ場所に、libvirt が空のディスクを接続する必要があるため、空のディスクをアタッチします。

$ sudo virsh attach-disk --type cdrom --mode readonly centos7-minimal "" hda
ディスクが正常に接続されました

$ 

仮想インスタンス centos7-minimal を再起動します。

$ sudo virsh reboot centos7-minimal
ドメイン centos7-minimal を再起動しています

$ 

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

ハイパーバイザーが 仮想インスタンス centos7-minimal を再起動やシャットダウンできるように、仮想インスタンス centos7-minimal に acpid サービスをインストールします。

[root@localhost ~]# yum install acpid
読み込んだプラグイン:fastestmirror
Determining fastest mirrors
 * base: ftp.iij.ad.jp
 * extras: ftp.iij.ad.jp
 * updates: ftp.iij.ad.jp
base                                                     | 3.6 kB     00:00     
extras                                                   | 3.4 kB     00:00     
updates                                                  | 3.4 kB     00:00     
(1/4): base/7/x86_64/group_gz                              | 166 kB   00:00     
(2/4): extras/7/x86_64/primary_db                          | 205 kB   00:00     
(3/4): base/7/x86_64/primary_db                            | 5.9 MB   00:01     
(4/4): updates/7/x86_64/primary_db                         | 6.0 MB   00:03     
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ acpid.x86_64 0:2.0.19-9.el7 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

================================================================================
 Package         アーキテクチャー バージョン               リポジトリー    容量
================================================================================
インストール中:
 acpid           x86_64           2.0.19-9.el7             base            69 k

トランザクションの要約
================================================================================
インストール  1 パッケージ

総ダウンロード容量: 69 k
インストール容量: 145 k
Is this ok [y/d/N]: y
Downloading packages:
警告: /var/cache/yum/x86_64/7/base/packages/acpid-2.0.19-9.el7.x86_64.rpm: ヘッダー V3 RSA/SHA256 Signature、鍵 ID f4a80eb5: NOKEY
acpid-2.0.19-9.el7.x86_64.rpm の公開鍵がインストールされていません
acpid-2.0.19-9.el7.x86_64.rpm                              |  69 kB   00:00     
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 から鍵を取得中です。
Importing GPG key 0xF4A80EB5:
 Userid     : "CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>"
 Fingerprint: 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5
 Package    : centos-release-7-5.1804.el7.centos.x86_64 (@anaconda)
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
上記の処理を行います。よろしいでしょうか? [y/N]y
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : acpid-2.0.19-9.el7.x86_64                       1/1 
  検証中                  : acpid-2.0.19-9.el7.x86_64                       1/1 

インストール:
  acpid.x86_64 0:2.0.19-9.el7                                                   

完了しました!
[root@localhost ~]# 

acpid サービスを自動起動するように設定します。

■ 自動起動の有効化
[root@localhost ~]# systemctl enable acpid
[root@localhost ~]#

■ 自動起動の状態確認 
[root@localhost ~]# systemctl is-enabled acpid
enabled
[root@localhost ~]# 

メタデータ取得の設定

クラウド初期化パッケージ( cloud-init )は、メタデータサーバから公開鍵を自動的に取り出し、その鍵をアカウントに格納します。 次のコマンドを実行して、仮想インスタンス centos7-minimal に cloud-init をインストールします。

[root@localhost ~]# yum install cloud-init
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * extras: ftp.iij.ad.jp
 * updates: ftp.iij.ad.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ cloud-init.x86_64 0:0.7.9-24.el7.centos.1 を インストール
--> 依存性の処理をしています: python-setuptools のパッケージ: cloud-init-0.7.9-24.el7.centos.1.x86_64
--> 依存性の処理をしています: python-requests のパッケージ: cloud-init-0.7.9-24.el7.centos.1.x86_64
--> 依存性の処理をしています: python-prettytable のパッケージ: cloud-init-0.7.9-24.el7.centos.1.x86_64
--> 依存性の処理をしています: python-jsonpatch のパッケージ: cloud-init-0.7.9-24.el7.centos.1.x86_64
--> 依存性の処理をしています: python-jinja2 のパッケージ: cloud-init-0.7.9-24.el7.centos.1.x86_64
--> 依存性の処理をしています: pyserial のパッケージ: cloud-init-0.7.9-24.el7.centos.1.x86_64
--> 依存性の処理をしています: policycoreutils-python のパッケージ: cloud-init-0.7.9-24.el7.centos.1.x86_64
--> 依存性の処理をしています: net-tools のパッケージ: cloud-init-0.7.9-24.el7.centos.1.x86_64
--> 依存性の処理をしています: PyYAML のパッケージ: cloud-init-0.7.9-24.el7.centos.1.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ PyYAML.x86_64 0:3.10-11.el7 を インストール
--> 依存性の処理をしています: libyaml-0.so.2()(64bit) のパッケージ: PyYAML-3.10-11.el7.x86_64
---> パッケージ net-tools.x86_64 0:2.0-0.22.20131004git.el7 を インストール
---> パッケージ policycoreutils-python.x86_64 0:2.5-22.el7 を インストール
--> 依存性の処理をしています: setools-libs >= 3.3.8-2 のパッケージ: policycoreutils-python-2.5-22.el7.x86_64
--> 依存性の処理をしています: libsemanage-python >= 2.5-9 のパッケージ: policycoreutils-python-2.5-22.el7.x86_64
--> 依存性の処理をしています: audit-libs-python >= 2.1.3-4 のパッケージ: policycoreutils-python-2.5-22.el7.x86_64
--> 依存性の処理をしています: python-IPy のパッケージ: policycoreutils-python-2.5-22.el7.x86_64
--> 依存性の処理をしています: libqpol.so.1(VERS_1.4)(64bit) のパッケージ: policycoreutils-python-2.5-22.el7.x86_64
--> 依存性の処理をしています: libqpol.so.1(VERS_1.2)(64bit) のパッケージ: policycoreutils-python-2.5-22.el7.x86_64
--> 依存性の処理をしています: libcgroup のパッケージ: policycoreutils-python-2.5-22.el7.x86_64
--> 依存性の処理をしています: libapol.so.4(VERS_4.0)(64bit) のパッケージ: policycoreutils-python-2.5-22.el7.x86_64
--> 依存性の処理をしています: checkpolicy のパッケージ: policycoreutils-python-2.5-22.el7.x86_64
--> 依存性の処理をしています: libqpol.so.1()(64bit) のパッケージ: policycoreutils-python-2.5-22.el7.x86_64
--> 依存性の処理をしています: libapol.so.4()(64bit) のパッケージ: policycoreutils-python-2.5-22.el7.x86_64
---> パッケージ pyserial.noarch 0:2.6-6.el7 を インストール
---> パッケージ python-jinja2.noarch 0:2.7.2-2.el7 を インストール
--> 依存性の処理をしています: python-babel >= 0.8 のパッケージ: python-jinja2-2.7.2-2.el7.noarch
--> 依存性の処理をしています: python-markupsafe のパッケージ: python-jinja2-2.7.2-2.el7.noarch
---> パッケージ python-jsonpatch.noarch 0:1.2-4.el7 を インストール
--> 依存性の処理をしています: python-jsonpointer のパッケージ: python-jsonpatch-1.2-4.el7.noarch
---> パッケージ python-prettytable.noarch 0:0.7.2-3.el7 を インストール
---> パッケージ python-requests.noarch 0:2.6.0-1.el7_1 を インストール
--> 依存性の処理をしています: python-urllib3 >= 1.10.2-1 のパッケージ: python-requests-2.6.0-1.el7_1.noarch
--> 依存性の処理をしています: python-chardet >= 2.2.1-1 のパッケージ: python-requests-2.6.0-1.el7_1.noarch
---> パッケージ python-setuptools.noarch 0:0.9.8-7.el7 を インストール
--> 依存性の処理をしています: python-backports-ssl_match_hostname のパッケージ: python-setuptools-0.9.8-7.el7.noarch
--> トランザクションの確認を実行しています。
---> パッケージ audit-libs-python.x86_64 0:2.8.1-3.el7_5.1 を インストール
--> 依存性の処理をしています: audit-libs(x86-64) = 2.8.1-3.el7_5.1 のパッケージ: audit-libs-python-2.8.1-3.el7_5.1.x86_64
---> パッケージ checkpolicy.x86_64 0:2.5-6.el7 を インストール
---> パッケージ libcgroup.x86_64 0:0.41-15.el7 を インストール
---> パッケージ libsemanage-python.x86_64 0:2.5-11.el7 を インストール
---> パッケージ libyaml.x86_64 0:0.1.4-11.el7_0 を インストール
---> パッケージ python-IPy.noarch 0:0.75-6.el7 を インストール
---> パッケージ python-babel.noarch 0:0.9.6-8.el7 を インストール
---> パッケージ python-backports-ssl_match_hostname.noarch 0:3.5.0.1-1.el7 を インストール
--> 依存性の処理をしています: python-ipaddress のパッケージ: python-backports-ssl_match_hostname-3.5.0.1-1.el7.noarch
--> 依存性の処理をしています: python-backports のパッケージ: python-backports-ssl_match_hostname-3.5.0.1-1.el7.noarch
---> パッケージ python-chardet.noarch 0:2.2.1-1.el7_1 を インストール
---> パッケージ python-jsonpointer.noarch 0:1.9-2.el7 を インストール
---> パッケージ python-markupsafe.x86_64 0:0.11-10.el7 を インストール
---> パッケージ python-urllib3.noarch 0:1.10.2-5.el7 を インストール
--> 依存性の処理をしています: python-six のパッケージ: python-urllib3-1.10.2-5.el7.noarch
---> パッケージ setools-libs.x86_64 0:3.3.8-2.el7 を インストール
--> トランザクションの確認を実行しています。
---> パッケージ audit-libs.x86_64 0:2.8.1-3.el7 を 更新
--> 依存性の処理をしています: audit-libs(x86-64) = 2.8.1-3.el7 のパッケージ: audit-2.8.1-3.el7.x86_64
---> パッケージ audit-libs.x86_64 0:2.8.1-3.el7_5.1 を アップデート
---> パッケージ python-backports.x86_64 0:1.0-8.el7 を インストール
---> パッケージ python-ipaddress.noarch 0:1.0.16-2.el7 を インストール
---> パッケージ python-six.noarch 0:1.9.0-2.el7 を インストール
--> トランザクションの確認を実行しています。
---> パッケージ audit.x86_64 0:2.8.1-3.el7 を 更新
---> パッケージ audit.x86_64 0:2.8.1-3.el7_5.1 を アップデート
--> 依存性解決を終了しました。

依存性を解決しました

================================================================================
 Package                          アーキテクチャー
                                         バージョン               リポジトリー
                                                                           容量
================================================================================
インストール中:
 cloud-init                       x86_64 0.7.9-24.el7.centos.1    updates 631 k
依存性関連でのインストールをします:
 PyYAML                           x86_64 3.10-11.el7              base    153 k
 audit-libs-python                x86_64 2.8.1-3.el7_5.1          updates  75 k
 checkpolicy                      x86_64 2.5-6.el7                base    294 k
 libcgroup                        x86_64 0.41-15.el7              base     65 k
 libsemanage-python               x86_64 2.5-11.el7               base    112 k
 libyaml                          x86_64 0.1.4-11.el7_0           base     55 k
 net-tools                        x86_64 2.0-0.22.20131004git.el7 base    305 k
 policycoreutils-python           x86_64 2.5-22.el7               base    454 k
 pyserial                         noarch 2.6-6.el7                base    124 k
 python-IPy                       noarch 0.75-6.el7               base     32 k
 python-babel                     noarch 0.9.6-8.el7              base    1.4 M
 python-backports                 x86_64 1.0-8.el7                base    5.8 k
 python-backports-ssl_match_hostname
                                  noarch 3.5.0.1-1.el7            base     13 k
 python-chardet                   noarch 2.2.1-1.el7_1            base    227 k
 python-ipaddress                 noarch 1.0.16-2.el7             base     34 k
 python-jinja2                    noarch 2.7.2-2.el7              base    515 k
 python-jsonpatch                 noarch 1.2-4.el7                base     15 k
 python-jsonpointer               noarch 1.9-2.el7                base     13 k
 python-markupsafe                x86_64 0.11-10.el7              base     25 k
 python-prettytable               noarch 0.7.2-3.el7              base     37 k
 python-requests                  noarch 2.6.0-1.el7_1            base     94 k
 python-setuptools                noarch 0.9.8-7.el7              base    397 k
 python-six                       noarch 1.9.0-2.el7              base     29 k
 python-urllib3                   noarch 1.10.2-5.el7             base    102 k
 setools-libs                     x86_64 3.3.8-2.el7              base    619 k
依存性関連での更新をします:
 audit                            x86_64 2.8.1-3.el7_5.1          updates 247 k
 audit-libs                       x86_64 2.8.1-3.el7_5.1          updates  99 k

トランザクションの要約
================================================================================
インストール  1 パッケージ (+25 個の依存関係のパッケージ)
更新                       (  2 個の依存関係のパッケージ)

総ダウンロード容量: 6.0 M
Is this ok [y/d/N]: y
Downloading packages:
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
(1/28): audit-2.8.1-3.el7_5.1.x86_64.rpm                   | 247 kB   00:00     
(2/28): audit-libs-2.8.1-3.el7_5.1.x86_64.rpm              |  99 kB   00:00     
(3/28): PyYAML-3.10-11.el7.x86_64.rpm                      | 153 kB   00:00     
(4/28): libcgroup-0.41-15.el7.x86_64.rpm                   |  65 kB   00:00     
(5/28): libsemanage-python-2.5-11.el7.x86_64.rpm           | 112 kB   00:00     
(6/28): cloud-init-0.7.9-24.el7.centos.1.x86_64.rpm        | 631 kB   00:00     
(7/28): checkpolicy-2.5-6.el7.x86_64.rpm                   | 294 kB   00:00     
(8/28): net-tools-2.0-0.22.20131004git.el7.x86_64.rpm      | 305 kB   00:00     
(9/28): libyaml-0.1.4-11.el7_0.x86_64.rpm                  |  55 kB   00:00     
(10/28): pyserial-2.6-6.el7.noarch.rpm                     | 124 kB   00:00     
(11/28): python-IPy-0.75-6.el7.noarch.rpm                  |  32 kB   00:00     
(12/28): audit-libs-python-2.8.1-3.el7_5.1.x86_64.rpm      |  75 kB   00:01     
(13/28): policycoreutils-python-2.5-22.el7.x86_64.rpm      | 454 kB   00:00     
(14/28): python-backports-1.0-8.el7.x86_64.rpm             | 5.8 kB   00:00     
(15/28): python-chardet-2.2.1-1.el7_1.noarch.rpm           | 227 kB   00:00     
(16/28): python-ipaddress-1.0.16-2.el7.noarch.rpm          |  34 kB   00:00     
(17/28): python-babel-0.9.6-8.el7.noarch.rpm               | 1.4 MB   00:01     
(18/28): python-jsonpatch-1.2-4.el7.noarch.rpm             |  15 kB   00:00     
(19/28): python-jsonpointer-1.9-2.el7.noarch.rpm           |  13 kB   00:00     
(20/28): python-markupsafe-0.11-10.el7.x86_64.rpm          |  25 kB   00:00     
(21/28): python-prettytable-0.7.2-3.el7.noarch.rpm         |  37 kB   00:00     
(22/28): python-jinja2-2.7.2-2.el7.noarch.rpm              | 515 kB   00:00     
(23/28): python-requests-2.6.0-1.el7_1.noarch.rpm          |  94 kB   00:00     
(24/28): python-six-1.9.0-2.el7.noarch.rpm                 |  29 kB   00:00     
(25/28): python-setuptools-0.9.8-7.el7.noarch.rpm          | 397 kB   00:00     
(26/28): setools-libs-3.3.8-2.el7.x86_64.rpm               | 619 kB   00:00     
(27/28): python-urllib3-1.10.2-5.el7.noarch.rpm            | 102 kB   00:00     
(28/28): python-backports-ssl_match_hostname-3.5.0.1-1.el7 |  13 kB   00:02     
--------------------------------------------------------------------------------
合計                                               1.4 MB/s | 6.0 MB  00:04     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : python-ipaddress-1.0.16-2.el7.noarch           1/30 
  更新します              : audit-libs-2.8.1-3.el7_5.1.x86_64              2/30 
  インストール中          : audit-libs-python-2.8.1-3.el7_5.1.x86_64       3/30 
  インストール中          : checkpolicy-2.5-6.el7.x86_64                   4/30 
  インストール中          : python-chardet-2.2.1-1.el7_1.noarch            5/30 
  インストール中          : python-prettytable-0.7.2-3.el7.noarch          6/30 
  インストール中          : libyaml-0.1.4-11.el7_0.x86_64                  7/30 
  インストール中          : PyYAML-3.10-11.el7.x86_64                      8/30 
  インストール中          : python-jsonpointer-1.9-2.el7.noarch            9/30 
  インストール中          : python-jsonpatch-1.2-4.el7.noarch             10/30 
  インストール中          : python-backports-1.0-8.el7.x86_64             11/30 
  インストール中          : python-backports-ssl_match_hostname-3.5.0.1   12/30 
  インストール中          : python-setuptools-0.9.8-7.el7.noarch          13/30 
  インストール中          : python-babel-0.9.6-8.el7.noarch               14/30 
  インストール中          : libcgroup-0.41-15.el7.x86_64                  15/30 
  インストール中          : python-markupsafe-0.11-10.el7.x86_64          16/30 
  インストール中          : python-jinja2-2.7.2-2.el7.noarch              17/30 
  インストール中          : python-six-1.9.0-2.el7.noarch                 18/30 
  インストール中          : python-urllib3-1.10.2-5.el7.noarch            19/30 
  インストール中          : python-requests-2.6.0-1.el7_1.noarch          20/30 
  インストール中          : python-IPy-0.75-6.el7.noarch                  21/30 
  インストール中          : pyserial-2.6-6.el7.noarch                     22/30 
  インストール中          : net-tools-2.0-0.22.20131004git.el7.x86_64     23/30 
  インストール中          : setools-libs-3.3.8-2.el7.x86_64               24/30 
  インストール中          : libsemanage-python-2.5-11.el7.x86_64          25/30 
  インストール中          : policycoreutils-python-2.5-22.el7.x86_64      26/30 
  インストール中          : cloud-init-0.7.9-24.el7.centos.1.x86_64       27/30 
  更新します              : audit-2.8.1-3.el7_5.1.x86_64                  28/30 
  整理中                  : audit-2.8.1-3.el7.x86_64                      29/30 
  整理中                  : audit-libs-2.8.1-3.el7.x86_64                 30/30 
  検証中                  : libsemanage-python-2.5-11.el7.x86_64           1/30 
  検証中                  : python-backports-ssl_match_hostname-3.5.0.1    2/30 
  検証中                  : setools-libs-3.3.8-2.el7.x86_64                3/30 
  検証中                  : audit-libs-python-2.8.1-3.el7_5.1.x86_64       4/30 
  検証中                  : net-tools-2.0-0.22.20131004git.el7.x86_64      5/30 
  検証中                  : python-jinja2-2.7.2-2.el7.noarch               6/30 
  検証中                  : audit-2.8.1-3.el7_5.1.x86_64                   7/30 
  検証中                  : python-setuptools-0.9.8-7.el7.noarch           8/30 
  検証中                  : pyserial-2.6-6.el7.noarch                      9/30 
  検証中                  : policycoreutils-python-2.5-22.el7.x86_64      10/30 
  検証中                  : python-IPy-0.75-6.el7.noarch                  11/30 
  検証中                  : python-six-1.9.0-2.el7.noarch                 12/30 
  検証中                  : python-urllib3-1.10.2-5.el7.noarch            13/30 
  検証中                  : python-markupsafe-0.11-10.el7.x86_64          14/30 
  検証中                  : libcgroup-0.41-15.el7.x86_64                  15/30 
  検証中                  : python-babel-0.9.6-8.el7.noarch               16/30 
  検証中                  : python-backports-1.0-8.el7.x86_64             17/30 
  検証中                  : cloud-init-0.7.9-24.el7.centos.1.x86_64       18/30 
  検証中                  : python-jsonpointer-1.9-2.el7.noarch           19/30 
  検証中                  : python-jsonpatch-1.2-4.el7.noarch             20/30 
  検証中                  : libyaml-0.1.4-11.el7_0.x86_64                 21/30 
  検証中                  : python-prettytable-0.7.2-3.el7.noarch         22/30 
  検証中                  : python-requests-2.6.0-1.el7_1.noarch          23/30 
  検証中                  : audit-libs-2.8.1-3.el7_5.1.x86_64             24/30 
  検証中                  : python-ipaddress-1.0.16-2.el7.noarch          25/30 
  検証中                  : python-chardet-2.2.1-1.el7_1.noarch           26/30 
  検証中                  : PyYAML-3.10-11.el7.x86_64                     27/30 
  検証中                  : checkpolicy-2.5-6.el7.x86_64                  28/30 
  検証中                  : audit-2.8.1-3.el7.x86_64                      29/30 
  検証中                  : audit-libs-2.8.1-3.el7.x86_64                 30/30 

インストール:
  cloud-init.x86_64 0:0.7.9-24.el7.centos.1                                     

依存性関連をインストールしました:
  PyYAML.x86_64 0:3.10-11.el7                                                   
  audit-libs-python.x86_64 0:2.8.1-3.el7_5.1                                    
  checkpolicy.x86_64 0:2.5-6.el7                                                
  libcgroup.x86_64 0:0.41-15.el7                                                
  libsemanage-python.x86_64 0:2.5-11.el7                                        
  libyaml.x86_64 0:0.1.4-11.el7_0                                               
  net-tools.x86_64 0:2.0-0.22.20131004git.el7                                   
  policycoreutils-python.x86_64 0:2.5-22.el7                                    
  pyserial.noarch 0:2.6-6.el7                                                   
  python-IPy.noarch 0:0.75-6.el7                                                
  python-babel.noarch 0:0.9.6-8.el7                                             
  python-backports.x86_64 0:1.0-8.el7                                           
  python-backports-ssl_match_hostname.noarch 0:3.5.0.1-1.el7                    
  python-chardet.noarch 0:2.2.1-1.el7_1                                         
  python-ipaddress.noarch 0:1.0.16-2.el7                                        
  python-jinja2.noarch 0:2.7.2-2.el7                                            
  python-jsonpatch.noarch 0:1.2-4.el7                                           
  python-jsonpointer.noarch 0:1.9-2.el7                                         
  python-markupsafe.x86_64 0:0.11-10.el7                                        
  python-prettytable.noarch 0:0.7.2-3.el7                                       
  python-requests.noarch 0:2.6.0-1.el7_1                                        
  python-setuptools.noarch 0:0.9.8-7.el7                                        
  python-six.noarch 0:1.9.0-2.el7                                               
  python-urllib3.noarch 0:1.10.2-5.el7                                          
  setools-libs.x86_64 0:3.3.8-2.el7                                             

依存性を更新しました:
  audit.x86_64 0:2.8.1-3.el7_5.1       audit-libs.x86_64 0:2.8.1-3.el7_5.1      

完了しました!
[root@localhost ~]# 

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

ルートパーティションが適切にサイズ変更されるようにするには、cloud-utils-growpartパッケージをインストールする必要があるため、仮想インスタンス centos7-minimal にパッケージをインストールします。

[root@localhost ~]# yum install cloud-utils-growpart
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * extras: ftp.iij.ad.jp
 * updates: ftp.iij.ad.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ cloud-utils-growpart.noarch 0:0.29-2.el7 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

================================================================================
 Package                     アーキテクチャー
                                           バージョン         リポジトリー
                                                                           容量
================================================================================
インストール中:
 cloud-utils-growpart        noarch        0.29-2.el7         base         26 k

トランザクションの要約
================================================================================
インストール  1 パッケージ

総ダウンロード容量: 26 k
インストール容量: 61 k
Is this ok [y/d/N]: y
Downloading packages:
cloud-utils-growpart-0.29-2.el7.noarch.rpm                 |  26 kB   00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : cloud-utils-growpart-0.29-2.el7.noarch          1/1 
  検証中                  : cloud-utils-growpart-0.29-2.el7.noarch          1/1 

インストール:
  cloud-utils-growpart.noarch 0:0.29-2.el7                                      

完了しました!
[root@localhost ~]# 

zeroconf ルートの無効化

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

[root@localhost ~]# echo "NOZEROCONF=yes" >> /etc/sysconfig/network
[root@localhost ~]# 

コンソールの設定

/etc/default/grub ファイルを編集し、GRUB_CMDLINE_LINUX オプションを設定する。 rhgd quiet を削除し、console=tty0 console=ttyS0,115200n8 を追加します。

[root@localhost ~]# vi /etc/default/grub 
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap console=tty0 console=ttyS0,115200n8"
GRUB_DISABLE_RECOVERY="true"

以下のコマンドを実行し、設定を反映します。

[root@localhost ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-862.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-862.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-3974c0ad55b94a6b9528174df293df48
Found initrd image: /boot/initramfs-0-rescue-3974c0ad55b94a6b9528174df293df48.img
done
[root@localhost ~]# 

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

仮想インスタンス centos7-minimal をシャットダウンします。

[root@localhost ~]# poweroff
Connection to 192.168.24.90 closed by remote host.
Connection to 192.168.24.90 closed.
$ 

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

オペレーティングシステムは、インストール中に仮想 Ethernet カードの MAC アドレスを /etc/sysconfig/network-scripts/ifcfg-eth0 などの場所に記録します。作成したイメージを使って仮想インスタンスを起動するたびに、仮想 Ethernet カードの MAC アドレスは別の値となります。そのため、この情報は設定ファイルから削除する必要があります。

仮想インスタンスのイメージをクリーンアップします。

$ sudo virt-sysprep -d centos7-minimal
[   0.0] Examining the guest ...
[   1.6] Performing "abrt-data" ...
[   1.6] Performing "backup-files" ...
[   2.0] Performing "bash-history" ...
[   2.0] Performing "blkid-tab" ...
[   2.1] Performing "crash-data" ...
[   2.1] Performing "cron-spool" ...
[   2.1] Performing "dhcp-client-state" ...
[   2.1] Performing "dhcp-server-state" ...
[   2.1] Performing "dovecot-data" ...
[   2.1] Performing "logfiles" ...
[   2.1] Performing "machine-id" ...
[   2.1] Performing "mail-spool" ...
[   2.1] Performing "net-hostname" ...
[   2.1] Performing "net-hwaddr" ...
[   2.1] Performing "pacct-log" ...
[   2.1] Performing "package-manager-cache" ...
[   2.1] Performing "pam-data" ...
[   2.1] Performing "passwd-backups" ...
[   2.1] Performing "puppet-data-log" ...
[   2.1] Performing "rh-subscription-manager" ...
[   2.1] Performing "rhn-systemid" ...
[   2.1] Performing "rpm-db" ...
[   2.1] Performing "samba-db-log" ...
[   2.1] Performing "script" ...
[   2.1] Performing "smolt-uuid" ...
[   2.1] Performing "ssh-hostkeys" ...
[   2.1] Performing "ssh-userdir" ...
[   2.1] Performing "sssd-db-log" ...
[   2.1] Performing "tmp-files" ...
[   2.1] Performing "udev-persistent-net" ...
[   2.1] Performing "utmp" ...
[   2.1] Performing "yum-uuid" ...
[   2.1] Performing "customize" ...
[   2.1] Setting a random seed
[   2.1] Setting the machine ID in /etc/machine-id
[   2.2] Performing "lvm-uuids" ...
$ 

libvirt ドメインの定義削除

仮想インスタンス centos7-minimal を削除します。

[yuji@localhost ~]$ sudo virsh undefine centos7-minimal
ドメイン centos7-minimal の定義が削除されました

[yuji@localhost ~]$ 

イメージの完成

このセクションで作成した /tmp/centos7-minimal.qcow2 をOpenstack にイメージ登録すれば、使用できるようになります。