2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

RDO/TripleOでOpenStack rockyをinstallする(VM編)

Last updated at Posted at 2019-08-30

はじめに

本記事ではRDO Projectで主にパッケージング・開発されているTripleOを使ってOpenStackをインストールする手順について紹介します。

本記事では以下のことを行ないます。

  • VMを3つ作成(Undercloud用 x 1, Controller node用 x 1, Compute node用 x 1)
  • Undercloudを用意されたqcowイメージで起動
  • UndercloudからController/Computeのインストール

TripleOによるOpenStackインストール概要

TripleOではUndercloudとOvercloudの2つのOpenStackをインストールすることになります。

  • Overcloud
    • 実際に使用するOpenStack環境
  • Undercloud
    • Overcloudをインストールするために作成・使用されるOpenStackです。ironic/heatを使用してOvercloudを作成することになります

構成図

今回の構成は以下のようになります。

  • 物理にLinuxがインストールされて、libvirtがインストール
  • Undercloud VMを作成
    • networkは管理用のインターフェイス(default)とOpenStack用のネットワーク(data1)の2つを作成
  • Overcloud-ctrl (Controller node)とOvercloud-Comp01のVMを作成
    • これについてはVM作成のみで起動・OSインストールはしない
    • ネットワークはdata1のみに接続
    • このVMはUndercloudからのDHCP/PXEでブート予定
  • OpenStack用のネットワーク(data1)はIP Masqueradeで外部に接続

openstack-install-image.png

前準備

物理マシンにLinuxをインストールして、libvirt(virsh)が使えるようにしているか確認してください。

Network(data1)の作成

OpenStack用のネットワークを作成します。Undercloud VM側でDHCPサーバを動作させるのでDHCPは無効にしておいて下さい。また作成したLinux Bridgeに対してiptablesの設定を追加しておきます。

$ cat > provision.xml << EOF
<network>
  <name>tripleo-provision</name>
  <uuid>b7eadbab-7e95-487b-be00-8fa7fc679436</uuid>
  <bridge name='tripleo1' stp='off' delay='0'/>
  <mac address='52:54:00:ae:42:07'/>
  <ip address='10.1.1.254' netmask='255.255.255.0'>
  </ip>
</network>
EOF
$ virsh net-create provision.xml
$ virsh net-start tripleo-provision
$ virsh net-autostart tripleo-provision
$ iptables -I FORWARD 1 -i tripleo-provision -j ACCEPT
$ iptables -I FORWARD 1 -o tripleo-provision -j ACCEPT

VirtualBMCのインストール

VMの起動等で使われるVirtualBMCをインストールします。

$ yum install centos-release-openstack-rocky
$ yum install python2-virtualbmc

Overcloud-ctrl, Overcloud-comp1のVMを作成

ここではVMの作成だけ行ないます。起動はTripleOから行なうのでこの時点では電源はOffの状態です。PXEで起動する際にMACアドレスが必要なので、設定してメモをしておくといいでしょう。

$ qemu-img create 41G overcloud-ctrl.qcow2
$ /usr/bin/virt-install \
   --name overcloud-ctrl \
   --ram 6144 --vcpus 2 \
   --os-variant centos7.0 \
   overcloud-ctrl.qcow2 \
   --noautoconsole \
   --network network:data1 --mac=52:54:00:c0:87:36 \
   --cpu host \
   --dry-run --print-xml > overcloud-ctrl.xml
$ virsh define --file overcloud-ctrl.xml

$ qemu-img create 41G overcloud-comp1.qcow2
$ /usr/bin/virt-install \
   --name overcloud-comp1 \
   --ram 6144 --vcpus 2 \
   --os-variant centos7.0 \
   overcloud-comp1.qcow2 \
   --noautoconsole \
   --network network:data1 --mac=52:54:00:c0:87:37 \
   --cpu host \
   --dry-run --print-xml > overcloud-comp1.xml
$ virsh define --file overcloud-comp1.xml

Undercloud用のVMイメージの作成

今回はRDOが用意しているundercloudのVMイメージを使用することでCentOSのインストール等を省略します。RDOのイメージがあるサイト(https://images.rdoproject.org/rocky/rdo_trunk/current-tripleo-rdo/)から以下のファイルをダウンロードします。

  • undercloud.qcow2
  • ironic-python-agent.tar

その後以下のコマンドで必要なファイル(overcloud-full.initrd,overcloud-full.vmlinuz)をqcow2から取得します。

$ yum install libguestfs-tools
$ virt-copy-out -a undercloud.qcow2 /home/stack/overcloud-full.initrd /home/stack/overcloud-full.vmlinuz .

その後に起動のために必要な設定(root password, ネットワーク設定)をqcow2に入れ込みます。ここは自分の環境に合わせてファイルを修正して下さい。

$ cat ifcfg-eth1.undercloud 
DEVICE=eth1
ONBOOT=yes
IPADDR=192.168.122.2
NETMASK=255.255.255.0
GATEWAY=192.168.122.1
NM_CONTROLLED=no
DNS1=192.168.122.1
$ virt-customize -a undercloud.qcow2 \
  		 --run-command 'if [ -f /etc/sysconfig/network-scripts/ifcfg-eth0 ] ; then sed -i s/ONBOOT=.*/ONBOOT=\"no\"/g /etc/sysconfig/network-scripts/ifcfg-eth0; fi' \
  		 --upload ifcfg-eth1.undercloud:/etc/sysconfig/network-scripts/ifcfg-eth1 \
		 --hostname undercloud \
		 --root-password password:<PASSWORD> \
		 --selinux-relabel

Undercloud VMの起動

それが終わったらUndercloudのVMを起動させます。

$ virt-install --ram 49152 --vcpus 16 --os-variant rhel7 \
    --cpu host --cpuset auto \
    --disk path=./images/undercloud.qcow2,device=disk,bus=virtio,format=raw \
    --boot kernel=./overcloud-full.vmlinuz,initrd=./overcloud-full.initrd,kernel_args="root=/dev/vda" --import  \
    --network network:tripleo1-provision --network network:default \
    --name undercloud

VirtualBMCの設定

起動したVMをUndercloudから操作できるようにVirtualBMCの設定を行ないます。

# vbmc add controller-1 --port 6230  --username admin --password password
# vbmc add compute-1 --port 6231  --username admin --password password
# firewall-cmd --zone=public --add-port=6230/udp # --permanent
# firewall-cmd --zone=public --add-port=6231/udp # --permanent
# firewall-cmd --reload
# vbmc start controller-1
# vbmc start compute-1

Undercloudの設定

ここからUndercloudにログインして作業を行ないます。

$ ssh root@<undercloudのip>

作業用アカウントstackがあらかじめ作成されているのでそのアカウントに移動します。その際にパスワードも設定します。

$ passwd stack
 <パスワードを設定>
$ sudo -iu stack
$ ssh-keygen -t rsa -f ~/.ssh/id_rsa
$ ssh-copy-id <undercloudのip>

/usr/share/python-tripleoclient/undercloud.conf.sampleを参考にundercloud.confを作成しundercloudの初期化を行ないます。

$ openstack tripleo container image prepare default \
  --local-push-destination \
  --output-env-file containers-prepare-parameter.yaml
$ vi ~/undercloud.conf
  </usr/share/python-tripleoclient/undercloud.conf.sample を参考にundercloud.confを作成する>
$ openstack undercloud install

Overcloudのインストール準備

Overcloud用イメージの設定

ダウンロードしたイメージをUndercloudに設定します。

$ . stackrc
$ openstack overcloud image upload --image-path .

Controller,Computeノードの登録・設定

”VirtualBMCの設定"で指定したユーザー名・パスワード・ポート、VM起動時に設定したMACアドレスを使ってinstackenv.jsonを作成し、openstack overcloud node import instackenv.jsonコマンドで登録します。その後にそれらのVMの環境をundercloudから使えるようにするためにopenstack overcloud node introspect --all-manageable --provideコマンドを実行します。

$ cat > instackenv.json <<EOF
{
  "nodes": [
    {
      "name": "controller-1",
      "pm_type": "ipmi",
      "mac": [
             "52:54:00:c0:87:36"
      ],
      "pm_user": "admin",
      "pm_password": "password",
      "pm_port": "6230",
      "pm_addr": "<HypervisorのIP>"
    },
    {
      "name": "compute-1",
      "pm_type": "ipmi",
      "mac": [
             "52:54:00:a5:16:62"
      ],
      "pm_user": "admin",
      "pm_password": "password",
      "pm_port": "6231",
      "pm_addr": "<HypervisorのIP>"
    }
  ]
}
$ openstack overcloud node import instackenv.json
$ openstack overcloud node introspect --all-manageable --provide

次にVMとインストールするロールを関連付けします。

$ openstack baremetal node set --property capabilities='profile:control,boot_option:local' $(openstack baremetal node list -f json | jq '.[]| select(.Name=="controller-1") |.UUID' -r)
$ openstack baremetal node set --property capabilities='profile:compute,boot_option:local' $(openstack baremetal node list -f json | jq '.[]| select(.Name=="compute-1") |.UUID' -r)

DNSの設定を行ないます。

$ openstack subnet set $(openstack subnet list -f json | jq '.[0].ID' -r) \
        --dns-nameserver 10.10.160.1

UndercloudのSSL証明書をovercloudに設定するためのファイルと、タイムゾーン等の各種の設定ファイルを作成します。

$ cat > inject-trust-anchor-hiera.yaml <<EOF
parameter_defaults:
  # Map containing the CA certs and information needed for deploying them.
  # Type: json
  CAMap:
    undercloud-ca:
      content: |
        -----BEGIN CERTIFICATE-----
        MIIDjTCCAnWgAwIBAgIQOzHkDsEDSimf4HjKQi9HJTANBgkqhkiG9w0BAQsFADBQ
        ... 省略(/etc/pki/ca-trust/source/anchors/cm-local-ca.pemの中身をインデントして記入)
        8vUQFLbdFCSBMJjuh02VVsmLbwII5TtkJ4D6s2wO4vyZgzakGoivPM/mQenuIdA5
        lg==
        -----END CERTIFICATE-----
EOF
$ cat > node_info.yaml <<EOF
parameter_defaults:
  OvercloudControllerFlavor: control
  OvercloudComputeFlavor: compute
  ControllerCount: 1
  ComputeCount: 1
  TimeZone: 'Japan'
EOF

openstack overcloud deployでController,Computeノードのデプロイを行ないます。

$ openstack overcloud deploy --templates /usr/share/openstack-tripleo-heat-templates \
-e /home/stack/containers-prepare-parameter.yaml \
-e /home/stack/inject-trust-anchor-hiera.yaml \
-e /home/stack/node-info.yaml \
--ntp-server pool.ntp.org --libvirt-type kvm \
--log-file overcloud_deployment_0.log
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?