RDOインストールメモ(RHEL8)

参考

https://www.rdoproject.org/install/packstack/

基本的に公式の手順にならって進める。

接続イメージ

事前準備

/etc/environment に以下追加。

LANG=en_US.utf-8
LC_ALL=en_US.utf-8

network周りの準備

network-scripts インストール,Network Manager 無効化,Firewalld無効化,SELinux無効化。

# dnf install network-scripts
# systemctl disable firewalld
# systemctl stop firewalld
# systemctl disable NetworkManager
# systemctl stop NetworkManager
# systemctl enable network
# systemctl start network

teaming設定

NetworkManagerを無効化したため,/etc/sysconfig/network-scripts 配下に以下ファイル作成&編集。

ifcfg-team0

DEVICE=team0
DEVICETYPE=Team
ONBOOT=yes
BOOTPROTO=none
TEAM_CONFIG='{"runner": {"name": "lacp", "active": true, "fast_rate": true, "tx_hash": ["eth", "ipv4"]}, "link_watch": {"name": "ethtool"}}'

ifcfg-enp1s0f0

NAME=enp1s0f0
DEVICE=enp1s0f0
ONBOOT=yes
TEAM_MASTER=team0
TEAM_PORT_CONFIG='{"prio": 0}'

ifcfg-enp1s0f1

NAME=enp1s0f1
DEVICE=enp1s0f1
ONBOOT=yes
TEAM_MASTER=team0
TEAM_PORT_CONFIG='{"prio":0}'

ifup team0で リンクアップさせ,ステータスを確認。

# ifup tema0
# teamdctl team0 state
setup:
  runner: lacp
ports:
  enp1s0f0
    link watches:
      link summary: up
      instance[link_watch_0]:
        name: ethtool
        link: up
        down count: 2
    runner:
      aggregator ID: 5, Selected
      selected: yes
      state: current
  enp1s0f1
    link watches:
      link summary: up
      instance[link_watch_0]:
        name: ethtool
        link: up
        down count: 2
    runner:
      aggregator ID: 5, Selected
      selected: yes
      state: current
runner:
  active: yes
  fast rate: yes

VLAN設定

team0ではVLAN trunk(802.1Q)で複数の外部ネットワークを指定できるようにしたいので,VLAN設定を行う。

# modprobe 8021q
# lsmod | grep 8021q
8021q                  40960  0
garp                   16384  1 8021q
mrp                    20480  1 8021q

外部ネットワーク用にteam0を割り当てるため,ifcfg-team0にOVS用の設定。

DEVICE=team0
DEVICETYPE=ovs
TYPE=OVSPort
OVS_BRIDGE=br_ex
ONBOOT=yes
BOOTPROTO=none
TEAM_CONFIG='{"runner": {"name": "lacp", "active": true, "fast_rate": true, "tx_hash": ["eth", "ipv4"]}, "link_watch": {"name": "ethtool"}}'

インストール

RDOリポジトリインストール & サブスクリプションでcodeready-builderを有効化。

# dnf install -y https://www.rdoproject.org/repos/rdo-release.el8.rpm
# subscription-manager repos --enable codeready-builder-for-rhel-8-x86_64-rpms

パッケージの更新。

# dnf update

Packstack installerのインストール。

# dnf install openstack-packstack

インストール。

#  packstack --allinone --provision-demo=n --os-neutron-ovn-bridge-mappings=extnet:br-ex --os-neutron-ovn-bridge-interfaces=br-ex:team0

VLANの設定が入っていなかったのでml2_config.iniを編集。

[ml2]
type_drivers=geneve,flat,vlan   #vlan追加
tenant_network_types=geneve
mechanism_drivers=ovn
path_mtu=0
extension_drivers=port_security,qos

[securitygroup]
enable_security_group=True

[ml2_type_geneve]
max_header_size=38
vni_ranges=10:100

[ml2_type_flat]
flat_networks=*

# ↓追記
[ml2_type_vlan]
# VLAN IDを指定しなければ任意のVLANを通せる
network_vlan_ranges=extnet

<略>

ip a で見るといけているっぽい。

10: team0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master ovs-system state UP group default qlen 1000

openstack環境構築

ネットワークの作成

外部ネットワーク作成

まずは外部との接点となる外部ネットワークの作成。今回はスイッチ上でVLAN100で設定している192.168.1.0/24を指定する。(相変わらずOpenstackのネットワークの作成→サブネットの作成という流れに違和感を覚える。あまりネットワークにサブネットをぶら下げるメリットがあるようには思えないのだけど,この設計思想は一体どこからきたんだろうか・・・。)

openstack用に割り当てたレンジ(192.168.1.120~192.168.1.129)をDHCPのレンジで設定する。

$ openstack network create --provider-network-type vlan --external --provider-physical-network extnet --provider-segment 100 --share VLAN100
$ openstack subnet create --network VLAN100 --subnet-range 192.168.1.0/24 --dhcp --gateway 192.168.1.1 --allocation-pool start=192.168.1.120,end=192.168.1.129 --dns-nameserver 1.1.1.1 subnet_V100

内部ネットワーク作成

続いて内部ネットワークの作成。172.16.1.0/24,GWは末尾1,DHCPプールは50~100とした。

$ openstack network create internal01
$ openstack subnet create --network internal01 --gateway 172.16.1.1 --subnet-range 172.16.1.0/24 --dhcp --dns-nameserver 1.1.1.1 --allocation-pool start=172.16.1.50,end=172.16.1.100  subnet01

ルータ作成

最後にルータの作成,外部ネットワークの接続,内部ネットワークの接続。

$ openstack router create ext-router
$ openstack router set --external-gateway VLAN100 --enable-snat --fixed-ip ip-address=192.168.1.4 ext-router
$ openstack router add subnet ext-router subnet01

シンプルな構成のできあがり。

外部と内部をルータでつなげただけの構成

イメージ作成

テスト用にcirrosのイメージを作成。ここからwgetで持ってきて,7zを解答。vmdkファイルを結合してqcow2へ変換する。

$ qemu-img convert -O qcow2 ./Kali-Linux-2021.2-vmware-amd64.vmdk kali-linux-2021.2.qcow2
$ openstack image create "cirros" --file ./cirros-0.5.2-x86_64-disk.img --disk-format qcow2 --container-format bare --public

インスタンスの起動はダッシュボードからポチポチやって(ここは省略),無事に起動確認。(そういえば,デフォルトパスワードがUS配列の影響をうけないものに変わって嬉しいw)

無事にpingも通った。