OpenStack環境のCinderでONTAP利用①【Packstack利用のOpenStack QueensのAll in One Installメモ】

## はじめに
この記事では、最近検証環境を設定する必要があった経験をメモとして共有します。具体的には、**OpenStackのBlock StorageでONTAPを利用する方法**に焦点を当てています。

まずこの記事では、**Hyper-V上の仮想マシンにPackStackを使用してOpenStackをAll in One構成でインストールする部分について記載**します。

<img width="600" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/65ccff0b-f7fe-9dbc-48c9-7bc8e0e6b9d8.png>


## 何をしたい？できる？
- OpenStack QueensをHyper-V上の仮想マシン(CentSOS)にInstall

## OpenStackについて
OpenStackは、クラウドコンピューティングを提供するためのオープンソースのソフトウェアプラットフォームで、パブリックまたはプライベートなクラウド環境を構築し管理することが可能です。
**OpenStackは、コンピューティング、Storage、ネットワーキングなど、クラウド環境に必要な機能を提供するための複数のコンポーネントから構成**されています。

|コンポーネント  |説明  |
|---|---|
|Cinder  |仮想マシンへの永続ボリュームの管理|
|Glance  |マシンイメージの管理|
|Horizon  |ユーザや管理者のWeb管理画面機能|
|Keystone  |Openstack環境の認証や認可の管理|
|Nova  |ハイパーバイザーと仮想マシン管理|
|Neutron  |仮想Switchや仮想Router等の仮想ネットワークの管理|




その機能の一つである**CinderはOpenStackのBlock Storageサービス**で、仮想マシン（VM）に永続的なStorageを提供します。
例えば、データベースやアプリケーションのデータを保存するために使用され、Cinderは、ハードウェアの詳細を抽象化し、ユーザーがStorageを簡単に管理できるようにします。
また、**Cinderは、スナップショット、バックアップ、データの複製など、高度なStorage機能も提供**します。
![011.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/3ec6df7d-a661-c4fc-3e1f-840ff0de3c66.png)


## 記事における環境情報
本記事では、以下の環境で実施した内容となります。
- ONTAP: 9.10.1
- CentOS: 7
- OpenStack: Queens
- **OpenStackはHyper-Vの仮想マシンへ導入**
- **Networkは1つのセグメントを用意　(検証なのでシンプル構成)**

<img width="600" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/d3e142a3-3cf1-25d7-52ff-9e4fb2210c9d.png>


- **OpenStack内で作成したインスタンスも外部NWの機器と疎通できるようにする**


<img width="500" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/176fd660-68a2-dd27-8c07-c5f6a6c7427e.png>


## OpenStack QeensのAll in One Install手順

### 1. Hyper-Vで仮想マシンの作成

Hyper-V上で新規の仮想マシンを作成します。
この記事では、以下の設定となっています。
- CPUは4個
- メモリは16GB
- 仮想Diskは200GB
- NICは1つ

#### 1-1. 仮想マシンの設定を編集

Hyper-V上の仮想マシンで作成したOpenStack上で、インスタンス(仮想マシン)を作成する入れ子の構成になりますが、**OpenStack上のインスタンスと外部のNetApp Storage等と疎通を取れるようにする為、仮想マシンの設定から[ネットワークアダプター]の[高度な機能]を選択し、[MACアドレスのスプーフィングを有効にする]へチェックを入れます**。


 :::note info
VMware環境の場合、仮想スイッチのセキュリティで「無差別モード」を「承諾」
:::

<img width="600" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/c16600c4-b940-b38c-f48f-af4078303344.png>


#### 1-2. 仮想化機能の設定

仮想化機能をHyper-V内の仮想マシンでも利用できるように、Hyper-Vを提供しているWindows ServerのPowershellで入れ子の設定を実施します。

```powershell:
> Set-VMProcessor -VMName "Openstack-Queens" -ExposeVirtualizationExtensions $true
```


### 2. CentOS 7のInstall

RPM Distribution of OpenStack (RDO)の[blog](https://blogs.rdoproject.org/2018/03/rdo-queens-released/) にはOpenStackのQueens利用の際にCentOS 7での利用提供の記載があったので、仮想マシンはCentOS 7を用意します。

#### 2-1. ISOイメージを接続して起動
仮想マシンにCentOS 7のISOイメージを接続し、電源を入れてInstallを実施します。


<img width="600" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/09e573a7-d847-6605-47ca-cbfe6153e218.png>



#### 2-2. 言語の選択
OpenStackの必要なパッケージをまとめてインストールするPackstackを使用する際には英語環境の指定が必要となる為、予め英語環境でのInstallを実施します。
                                                                                                
<img width="600" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/01220856-e9a2-e3de-c00e-34f46e90c9ca.png>


#### 2-3. キーボード操作は日本語指定にする
英語キーボード操作は慣れていないので、この環境では日本語キーボード操作の設定にします。
<img width="600" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/a46138a4-89e2-44ba-101b-14fbd9341d10.png>


#### 2-4. Install Softwareの指定
Minimal Installを指定します。

<img width="600" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/4701feb1-b252-7bb6-01d3-75ad88c646de.png>


#### 2-5. パーティション構成
/(root)のサイズを大きくしたシンプルな構成にします。

<img width="600" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/b17839de-e726-5411-97cf-51475d198400.png>

#### 2-6. Network/IPの指定
環境に合わせた内容を入力します。
<img width="600" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/bf2a6c53-4a2b-1573-98c6-9261e8aa2d9c.png>


#### 2-7. Installの開始
Installを進めます。
<img width="600" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/29a8ba46-df50-9763-d2f9-496a33321086.png>


### 3. OpenStack Queensの導入
作成したCentOS 7において[RPM Distribution of OpenStack (RDO)の手順](https://www.rdoproject.org/install/packstack/)を参考に進めていきます。

#### 3-1. NIC情報の確認

後ほど設定ファイルに対してNIC名の記載を行うので、IPの表示を実施します。
(通信で使われているNICがeth0という事を確認したい)

OpenStackで作成したインスタンスを外部NWと接続するには、固定IPアドレスを設定し、NetworkManagerを無効にする必要があります。

```bash:
[root@queens ~]# ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:15:5d:01:c8:28 brd ff:ff:ff:ff:ff:ff
    inet 172.16.10.144/24 brd 172.16.10.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::215:5dff:fe01:c828/64 scope link
       valid_lft forever preferred_lft forever
```

#### 3-2. CentOSの最新化
InstallしたパッケージのUpdateを実施します。
```bash:
[root@queens ~]# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)

[root@queens ~]# yum update
Loaded plugins: fastestmirror
base                                                                   | 3.6 kB  00:00:00
extras                                                                 | 2.9 kB  00:00:00
updates                                                                | 2.9 kB  00:00:00
(1/4): extras/7/x86_64/primary_db                                      | 250 kB  00:00:00
(2/4): base/7/x86_64/group_gz                                          | 153 kB  00:00:01
(3/4): base/7/x86_64/primary_db                                        | 6.1 MB  00:00:09
(4/4): updates/7/x86_64/primary_db                                     |  25 MB  00:00:12
Determining fastest mirrors
 * base: mirror.bizflycloud.vn
 * extras: mirror-hk.koddos.net
(中略)
``` 


#### 3-3. 使用する言語の設定
```bash:
[root@queens ~]# LANG=en_US.utf-8
[root@queens ~]# LC_ALL=en_US.utf-8
``` 

#### 3-4. FirewallやNetworkManagerの無効化
```bash:
[root@queens ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service.

[root@queens ~]# systemctl stop firewalld

[root@queens ~]# systemctl disable NetworkManager
Removed symlink /etc/systemd/system/multi-user.target.wants/NetworkManager.service.
Removed symlink /etc/systemd/system/dbus-org.freedesktop.NetworkManager.service.
Removed symlink /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service.
Removed symlink /etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service.

[root@queens ~]# systemctl stop NetworkManager

[root@queens ~]# systemctl enable network
network.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig network on

[root@queens ~]# systemctl start network
```

#### 3-5. SELinuxを無効化
/etc/selinux/config ファイルについては、SELINUX=disabled　へ修正を実施します。
```bash:
[root@queens ~]# setenforce 0

[root@queens ~]# cat /etc/selinux/config |grep "SELINUX="
# SELINUX= can take one of these three values:
SELINUX=disabled
``` 

#### 3-6. Packstack及び必要なパッケージ導入

```bash:
[root@queens ~]# yum install -y python-setuptools
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.xtom.com.hk
 * extras: mirror-hk.koddos.net
 * updates: mirror-hk.koddos.net
 (中略)

[root@queens ~]# yum install -y centos-release-openstack-queens
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.xtom.com.hk
 * extras: mirror-hk.koddos.net
 (中略)


[root@queens ~]# yum install -y openstack-packstack
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.xtom.com.hk
 * centos-qemu-ev: mirror.xtom.com.hk
 * extras: mirror-hk.koddos.net
 *  (中略)


[root@queens ~]# yum update
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.xtom.com.hk
 * centos-qemu-ev: mirror.xtom.com.hk
 *  (中略)
``` 

#### 3-7. Answer-file生成と修正
InstallするOpenStackコンポーネントのカスタマイズや複数ノードへのInstall、管理ユーザのログインパスワード設定を事前に行うには、Answer-fileを生成及び修正を行い、修正したAnswer-fileを指定してInstallするのが便利です。

```bash:
[root@queens ~]# packstack --gen-answer-file=queens_answers.cfg
Packstack changed given value  to required value /root/.ssh/id_rsa.pub

[root@queens ~]# ls
queens_answers.cfg
``` 

作成したAnswer-fileについては、以下の内容を修正しています。

 - CONFIG_CINDER_VOLUMES_SIZE
CentOS上のBlock Storageの容量(ONTAP設定は後で実施)
　
 - CONFIG_NEUTRON_OVS_BRIDGE_IFACES
仮想スイッチとOpanstackをInstallしているLinuxのNICを接続するための設定
　
 - CONFIG_PROVISION_DEMO
デモ機能の有効化もしくは無効化
　
 - CONFIG_KEYSTONE_ADMIN_PW
 OpenStackの管理アカウントとしてadminユーザーのパスワード

 :::note info

Compute Node(NOVA)を別Nodeで構築したい場合や、All in one構成に+αで追加したい場合には、別途用意したCentOSのIPを以下に記載します。
(複数台立てる場合は、複数のIP追記)
**CONFIG_COMPUTE_HOSTS =xxx.xxx.xxx.xxx** 
:::

```bash:
#導入環境に合わせて適宜変更してください
[root@queens ~]# cat queens_answers.cfg
(中略)
CONFIG_CINDER_VOLUMES_SIZE=120G
(中略)
CONFIG_NEUTRON_OVS_BRIDGE_IFACES=br-ex:eth0
(中略)
CONFIG_PROVISION_DEMO=n
(中略)
CONFIG_KEYSTONE_ADMIN_PW=PassP@ss1357word
(中略)
``` 


#### 3-8. Packstackを使ったOpenStackInstall
前述で修正したAnswer-fileを指定してOpenStackのInstallを実行します。
(Install完了まで20～30分)
```bash:
[root@queens ~]# packstack --answer-file=./queens_answers.cfg
Welcome to the Packstack setup utility

The installation log file is available at: /var/tmp/packstack/20240315-172612-Vm_MT3/openstack-setup.log

Installing:
Clean Up                                             [ DONE ]
Discovering ip protocol version                      [ DONE ]
Setting up ssh keys                                  [ DONE ]
Preparing servers                                    [ DONE ]
(中略)
Applying Puppet manifests                            [ DONE ]
Finalizing                                           [ DONE ]

 **** Installation completed successfully ******

Additional information:
 * Time synchronization installation was skipped. Please note that unsynchronized time on server instances might be problem for some OpenStack components.
 * File /root/keystonerc_admin has been created on OpenStack client host 172.16.10.144. To use the command line tools you need to source the file.
 * To access the OpenStack Dashboard browse to http://172.16.10.144/dashboard .
Please, find your login credentials stored in the keystonerc_admin in your home directory.
 * The installation log file is available at: /var/tmp/packstack/20240315-172612-Vm_MT3/openstack-setup.log
 * The generated manifests are available at: /var/tmp/packstack/20240315-172612-Vm_MT3/manifests
[root@queens ~]#
``` 

### 4. OpenStack環境へのアクセス
logに表示されていた、http:// IPアドレス /dashboardにアクセスできるか確認します。

<img width="600" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/ee18803d-70ad-204d-7c31-97683fc91d2b.png>

## 参考及びリンク
[RPM Distribution of OpenStack (RDO)](https://blogs.rdoproject.org/2018/03/rdo-queens-released/) 

[Why NetApp with OpenStack?](https://netapp.io/openstack/)

[The Queens Deployment & Operations Guide](https://netapp-openstack-dev.github.io/openstack-docs/queens/)

[Highly Available OpenStack Deployment on NetApp](https://www.netapp.com/pdf.html?item=/media/19783-tr-4323-design.pdf)