RDO/TripleOでOpenStack rockyをinstallする(VM編)
はじめに
本記事では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で外部に接続
前準備
物理マシンに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
Author And Source
この問題について(RDO/TripleOでOpenStack rockyをinstallする(VM編)), 我々は、より多くの情報をここで見つけました https://qiita.com/s1061123/items/4f2bebd4d612ac6eeac1著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .