インフラエンジニア徒然日記

なんちゃってインフラエンジニアです。てきとーに日々のことを記載します。

ESXI5.5上でOpenstack10をインストールしてみた

ESXI5.5上でOpenstack10をインストールして、ゲストOSへアクセスできるところまで確認します。

自宅環境
サブネット:192.168.0.0/24
GAEWAY:192.168.0.1

ESXI;192.168.0.99
今回ゲストサーバは以下のスペックとする

 

f:id:ma_suzuki:20170422171300j:plain

ゲストサーバの設定で、INTEL-VTが有効になっていること

f:id:ma_suzuki:20170422171309j:plain


さらに、仮想スイッチでゲストサーバが所属するポートグループ
※ここではvmnetworkになりますが、セキュリティで無差別モードになっていることを確認

f:id:ma_suzuki:20170422171326j:plain

f:id:ma_suzuki:20170422171335j:plain

 

それぞれのNICIPアドレスは以下の通り
NIC0:192。168.0.90
NIC1;設定なし(ゲスト通信用にopenvsitchの物理ポートとして使用)
br-ex;192.168.0.50


すでにゲストサーバにCentos7を導入済みとして記載を進めます。
192.168.0.90に対してSSH接続を行います。

/etc/environmentの変更を行います。
vi /etc/environment
以下を追加

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

続いて、不要なサービス郡を停止します。
sudo systemctl disable firewalld
sudo systemctl stop firewalld
sudo systemctl disable NetworkManager
sudo systemctl stop NetworkManager
sudo systemctl enable network
sudo systemctl start network

 

続いて/dev/sdbに対して設定を行い、vggroup「cinder-volumes」を作成します。
#fdisk /dev/sdb
以下実行ログ
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-209715199, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-209715199, default 209715199):
Using default value 209715199
Partition 1 of type Linux and of size 100 GiB is set

Command (m for help): wq
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.


設定が反映されたか確認します。
以下実行ログ
# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): p

Disk /dev/sdb: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x015e9c64

Device Boot Start End Blocks Id System
/dev/sdb1 2048 209715199 104856576 83 Linux

Command (m for help): quit


続いて物理ボリュームを作成します。
# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created.

設定を確認します。
# pvdisplay
"/dev/sdb1" is a new physical volume of "100.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb1
VG Name
PV Size 100.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID ONXDnq-RR0e-n2S6-AbnO-uFfF-O7jG-3qlJjJ


続いて、作成した物理ボリュームに対して、vgグループ「cinder-volumes」を作成します。
# vgcreate cinder-volumes /dev/sdb1
Volume group "cinder-volumes" successfully created

設定を確認します。
# vgdisplay
--- Volume group ---
VG Name cinder-volumes
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size 100.00 GiB
PE Size 4.00 MiB
Total PE 25599
Alloc PE / Size 0 / 0
Free PE / Size 25599 / 100.00 GiB
VG UUID 1CfQ78-BYqx-jCCn-dzYr-7i3g-fqP2-9XOOGp


続いて、RDOリポジトリ追加、OSのパッケージのupdate、openstackのインストールまで行います。
sudo yum install -y https://repos.fedorapeople.org/repos/openstack/openstack-ocata/rdo-release-ocata-2.noarch.rpm
sudo yum update -y
sudo yum install -y openstack-packstack

再起動を行います。
#reboot

続いてopenstackをallinoneで導入します。
#packstack --allinone --provision-demo=n --os-neutron-ovs-bridge-mappings=extnet:br-ex \
--os-neutron-ml2-type-drivers=vxlan,flat

エラーなく終了することを確認します。

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

Additional information:
* A new answerfile was created in: /root/packstack-answers-20170422-123257.txt
* 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 192.168.0.90. To use the command line tools you need to source the file.
* To access the OpenStack Dashboard browse to http://192.168.0.90/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/20170422-123255-0NFr3n/openstack-setup.log
* The generated manifests are available at: /var/tmp/packstack/20170422-123255-0NFr3n/manifests
You have new mail in /var/spool/mail/root
[root@localhost log]#


外部接続用ブリッジ作成を行います。ens33からbr-exを作成します。
まずインターフェースの状況を確認
# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
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: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:0b:d7:a8 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.90/24 brd 192.168.0.255 scope global ens32
valid_lft forever preferred_lft forever
inet6 2408:211:82a7:5e00:20c:29ff:fe0b:d7a8/64 scope global mngtmpaddr dynamic
valid_lft 2591935sec preferred_lft 604735sec
inet6 fe80::20c:29ff:fe0b:d7a8/64 scope link
valid_lft forever preferred_lft forever
3: ens33: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether 00:0c:29:0b:d7:b2 brd ff:ff:ff:ff:ff:ff

br-exを作成
#cd /etc/sysconfig/network-scripts/
#cp ifcfg-ens33 ifcfg-br-ex
#vi ifcfg-br-ex
以下のように編集

=====
DEVICE=br-ex
DEVICETYPE=ovs
TYPE=OVSBridge
BOOTPROTO=static
IPADDR=192.168.0.50
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
DNS1=8.8.8.8
ONBOOT=yes

#vi ifcfg-ens33
以下のように編集

=====
DEVICE=ens33
TYPE=OVSPort
DEVICETYPE=ovs
OVS_BRIDGE=br-ex
ONBOOT=yes

再起動を行います。
#reboot


keystonerc_adminファイルを読み込みます。(/rootディレクトリに作成されているはずです。)
#. keystonerc_admin
正常に読み込まれると以下のように表示が変更されます。
[root@localhost ~(keystone_admin)]#

 

続いて外部ネットワークを作成します。
#neutron net-create external_network --provider:network_type flat \
--provider:physical_network extnet --router:external

以下のように作成されたこと確認します。
neutron CLI is deprecated and will be removed in the future. Use openstack CLI instead.
Created a new network:
+---------------------------+--------------------------------------+
| Field | Value |
+---------------------------+--------------------------------------+
| admin_state_up | True |
| availability_zone_hints | |
| availability_zones | |
| created_at | 2017-04-22T04:31:02Z |
| description | |
| id | 47a714bb-aa57-4dea-ac14-405d7c6646cd |
| ipv4_address_scope | |
| ipv6_address_scope | |
| is_default | False |
| mtu | 1500 |
| name | external_network |
| project_id | 4653ebc9e46e42c19fc1907fe38305a0 |
| provider:network_type | flat |
| provider:physical_network | extnet |
| provider:segmentation_id | |
| revision_number | 3 |
| router:external | True |
| shared | False |
| status | ACTIVE |
| subnets | |
| tags | |
| tenant_id | 4653ebc9e46e42c19fc1907fe38305a0 |
| updated_at | 2017-04-22T04:31:02Z |
+---------------------------+--------------------------------------+


続いて、外部ネットワーク用のサブネットを作成します。
external_networkには自宅ネットワーク(192.168.0.0/24)
gatewayには192.168.0.0/24のGATEWAYを指定
allocation-poolは、外部ネットワークのIPアドレスのうちDHCPとして割り当て可能なIPレンジを指定します。

eutron subnet-create --name public_subnet --enable_dhcp=False --allocation-pool=start=192.168.0.2,end=192.168.0.10 --gateway=192.168.0.1 external_network 192.168.0.0/24

以下のように作成されたこと確認します。

neutron CLI is deprecated and will be removed in the future. Use openstack CLI instead.
Created a new subnet:
+-------------------+-------------------------------------------------+
| Field | Value |
+-------------------+-------------------------------------------------+
| allocation_pools | {"start": "192.168.0.2", "end": "192.168.0.10"} |
| cidr | 192.168.0.0/24 |
| created_at | 2017-04-22T04:31:44Z |
| description | |
| dns_nameservers | |
| enable_dhcp | False |
| gateway_ip | 192.168.0.1 |
| host_routes | |
| id | aca246e0-814f-4869-8033-2bdd1bf3acdc |
| ip_version | 4 |
| ipv6_address_mode | |
| ipv6_ra_mode | |
| name | public_subnet |
| network_id | 47a714bb-aa57-4dea-ac14-405d7c6646cd |
| project_id | 4653ebc9e46e42c19fc1907fe38305a0 |
| revision_number | 2 |
| service_types | |
| subnetpool_id | |
| tags | |
| tenant_id | 4653ebc9e46e42c19fc1907fe38305a0 |
| updated_at | 2017-04-22T04:31:44Z |
+-------------------+-------------------------------------------------+

続いてOpenStack上の仮想マシンとして動作させるイメージを準備します。
OpenStackでテスト用として、CirrOSがあるのでそちらをダウンロードします。
イメージURL
https://docs.openstack.org/ja/image-guide/obtain-images.html

今回利用するイメージ
http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img

ブラウザを開き、http://192.168.0.90/を入力します。

以下画面で、

f:id:ma_suzuki:20170422171429j:plain


ユーザー名:admin
パスワード:<keystonerc_adminに記載されているパスワード>

パスワードの確認方法は以下の通り。


[root@localhost ~(keystone_admin)]# cat keystonerc_admin
unset OS_SERVICE_TOKEN
export OS_USERNAME=admin
export OS_PASSWORD34c9410ef5a44d01=
export OS_AUTH_URL=http://192.168.0.90:5000/v3
export PS1='[\u@\h \W(keystone_admin)]\$ '

export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_IDENTITY_API_VERSION=3

今回は、「34c9410ef5a44d01」がパスワードになります。


GUIからイメージをアップロードします。
「プロジェクト」→「コンピュート」→「イメージ」から「イメージの作成」を選択し
以下入力してイメージの作成をクリック。

f:id:ma_suzuki:20170422171451j:plain

イメージ名:test_image
ファイル:cirros-0.3.5-x86_64-disk.img(先ほどダウンロードしたもの)
形式:QCOW2 -QEMU エミュレータ

f:id:ma_suzuki:20170422171508j:plain

以下の通り正常に登録されていることを確認

f:id:ma_suzuki:20170422171525j:plain

 


プライベートネットワークを作成します。
「プロジェクト」→「ネットワーク」→「ネットワーク」をクリックし、「ネットワークの作成」をクリックします。

以下の画面の通り、入力を行います。
ネットワーク:private
サブネットの作成にチェックを入れます

 

次へをクリックするとサブネット作成画面に遷移するので
以下の画面の通り、入力を行います

サブネット:private-subnet
ネットワークアドレス:192.168.100.0/24
ゲートウェイ:192.168.100.1

 

f:id:ma_suzuki:20170422171618j:plain

 


次へをクリックするとサブネット詳細画面に遷移するので
以下の画面の通り、入力を行います
DHCP有効にチェック
IPアドレス割り当てプール:「192.168.100.2,192.168.100.10」
DNSサーバ:「8.8.8.8」

f:id:ma_suzuki:20170422171656j:plain

 

 

 

作成をクリックし、以下画面作成されていることを確認します。

 

 

f:id:ma_suzuki:20170422171715j:plain

 


ルーターを作成します。
「プロジェクト」→「ネットワーク」→「ルーター」をクリックし、「ルータの作成」をクリックします。

 

以下画面の通りに入力します。
ルーター名:router01

ルーターの作成をクリックし、以下の画面の通り作成されていることを確認します。

 

f:id:ma_suzuki:20170422171803j:plain

 

続いてrouter01を選択し、「インターフェース」を選択し、以下の画面に遷移したことを確認しインターフェースの追加をクリックします。

 

以下の画面の通り、入力を行い送信をクリックします。
サブネット:private
ipアドレスは省略してしまってOKです。

f:id:ma_suzuki:20170422171855j:plain

 

以下の画面のとおり、種別「内部インターフェース」が作成されていることを確認します。

 

f:id:ma_suzuki:20170422171912j:plain

 


続いてゲートウェイ設定を選択します。先ほどの画面の右上に「ゲートウェイの設定」があるのでそちらをクリックします。

 

以下の画面の通り、外部ネットワークから「external_network」を選択し、送信をクリックします。

 

f:id:ma_suzuki:20170422172013j:plain

 

以下の画面の通り、種別「外部ゲートウェイ」画設定されていることを確認します。

 

f:id:ma_suzuki:20170422172028j:plain

 

 

左ペインから「ネットワークトポロジー」を確認して以下のようなトポロジーになっていることを確認します。

f:id:ma_suzuki:20170422172051j:plain

 

 

続いてセキュリティグループの設定を行います。
左ペインから「セキュリティグループ」を選択します。

以下の画面の通りすでに「default」が存在するので、右になる「ルールの管理」をクリックします。

 

f:id:ma_suzuki:20170422172108j:plain

 

以下の画面に遷移したら「ルールの追加」をクリックします。

以下の画面の通り、以下入力を行い追加をクリックします。
ルール:SSH
接続相手:CIDR
CIDR:0.0.0.0

ルール管理のなかにSSHポリシーが追加されていることを確認します。

 

f:id:ma_suzuki:20170422172147j:plain

 


以下手順でadmin_key.pemを作成します。

# . keystonerc_admin
[root@localhost ~(keystone_admin)]# nova keypair-add admin > admin_key.pem
/usr/lib/python2.7/site-packages/novaclient/client.py:278: UserWarning: The 'tenant_id' argument is deprecated in Ocata and its use may result in errors in future releases. As 'project_id' is provided, the 'tenant_id' argument will be ignored.
warnings.warn(msg)

admin_key.pemが作成されていることを確認します。
# ls -ld admin_key.pem
-rw-r--r-- 1 root root 1676 Apr 22 16:47 admin_key.pem


続いて仮想マシンを作成します。
「プロジェクト」→「コンピュート」→「インスタンス」を選択すると以下の画面に遷移するので「インスタンスの起動」をクリックします。

 

以下の画面に遷移したら、以下入力し、次へをクリックします。
インスタンス名:test01
アベイラビリティゾーン:nova
インスタンス数:1

 

f:id:ma_suzuki:20170422172232j:plain

 

以下の画面に遷移したら、以下入力し、次へをクリックします。
ブートイメージ:イメージ
ボリュームサイズ:10GB
割り当て済み:test_image(先ほど作成しました)

 

f:id:ma_suzuki:20170422172246j:plain

 

以下の画面に遷移したら、以下入力し、次へをクリックします。
割り当て済み:m1.small

以下の画面に遷移したら、以下入力し、次へをクリックします。
割り当て済み:private

ネットワークのポートはそのまま次へをクリックし、セキュリティグループ
画面で、割り当て済みとして「defalut」が選択されていることを確認し、次へをクリックします。

 

f:id:ma_suzuki:20170422172318j:plain

 


以下の画面に遷移したら、割り当て済みとして「admin」が選択されていることを確認し、「インスタンスの起動」をクリックします。

 

f:id:ma_suzuki:20170422172405j:plain

 

作成したインスタンスのステータスが「稼働中」に遷移したことを確認します。

 

f:id:ma_suzuki:20170422172426j:plain


続いて、右のアクションから「スナップショットの作成」のプルダウンから
「Floateing IPの割り当て」を選択します。

以下画面に遷移したことを確認し、IPアドレスの「確保済みのFloating IPアドレスはありません」の「+」を選択します。

 

 

f:id:ma_suzuki:20170422172920j:plain

 

 

 

以下画面に選択したら、「IPの確保」をクリックします。

f:id:ma_suzuki:20170422172929j:plain

 

以下画面に遷移するとIPアドレスが表示されるはずなので、割り当てをクリックします。
今回の例ですと、「192.168.0.5」が選択されています。

 

f:id:ma_suzuki:20170422172948j:plain

 

インスタンスに対して、「192.168.0.5」が割り当てられたことを確認します。

 

f:id:ma_suzuki:20170422173042j:plain

 

コンソールから、192.168.0.5に対して入力できることを確認します。
ユーザー名:cirros
パスワード:cubswin:)

 


[root@localhost ~(keystone_admin)]# ssh cirros@192.168.0.5
The authenticity of host '192.168.0.5 (192.168.0.5)' can't be established.
RSA key fingerprint is 2a:3b:fe:12:20:5c:60:5a:7c:dc:ee:50:bb:2a:cf:25.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.5' (RSA) to the list of known hosts.
cirros@192.168.0.5's password:
$
$

以上、仮想ゲストへのログイン完了まででした。。