OpenStack環境のCinderでONTAP利用②【OpenStack Queensの初期設定メモ】

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

[前回の記事](https://qiita.com/s_yosh1d/private/29a32c5838f33898b77c)の続きとして、**All in One構成でインストールしたOpenStack Queensの初期設定についての内容**を記載します。

<img width="600" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/5ab7f9cf-e3e9-b53f-826a-4aec47d216af.png>

## 何をしたい？できる？
- All in One構成 Install後のOpenStack環境の設定
- OpenStackで作成したインスタンス(VM)と他の機器を疎通できるようにする


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

<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の初期設定

### 1. Network構成の設定
OpenStackで提供する内部の論理Networkと、OpenStackが接続する外部Networkの設定を実施します。
**外部NetworkはInternet接続や他の外部機器に接続する為のNetwork**になります。


#### 1-1. 外部Network(External Network)設定
**下図の赤い部分のNetwotkに関する設定を実施**します。


<img width="400" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/df917900-6ef3-352e-e8e2-b721349938f9.png>



OpenStackのWeb管理画面にadminでログイン後、
[管理]->[ネットワーク]をクリックし、表示された画面で[ネットワークの作成]を選択します。


<img width="600" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/4e250912-b49d-7d7a-5aa2-d2a33e3ce840.png>

表示された画面で必要項目を入力し、[次へ]をクリックします。
- プロジェクトはadminを指定
- プロバイダーネットワーク種別はフラットを指定
- 物理ネットワークはextnetを入力
 (Intall時のanswer fileでextnetになっている)
- 管理状態有効、共有、外部ネットワーク、 サブネットの作成へチェック
(別のユーザ作成後も同じNetwork利用予定)
<img width="500" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/02d2b09b-2433-d0e4-f27e-98bb8af0de97.png>


サブネットの設定画面で必要項目を入力し、[次へ]をクリックします。

- ネットワークアドレスは外部用のセグメント入力
- 別セグメントへの通信や、Internet接続が発生する際にはゲートウェイを入力

<img width="500" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/74a27f10-b1c1-ac37-bc60-711c559df5d5.png>


DHCPで払いだすIPの範囲と参照先DNSを入力し、[作成]をクリックします。
<img width="500" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/9518cf9f-7d15-5ad9-84b1-7346a2a820e0.png>

 

#### 1-2. 内部Network(adminユーザ用テナントNetwork)設定
下図の赤い部分のNetwotkに関する設定を実施します。

<img width="400" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/250fa788-876d-5b54-0a87-1b818a2fdde1.png>



先程と同様に、[管理]->[ネットワーク]をクリックし、表示された画面で[ネットワークの作成]を選択し、表示された画面で、必要項目を入力し、[次へ]をクリックします。
- プロジェクトはadminを指定
- プロバイダーネットワーク種別はVXLANを指定
- 管理状態有効、共有、サブネットの作成へチェック
(別のユーザ作成後も同じNetwork利用予定)
<img width="500" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/3d52dee2-1378-2feb-74d3-8b92e9a026d6.png>



サブネットの設定画面で必要項目を入力し、[次へ]をクリックします。
- ネットワークアドレスは内部用に外部と違うセグメントを入力
- 作成した外部用のセグメントと疎通する際に利用するゲートウェイIPを入力
<img width="500" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/94925fda-4b80-e6a0-bb9d-86e4aa0c7afd.png>

DHCPで払いだすIPの範囲と参照先DNSを入力し、[作成]をクリックします。
<img width="500" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/1792d5f5-b637-3c5c-016d-747bb564af5e.png>


作成後、[プロジェクト]=>[ネットワーク]=>[ネットワークトポロジー]をクリックすると作成したNetwotkのトポロジー図を確認する事ができます。
<img width="500" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/26c34e5c-f90c-f000-1b14-8d2e3fb36894.png>




#### 1-3. 仮想ルータの作成
adminユーザが上記で作成した自分用のテナントNetworkである192.168.10.0/24上に作成したインスタンスから172.16.10/0/24の外部Networkと疎通できるようにする為、Network間を繋ぐ仮想ルータを作成します。
**下図の赤字の部分に関する設定を実施**します。


<img width="400" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/4abab601-165e-d41e-0a55-b8793864bb81.png>

[プロジェクト]=>[ネットワーク]=>[ルーター]をクリックし、表示された画面で[作成]をクリックします。

<img width="600" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/db169c90-1cbc-4dcb-8f16-bc0000d571ea.png>


表示された画面で、必要な項目を入力します。
- 外部ネットワークは先程作成した、extnetを指定
- SNAT有効にはチェックを入れたまま
(SNAT有効だと、テナント内の VM は外部にアクセスできる)

<img width="500" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/2e1ea419-861a-04ca-ac17-d8cc69f51fbc.png>


[プロジェクト]=>[ネットワーク]=>[ネットワークトポロジー]を確認すると、作成したルータに外部Network作成時の際に指定した払い出しIPの中からGeatwayのIPが設定されている事が確認できます。
テナント側にもGeatwayを用意する必要がある為、ネットワークトポロジーに表示されている仮想ルーターをクリックして、[インターフェースの追加]をクリックします。

<img width="500" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/1cfe31c9-6100-88e1-fffe-034b3bec688d.png>

表示された画面でadminユーザ用のテナントNetworkを指定して[送信]をクリックします。
**本記事では、テナントNetwork作成時にGatewayのIPを指定しておいたので、インターフェースの追加のタイミングでは[IPアドレス]部分を空白にしておいても、自動的に指定しておいたIPが設定**されます。

<img width="500" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/595b2aa0-779b-0abf-bd29-9029aac4ccd5.png>


#### 1-4. セキュリティグループの設定
defaultのセキュリティグループに、**外部からテナントNetwork内に作成したインスタンスへpingやSSHでログインできるように、ALL ICMP, SSHを0.0.0.0/0で追加**します。
(インスタンス作成時にdefaultのセキュリティグループを利用する為)

[プロジェクト]=>[ネットワーク]=>[セキュリティグループ]をクリックし、表示された画面でdefaultというセキュリティグループの[ルールの管理]をクリック、ICMPとSSHの追加を実施します。

<img width="500" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/0bb0d6b9-3893-3403-fd91-b106401ae7ef.png>
<img width="500" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/a21fb797-6b18-54c8-946c-1dd5cb20b31d.png>


### 1-5. FloatingIPの設定

Floating IPは、OpenStackのインスタンス（VM）に動的に関連付けられる外部向けのIPの事で、インスタンスがテナントNetwork内にあったとしても、外部のNetworkからインスタンスにアクセスするための手段を提供します。
いわゆる、NAT（Network Address Translation）を使用して実現している機能です。

<img width="400" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/0f02eebe-4984-4bb7-976e-5d7f802eb3f3.png>

[プロジェクト]=>[ネットワーク]=>[Floating IP]をクリックし、表示された画面で[Floating IPの確保]をクリックします。
<img width="600" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/89b89cc5-5bd5-276d-0590-c473c95f4424.png>


表示された画面で、プールに作成しておいた外部Networkを指定して、[IPの確保]をクリックします。
(外部Network作成時のIPアドレス割り当てプールの範囲内で1つIPが確保されます)

<img width="500" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/3b745096-6e84-9ed3-a20e-9d34811f0f4e.png>
 




### 2. Compute構成の設定

インスタンス(VM)作成・利用する為の設定を実施していきます。

#### 2-1. イメージの登録
OpenStackでは、使用可能なイメージを利用してインスタンス(VM)作成を実施しますので、まずは利用できるイメージをUploadして登録を行います。
(OpenStack上に別ユーザを作成しても同じイメージを利用できるようにする)

[OpenStackのドキュメント](https://docs.openstack.org/ja/image-guide/obtain-images.html)を参考にして必要なOSイメージを入手します。
本記事では、CirrOS (テスト用)のイメージとしてcirros-0.6.2-x86_64-disk.imgをダウンロードして利用します。

<img width="400" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/5b59eb2a-3132-80d2-bac9-42dfd9a49342.png>

[管理]=>[コンピュート]=>[イメージ]をクリックし、表示された画面で[イメージの作成]をクリックします。
<img width="600" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/b5e8ef9a-78c6-1353-6623-9960c0c4cf22.png>

表示された画面で、必要項目を入力して[イメージの作成]をクリックします。
- ファイルはダウンロードしたcirros-0.6.2-x86_64-disk.imgを指定
- 形式はQCOW2を選択
- 公開範囲はパブリック
(別ユーザーからも利用したいので)

<img width="500" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/297fc2a7-02ca-99ae-83b8-d525ee306a34.png>


#### 2-2. キーペアの登録
秘密鍵/公開鍵のペアを作成しておくと、インスタンス起動時にゲストOSへ公開鍵を埋め込むことでSSH接続ができるようになります。

[プロジェクト]=>[コンピュート]=>[キーペア]をクリックし、表示された画面で[キーペアの作成]をクリックします。
<img width="600" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/c9596583-0a04-9f0a-559e-83728547f945.png>

表示された画面で、任意のキーペア名を入力し、[キーペアの作成]をクリックすると操作しているブラウザ上で秘密鍵がダウンロードされます。

<img width="600" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/712d754c-a22e-aeda-5cc0-4dc7ece58ace.png>



### 3. インスタンス(VM)を作成し、SSH接続の実施
Uploadしたイメージからインスタンス(VM)の作成を実施します。
<img width="400" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/8d57af80-6454-5fc1-cfd7-975c44e03b6d.png>

#### 3-1. コンソール接続できるようにする為の設定
**Webブラウザから直接コンソール接続でインスタンス操作をできるようにする為、
/etc/hostsファイルにOpenStackをInstallしているホスト名とIPを記載**します。

これは、/etc/nova/nova.confファイルのコンソール接続の設定項目について、hosts名での記載になっているためです。(DNS参照設定していて、DNSに登録していれば不要)

```bash:
# nova.confにおけるコンソール接続部分の確認
[root@queens ~]# cat /etc/nova/nova.conf |grep vncserver_proxyclient_address=
vncserver_proxyclient_address=queens.local

#Hostsファイルの確認
[root@queens ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.10.144   queens.local
```

#### 3-2. インスタンスの作成
インスタンスの作成を実施します。
[プロジェクト]=>[コンピュート]=>[イメージ]をクリックし、表示された画面でインスタンスに利用するイメージの右側にある[起動]をクリックします。
<img width="600" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/63e26af7-e3da-91be-dc1b-714d4976fe4f.png>

表示された画面で、任意のインスタンス名を入力して[次へ]をクリックします。

<img width="500" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/c0230141-68d5-ad34-bc5c-9d2923ac0294.png>

選択したイメージが割り当て済みになっている事を確認します。
本記事ではインスタンス削除時にボリュームを削除する設定を[はい]に変更しています。
(インスタンスで作成したデータを保持しておきたい訳では無いので)
<img width="500" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/d990a1aa-60ae-1f50-823d-067de70b3779.png>

インスタンスのサイズを指定します。ここではm1.tinyを指定し、[次へ]をクリックします。
<img width="500" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/de058ed2-46cc-c3ca-73c0-66d806ccfde2.png>

NetworkはテナントNetwork側のみ指定します。
<img width="500" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/20bfc3a5-69e0-ec96-6685-90622fa2b754.png>

セキュリティグループはdefaultを指定したまま、[次へ]をクリックします。
(前述でdefaultのセキュリティグループにICMPやSSHを許可した為)
<img width="500" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/c578185d-43ff-e29c-6308-836c7e08b04e.png>

キーペアの割り当ては、先程作成したものが選択されている事を確認して、
画面下方の[インスタンスの起動]をクリックします。
<img width="500" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/7496810b-d2e1-621e-cb36-e2e0ee5249c1.png>

[プロジェクト]=>[コンピュート]=>[インスタンス]をクリックし、表示された画面でインスタンスのステータスが稼働中となっている事を確認します。
<img width="500" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/63cf17e7-119b-279a-fd31-87ef855afdad.png>

インスタンス名をクリックすると起動時のログ確認や、コンソール接続が可能になります。
<img width="500" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/044306af-6998-c22a-ffa2-fc6c155d2c7a.png>

#### 3-3. Floating IPの割り当て
内部のテナントNetwork上のインスタンスへアクセスできるようにする為、作成したインスタンスの右側の[アクション]から[Floating IPの割り当て]を選択します。

<img width="500" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/fe0d2b8f-964e-1c5d-61ea-918f026b4048.png>

表示された画面で、[IPアドレス]から確保しておいたFloating IPを選択して、[割り当て]をクリックします。
<img width="500" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/e7e23d57-d678-bfd4-b850-99a128a1d442.png>

#### 3-4. SSH接続の実施
外部Network上にいるWindowsクライアントにて前述で作成した際にダウンロードされた秘密鍵をコピーしておきます。
秘密鍵を指定してSSH接続を実施します。
接続イメージは、下図の通りです。

<img width="400" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/2d97029f-5279-947c-f543-0cf5400a6ffe.png>

WindwosクライアントでPowershellコンソールを使い、秘密鍵を指定してSSHを実施し、作成したインスタンスに接続できている事を確認します。
**cirrosのログインアカウントはcirrosで、パスワードはgocubsgo**になります。
(インスタンスのログからも確認できます)


```powershell:
PS C:\temp\sshkey> ls
    ディレクトリ: C:\temp\sshkey
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----       2024/03/19     18:42           1675 admin-pair01.pem


PS C:\temp\sshkey> ssh -i admin-pair01.pem cirros@172.16.10.243

The authenticity of host '172.16.10.243 (172.16.10.243)' can't be established.
ECDSA key fingerprint is SHA256:EXR0n9zPtplEbpE84amWqsgBb+jrbvaEsDdTPO1G6SE.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.16.10.243' (ECDSA) to the list of known hosts.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions for 'admin-pair01.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "admin-pair01.pem": bad permissions
cirros@172.16.10.243's password:
$
$
$ hostname
inst01
$
$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue 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 1450 qdisc pfifo_fast qlen 1000
    link/ether fa:16:3e:51:e7:a2 brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.7/24 brd 192.168.10.255 scope global dynamic noprefixroute eth0
       valid_lft 85250sec preferred_lft 74450sec
    inet6 fe80::f816:3eff:fe51:e7a2/64 scope link
       valid_lft forever preferred_lft forever
```

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

[イメージの入手](https://docs.openstack.org/ja/image-guide/obtain-images.html)

[OpenStack Networking (neutron) 入門](https://docs.openstack.org/liberty/ja/networking-guide/intro-os-networking.html)

[Compute サービスの概要](https://docs.openstack.org/newton/ja/install-guide-debian/common/get-started-compute.html)

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

[OpenStack環境のCinderでONTAP利用①【Packstack利用のOpenStack QueensのAll in One Installメモ】](https://qiita.com/s_yosh1d/private/29a32c5838f33898b77c)