自作PCのESXi上で無事OpenStackをインストールする事が出来たので、手順を紹介します。
とりあえず動かすまでの手順は全て含めました。必要なイメージのダウンロードや事前準備等も全てです。
「OpenStackを一度試してみたい」という方、この手順に沿って操作すれば必ず構築できるはず。
非常に長くなっていますが、それは画面キャプチャなど、必要な情報を全て含めているからです。
慣れたら30分で出来るようになります。
はじめに
OpenStackは、ややこしい、と思っていませんか?
これが、私がOpenStackに出会った時の感想です。
私はHyper-V/VMwareの経験があります。(ブログを見た事がある人はご存知ですが、VCP-DCV/VCP-NV/VCIX-NVを持っています)
その知識を総動員しても、OpenStackはややこしかった。
一番の理由は「なんか、コンポーネントが多すぎて、何から手をつけたら良いか解らん・・・」だと思います。
Nova?Neutron?なんじゃそれ?って感じです。
さらに、Linuxは色んなディストリビューションがあります。また、OpenStackは色んなインストール方法があります。
さらにさらに、HAとかコンピュートノードの分離等を考えると、本当に色んなやり方があります。
この、色んなやり方ってのは、初心者に対しては迷う要素なだけです。
「ただ、試してみたいのに。。OpenStackでVMを作ってみたいだけなのに・・・」って人でも、OpenStackの環境を構築するだけで苦労します。
だから、諦める人も多いでしょう。そんな人を沢山見てきました。
ESXiの導入なんてシンプルなのに、、、OpenStackは難しい。
そもそもESXiとOpenStackは解決する課題が違うのですが、一般人からしたら上記のような印象だと思います。
この記事では、とりあえず動くところまでの手順を網羅しました
まずは動かせる状態まで持っていきましょう。
一度動けば、どんなコンポーネントがOpenStackを支えているかの把握も容易になります。OpenStackで何が出来るか?も理解しやすくなります。
動かせれなければ「何が足りないのか?」「どの設定がダメなのか?」と無駄に悩む事が増えます。
この記事では、ESXi上にOpenStackを構築する手順を全て網羅しました。
OpenStackが動くLinuxのダウンロードからインストール、OpenStackの設定など、全てです。
私と同じ環境を事前に作る事をオススメします
この手順書は、私の検証環境で実証しています。
私の検証環境の作り方は、以下の記事に全て網羅しています。機材、組み立て、ESXiの導入等、全てです。
OpenStackの環境構築は、H/W・Linuxディストリビューションにかなり依存します。
その為、同じ環境を構築する事を強くオススメします。
また、この検証環境ができれば、OpenStackやvSphereなどなど、さまざまな検証が可能となります。私が今後追加する予定の色んな仮想可ソフトウェアの検証も、上記検証環境をベースに行います。
殆どの人は、まずはソフトウェアの動作を確認したい・見てみたいはずです。それなのに、H/WのチップセットやLinuxの細かい設定等、そういう「ソフトウェアの確認にはどうでもいいこと」に時間を費やすのは無駄だと感じているはずです。
上記と同じ環境を準備し、この手順に沿えば、とりあえず私が行った事と同じ結果になるはずです。(保証はできませんが・・・)
手順は飛ばさないで下さい
全ての手順には意味があります。
特にbr-exの設定当たりで急にコマンドラインになったりするので、少し戸惑うかもしれません。
でも、それにも意味があります。飛ばさないで下さい。
この記事で、できること
- ESXiの上にOpenStackを導入し、OpenStack上でインスタンスを起動できる
- OpenStack上のインスタンスに外部ネットワークからログインできる
この記事に書いていない事
- OpenStackのアーキテックチャーなど、技術的なこと。この手順書は入門編です。
- なぜ、この設定にしたか?なぜ、この手順か?など。とりあえず初心者が動かすことが目的です。
参考にさせて頂いたサイト
前提
システム関係
- 私と同様のESXi環境が構築されている事
- 管理用パソコンにvSphere Clientが導入されている事
- ESXi環境をvSphere Clientから操作できる事
ネットワーク関係
- 私の家のネットワークは192.168.1.0/24のフラットなネットワークです。ここでの「フラット」とは、192.168.1.0/24のレンジのノードは、VLANやVXLANなどを使わずに普通にPINGで相互通信が出来るということです。
- なので、以降は192.168.1.0/24を適宜自分の家のネットワークセグメントに置き換えて下さい。
- ちなみに、私の環境のIPアドレスは以下の通り
- 192.168.1.231:ESXi
- 192.168.1.232:OpenStackのVM用(これから作る)
事前準備。ESXiの設定
リソースの確認
まず、ESXiが正しくリソースを認識している事を確認します。
vSphere Clientを起動します。
「サマリ」をクリック。CPU/メモリ/ストレージが、ESXi上で正しく認識されている事を確認。
仮想スイッチの設定変更
「構成」をクリック。
「ネットワーク」をクリック。物理アダプタの上の「プロパティ」をクリック。(一番上のプロパティではない)
下の「編集」をクリック。(今から、左の無差別モードの設定を変えます)
「セキュリティ」をクリック。
「無差別モード」を承諾に変更し、「OK」をクリック。
無差別モードが「承諾」に変わった事を確認し、「閉じる」をクリック。
OpenStackを導入するLinuxイメージの取得・保存
以下のリンクにアクセスし、Linuxイメージを取得。
「CentOS-7-x86_64-DVD-1511.iso」をローカルにダウンロード。
ダウンロードされた事を確認。
LinuxイメージをESXiのデータストアに保存
※管理用PCからネットワークインストールもできますが、今後何度もやる事を想定し、データストアに保存します。とりあえず以下の手順に沿ってやって下さい。
「ストレージ」をクリック。
右の「datastore1」を右クリックし、「データストアの参照」をクリック。(データストアブラウザが表示される)
左の「/」が選択された状態のはずです。まずはフォルダを作って管理したいので、上のフォルダの+があるアイコンをクリックします。
「OS_Image」とでも入力し「OK」をクリック。
「OS_Image」フォルダが出来たので、右の「OS_Image」をダブルクリック。(「OS_Image」に移動されます)
上の「ドラム缶に上矢印」アイコンをクリック。
先ほどダウンロードした「CentOS-7-x86_64-DVD-1511.iso」を選択肢、「開く」をクリック。
「はい」をクリック。
転送が始まります。ネットワークの速度に依存しますが、10分程度かかるので休憩しましょう。
終わったら、以下の画面のようにファイルが転送されている事が確認できるはずです。
以上で事前準備は終了です。上記データストアブラウザを閉じて下さい。
次は、OpenStackのホストOSとなるLinuxをESXiに導入する作業です。
ESXiにOpenStack用VMを作成する
まず、VMの作成です。
左にある「192.168.1.231」を右クリックし、「新規仮想マシン」をクリック。
そのまま「次へ」
名前に「OpenStack1」を入力し、「次へ」。(何でもいいですが、合わせた方が後々わかりやすいかと)
そのまま「次へ」
ゲストOSは「Linux」、バージョンは「CentOS 4/5/6/7(64ビット)」を選択し、「次へ」
そのまま「次へ」
仮想ディスクサイズに「100」を、「Thin Provision」を選択し、「次へ」
「完了前に仮想マシンの設定を編集」をチェックし、「続行」
メモリサイズを「20」に変更し、左の「CPU(追加中)」をクリック。
ソケットあたりのコアの数を「4」に変更し、「新規CD/DVD(追加中)」をクリック。
「データストアISOファイル」を選択し、左の「参照」をクリック。
先ほどアップロードしたISOを探します。「OS_Image」をダブルクリック。
「CentOS-7-…」をダブルクリック。
「パワーオン時に接続」をチェックし、「終了」をクリック。
以上でOpenStackを稼働させるLinuxのVM設定が終了です。
参考:私の環境ではCPU/MMUの仮想化は不要でした
いくつかのサイトでは、以下の設定を変更するようにコメントがあったのですが、私のESXiの環境では不要でした。私と同一環境を構築した方は、以下の画面を見る必要はありません。
VMにLinux(Centos7)を導入する
では、Centos7のインストールです。
上の緑の左矢印をクリックします。VMが起動されます。
VMが起動されたら「OpenStack1」の左にも緑の矢印が表示される。
右の「サマリ」の上ら辺にあるパソコンと矢印が組合わさったアイコンをクリック。
OpenStack1VMのコンソールが開きます。
まず、マウスを「Install CentOS 7」辺りに持っていって、キーボードを有効にします。
キーボードの矢印ボタンで「Install CentOS 7」を選択し、Enter。
そのまま「Continue」
「INSTALLATION DESTINATION」をクリック。
なにもせずに、「Done」をクリック。
「Begin installation」をクリック。
「ROOT PASSWORD」をクリック。
自分の好きなパスワードを入力し、「Done」
終わったら「Reboot」をクリック。
VMがリブートされ、以下の画面が表示されたらOKです。休憩しましょう。
次は、OSのネットワーク設定です。
OpenStack用Linuxのネットワーク設定
まず、インターフェース名を昔ながらのeth0に変更します。多分これは必須じゃないと思うのですが、RDOのサイトでもまだeth0で説明が多いので、やってしまいます。
rootでログインし、以下の通り、コマンドを実行。ifcfg-enoXXXというファイルを触ります。
こんな感じで、とりあえずバックアップを作っておいて、ファイル名を「ifcfg-eth0」に変更。
viなどで「ifcfg-eth0」を編集。
NAMEとDEVICEを「eth0」に修正し、ファイルを保存。
以下の画面の通り、ディレクトリを移動。「grub」のバックアップを取得し、編集。
6行目の最後に「net.ifnames=0」を追加し、保存。
以下の通り、grub2の読み込みファイルを再構成。
設定した文字列が入っている事を確認し、reboot。
リブート後に「ip a」を実行し、eth0が表示されていたらOKです。
次にOpenStackVMのIPアドレスとかホスト名の設定に移ります。これが終わったら外部からsshでログインできます。
nmtuiというコマンドを実行すると以下の画面が表示されます。「Edit a connection」でEnter。
「eth0」が選択された状態なので、Enter。
インターフェースの設定です。「Address/Gateway/DNS」にそれぞれを入力します。このOpenStackVMのIP設定です。普通のWindowsと同じです。
「Automatically Connect」にチェック(スペースバー)を入れて、「OK」
「Quit」
次はホスト名の設定です。再度nmtuiを実行し、「Set system hostname」を選択。
ホスト名に「openstack1」を入力し、「OK」。(何でもいいですけど、出来るだけ合わせて下さい)
「OK」をクリックし、reboot。
以下の画面の通り、ホスト名が変更されている事を確認する。
以上で、基本的なVMのネットワーク設定が完了です。
この時点で、ESXiのvSwitch経由で外部と通信できるはず。つまり、自分の管理用PCからsshできるはず。
(これ以降は画面キャプチャじゃなくてコマンドラインをそのまま貼付けれる。。。。)
OpenStackのインストール
いよいよインストールです!といっても、RDOのAll in oneを使います。
OpenStackそのもののインストール
まずは、LinuxマシンにSSHします。
MacBookAir:~$ ssh root@192.168.1.232 The authenticity of host '192.168.1.232 (192.168.1.232)' can't be established. RSA key fingerprint is 90:93:ad:7c:dd:84:51:4d:80:c4:79:58:1c:bf:cb:2b. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.1.232' (RSA) to the list of known hosts. root@192.168.1.232's password: Last login: Thu Oct 27 08:30:16 2016
RDOの手順通り、/etc/environmentを編集します。コピペでOKです。
[root@openstack1 ~]# vi /etc/environment [root@openstack1 ~]# cat /etc/environment LANG=en_US.utf-8 LC_ALL=en_US.utf-8 [root@openstack1 ~]#
RDOの手順通り、サービスを停止します。コピペでOKです。
sudo systemctl disable firewalld sudo systemctl stop firewalld sudo systemctl disable NetworkManager sudo systemctl stop NetworkManager sudo systemctl enable network sudo systemctl start network
実効結果はこんな感じ。
[root@openstack1 ~]# sudo systemctl disable firewalld Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service. [root@openstack1 ~]# sudo systemctl stop firewalld [root@openstack1 ~]# [root@openstack1 ~]# sudo 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. [root@openstack1 ~]# sudo systemctl stop NetworkManager [root@openstack1 ~]# sudo systemctl enable network network.service is not a native service, redirecting to /sbin/chkconfig. Executing /sbin/chkconfig network on [root@openstack1 ~]# sudo systemctl start network [root@openstack1 ~]#
RDOの手順通り、リポジトリ更新とか、アップデートをしていきます。
・・・の前に、インターネットに繋がるかを確認しておきましょう。yumでインターネットからデータを取得するので、インターネットに繋がらなかったらダメです。
[root@openstack1 ~]# ping www.google.com PING www.google.com (216.58.220.228) 56(84) bytes of data. 64 bytes from nrt13s37-in-f4.1e100.net (216.58.220.228): icmp_seq=1 ttl=52 time=7.13 ms 64 bytes from nrt13s37-in-f4.1e100.net (216.58.220.228): icmp_seq=2 ttl=52 time=6.19 ms 64 bytes from nrt13s37-in-f4.1e100.net (216.58.220.228): icmp_seq=3 ttl=52 time=7.01 ms 64 bytes from nrt13s37-in-f228.1e100.net (216.58.220.228): icmp_seq=4 ttl=52 time=7.14 ms ^C --- www.google.com ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3005ms rtt min/avg/max/mdev = 6.192/6.871/7.143/0.395 ms [root@openstack1 ~]#
OKなので、yumやります。一行ずつ、コピペでOKです。
sudo yum install -y centos-release-openstack-newton sudo yum update -y sudo yum install -y openstack-packstack
基本的に、全て「Complete!」で終わるはず。
ちなみに、yum update -yは5分くらいかかります。落ち着いて待ちましょう。
終わったら、念のためリブートします。
では、いよいよ、OpenStackのインストールです!
前回のリブートでSSHが切れているはずです。SSHでログインしなおします。
MacBookAir:.ssh$ ssh root@192.168.1.232 root@192.168.1.232's password: Last login: Thu Oct 27 09:22:37 2016 from 192.168.1.4 [root@openstack1 ~]#
以下のコマンドでOpenStackをインストールします。RDOの手順通り。コピペでOKです。
packstack --allinone --provision-demo=n --os-neutron-ovs-bridge-mappings=extnet:br-ex --os-neutron-ml2-type-drivers=vxlan,flat
このコマンド(というか、インストールスクリプト)は完了するまでかなりかかります。
私と同一の環境を準備していたら10分程で終わるはずです。お茶でも飲んで休憩しましょう。
終わったらこんな感じ。エラーは一切でないはず。
[root@openstack1 ~]# packstack --allinone --provision-demo=n --os-neutron-ovs-bridge-mappings=extnet:br-ex --os-neutron-ml2-type-drivers=vxlan,flat Welcome to the Packstack setup utility The installation log file is available at: /var/tmp/packstack/20161027-092611-jiWc3i/openstack-setup.log Packstack changed given value to required value /root/.ssh/id_rsa.pub Installing: Clean Up [ DONE ] Discovering ip protocol version [ DONE ] Setting up ssh keys [ DONE ] Preparing servers [ DONE ] Pre installing Puppet and discovering hosts' details [ DONE ] Preparing pre-install entries [ DONE ] Setting up CACERT [ DONE ] Preparing AMQP entries [ DONE ] Preparing MariaDB entries [ DONE ] Fixing Keystone LDAP config parameters to be undef if empty[ DONE ] Preparing Keystone entries [ DONE ] Preparing Glance entries [ DONE ] Checking if the Cinder server has a cinder-volumes vg[ DONE ] Preparing Cinder entries [ DONE ] Preparing Nova API entries [ DONE ] Creating ssh keys for Nova migration [ DONE ] Gathering ssh host keys for Nova migration [ DONE ] Preparing Nova Compute entries [ DONE ] Preparing Nova Scheduler entries [ DONE ] Preparing Nova VNC Proxy entries [ DONE ] Preparing OpenStack Network-related Nova entries [ DONE ] Preparing Nova Common entries [ DONE ] Preparing Neutron LBaaS Agent entries [ DONE ] Preparing Neutron API entries [ DONE ] Preparing Neutron L3 entries [ DONE ] Preparing Neutron L2 Agent entries [ DONE ] Preparing Neutron DHCP Agent entries [ DONE ] Preparing Neutron Metering Agent entries [ DONE ] Checking if NetworkManager is enabled and running [ DONE ] Preparing OpenStack Client entries [ DONE ] Preparing Horizon entries [ DONE ] Preparing Swift builder entries [ DONE ] Preparing Swift proxy entries [ DONE ] Preparing Swift storage entries [ DONE ] Preparing Gnocchi entries [ DONE ] Preparing MongoDB entries [ DONE ] Preparing Redis entries [ DONE ] Preparing Ceilometer entries [ DONE ] Preparing Aodh entries [ DONE ] Preparing Nagios server entries [ DONE ] Preparing Nagios host entries [ DONE ] Preparing Puppet manifests [ DONE ] Copying Puppet modules and manifests [ DONE ] Applying 192.168.1.232_controller.pp 192.168.1.232_controller.pp: [ DONE ] Applying 192.168.1.232_network.pp 192.168.1.232_network.pp: [ DONE ] Applying 192.168.1.232_compute.pp 192.168.1.232_compute.pp: [ DONE ] Applying Puppet manifests [ DONE ] Finalizing [ DONE ] **** Installation completed successfully ****** Additional information: * A new answerfile was created in: /root/packstack-answers-20161027-092611.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.1.232. To use the command line tools you need to source the file. * To access the OpenStack Dashboard browse to http://192.168.1.232/dashboard . Please, find your login credentials stored in the keystonerc_admin in your home directory. * To use Nagios, browse to http://192.168.1.232/nagios username: nagiosadmin, password: 1621639dd0bc4e03 * The installation log file is available at: /var/tmp/packstack/20161027-092611-jiWc3i/openstack-setup.log * The generated manifests are available at: /var/tmp/packstack/20161027-092611-jiWc3i/manifests [root@openstack1 ~]
念のため、リブートします。(このタイミングからOpenStackが既に入っているので、リブートにも少し時間がかかります)
リブートでSSHが切れているはずなので、再度ログインし直します。
外部接続用のブリッジ作成(br-ex)
次に、br-exの作成です。この辺もRDOを参考にします。
ifcfg-eth0をコピーして作ります。以下の通りやればOKなはず。
コピーして・・・
[root@openstack1 ~]# cd /etc/sysconfig/network-scripts/ [root@openstack1 network-scripts]# ls ifcfg-eno16777984 ifdown-ovs ifup-eth ifup-sit ifcfg-eno16777984.old ifdown-post ifup-ib ifup-Team ifcfg-eth0 ifdown-ppp ifup-ippp ifup-TeamPort ifcfg-lo ifdown-routes ifup-ipv6 ifup-tunnel ifdown ifdown-sit ifup-isdn ifup-wireless ifdown-bnep ifdown-Team ifup-ovs init.ipv6-global ifdown-eth ifdown-TeamPort ifup-plip network-functions ifdown-ib ifdown-tunnel ifup-plusb network-functions-ipv6 ifdown-ippp ifup ifup-post ifdown-ipv6 ifup-aliases ifup-ppp ifdown-isdn ifup-bnep ifup-routes [root@openstack1 network-scripts]# cp -p ifcfg-eth0 ifcfg-br-ex [root@openstack1 network-scripts]#
ifcfg-br-exをviなどで以下の通り修正。
[root@openstack1 network-scripts]# cat ifcfg-br-ex DEVICE=br-ex DEVICETYPE=ovs TYPE=OVSBridge BOOTPROTO=static IPADDR=192.168.1.232 # Old eth0 IP since we want the network restart to not # kill the connection, otherwise pick something outside your dhcp range NETMASK=255.255.255.0 # your netmask GATEWAY=192.168.1.1 # your gateway DNS1=8.8.8.8 # your nameserver ONBOOT=yes
というか、ぶっちゃけ、上記をそのまま新規ファイルにコピーした方がいいかもしれません。IPは適宜直して欲しいのですが、上記以外の情報は含めなくてよいです。
次に、ifcfg-eth0を修正。
[root@openstack1 network-scripts]# cat ifcfg-eth0 DEVICE=eth0 TYPE=OVSPort DEVICETYPE=ovs OVS_BRIDGE=br-ex ONBOOT=yes [root@openstack1 network-scripts]#
これはまんまコピーで大丈夫なはず。
よく色んなサイトに同様の情報がありますが、「このパラメーター以外に、既にあった値は残した方が良いのか?」とか不安になりますが、上記まんまで大丈夫です。つまり、例えばifcfg-eth0のファイルの中にはIPアドレスの情報とかは、ない。
リブートします。
成功していたら、少なくとも今までと同様にSSHでログインできるはず。(実は、ここが一番苦労したので気合い入っています)。
外部ネットワーク周りの作成
External Networkを作ります。一行ずつコピペでOK。
. keystonerc_admin neutron net-create external_network --provider:network_type flat --provider:physical_network extnet --router:external
ちなみに、出力結果はこんな感じ。
[root@openstack1 ~]# . keystonerc_admin [root@openstack1 ~(keystone_admin)]# neutron net-create external_network --provider:network_type flat --provider:physical_network extnet --router:external Created a new network: +---------------------------+--------------------------------------+ | Field | Value | +---------------------------+--------------------------------------+ | admin_state_up | True | | availability_zone_hints | | | availability_zones | | | created_at | 2016-10-27T14:00:45Z | | description | | | id | 235a4548-b451-400e-9476-6bab64f0c525 | | ipv4_address_scope | | | ipv6_address_scope | | | is_default | False | | mtu | 1500 | | name | external_network | | project_id | ab80d72a86e04402bc12cfb2e3d22e5b | | provider:network_type | flat | | provider:physical_network | extnet | | provider:segmentation_id | | | revision_number | 2 | | router:external | True | | shared | False | | status | ACTIVE | | subnets | | | tags | | | tenant_id | ab80d72a86e04402bc12cfb2e3d22e5b | | updated_at | 2016-10-27T14:00:45Z | +---------------------------+--------------------------------------+ [root@openstack1 ~(keystone_admin)]#
サブネットを作ります(この辺はDashboardでも良いのですが、コマンドで)
- allocation poolのstart,end:OpenStackが作るGuestOSに割り当てるグローバルIPのプールみたいなもの。ESXiとかに割り当てた外部IPから20個程予約して下さい。(実際はGuestOSにじかに割り当てられるものではないが、とりあえずこの通りやって下さい)
- gateway:自分の家のネットワークのインターネットにアクセスするゲートウェイ。
neutron subnet-create --name public_subnet --enable_dhcp=False --allocation-pool=start=192.168.1.150,end=192.168.1.170 --gateway=192.168.1.1 external_network 192.168.1.0/24
出力結果はこんな感じ。
[root@openstack1 ~(keystone_admin)]# neutron subnet-create --name public_subnet --enable_dhcp=False --allocation-pool=start=192.168.1.150,end=192.168.1.170 --gateway=192.168.1.1 external_network 192.168.1.0/24 Created a new subnet: +-------------------+----------------------------------------------------+ | Field | Value | +-------------------+----------------------------------------------------+ | allocation_pools | {"start": "192.168.1.150", "end": "192.168.1.170"} | | cidr | 192.168.1.0/24 | | created_at | 2016-10-27T14:01:29Z | | description | | | dns_nameservers | | | enable_dhcp | False | | gateway_ip | 192.168.1.1 | | host_routes | | | id | 78a48bfb-8e43-430a-b081-d2c844398338 | | ip_version | 4 | | ipv6_address_mode | | | ipv6_ra_mode | | | name | public_subnet | | network_id | 235a4548-b451-400e-9476-6bab64f0c525 | | project_id | ab80d72a86e04402bc12cfb2e3d22e5b | | revision_number | 2 | | service_types | | | subnetpool_id | | | tenant_id | ab80d72a86e04402bc12cfb2e3d22e5b | | updated_at | 2016-10-27T14:01:29Z | +-------------------+----------------------------------------------------+ [root@openstack1 ~(keystone_admin)]#
OpenStack上に載せるVMのイメージ作成
次に、OpenStackのWeb画面を経由でメージを作ります。以下の手順に沿ったら大丈夫です。
まず、OSイメージをネットから取得します。Fedoraを取得します。
上記リンクの「Fedora-Cloud-Base-24-1.2.x86_64.qcow2」をダウンロードします。
いよいよ、OpenStackのWebにアクセスします。ご自身のLinuxVMのIPアドレスにアクセスします。
(今回の例だと、192.168.1.232です。URLに「192.168.1.232」と入力すると、自動的に以下に遷移します)
UserNameは「admin」パスワードは、以下で確認した「OS_PASSWORD」文字列を入れます。
[root@openstack1 ~(keystone_admin)]# cat keystonerc_admin unset OS_SERVICE_TOKEN export OS_USERNAME=admin export OS_PASSWORD=9e27a56a0426407b export OS_AUTH_URL=http://192.168.1.232:5000/v2.0 export PS1='[\u@\h \W(keystone_admin)]\$ ' export OS_TENANT_NAME=admin export OS_REGION_NAME=RegionOne [root@openstack1 ~(keystone_admin)]#
つまり、私の環境では「9e27a56a0426407b」をパスワード欄に入れます。
「Connect」を押したら、ログインできるはず。
以下は英語で申し訳ないのですが「プロジェクト」→「コンピュート」→「イメージ」へ遷移します。
「イメージの作成」をクリックします。
すると、中央に以下のエラー(日本語)が出るはずです。。大丈夫です。
これを今から修正します。
SSHでログインし、以下のコマンドを入力して下さい。一行ずつコピペでOKです。
(yum install時にはYesと答える)
yum remove openstack-dashboard rm -rf /etc/openstack-dashboard yum install openstack-dashboard
実効結果はこんな感じ。
[root@openstack1 ~]# yum remove openstack-dashboard Loaded plugins: fastestmirror Resolving Dependencies --> Running transaction check ---> Package openstack-dashboard.noarch 1:10.0.0-1.el7 will be erased --> Finished Dependency Resolution Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Removing: openstack-dashboard noarch 1:10.0.0-1.el7 @centos-openstack-newton 57 M Transaction Summary ================================================================================ Remove 1 Package Installed size: 57 M Is this ok [y/N]: y Downloading packages: Running transaction check Running transaction test Transaction test succeeded Running transaction Erasing : 1:openstack-dashboard-10.0.0-1.el7.noarch 1/1 warning: file /usr/share/openstack-dashboard/static/horizon/.eslintrc: remove failed: No such file or directory warning: file /usr/share/openstack-dashboard/static/framework/.eslintrc: remove failed: No such file or directory warning: file /usr/share/openstack-dashboard/static/auth/.eslintrc: remove failed: No such file or directory warning: /etc/openstack-dashboard/local_settings saved as /etc/openstack-dashboard/local_settings.rpmsave warning: /etc/httpd/conf.d/openstack-dashboard.conf saved as /etc/httpd/conf.d/openstack-dashboard.conf.rpmsave Verifying : 1:openstack-dashboard-10.0.0-1.el7.noarch 1/1 Removed: openstack-dashboard.noarch 1:10.0.0-1.el7 Complete! [root@openstack1 ~]# rm -rf /etc/openstack-dashboard [root@openstack1 ~]# yum install openstack-dashboard Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: ftp.iij.ad.jp * extras: ftp.iij.ad.jp * updates: ftp.iij.ad.jp Resolving Dependencies --> Running transaction check ---> Package openstack-dashboard.noarch 1:10.0.0-1.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: openstack-dashboard noarch 1:10.0.0-1.el7 centos-openstack-newton 11 M Transaction Summary ================================================================================ Install 1 Package Total download size: 11 M Installed size: 57 M Is this ok [y/d/N]: y Downloading packages: openstack-dashboard-10.0.0-1.el7.noarch.rpm | 11 MB 00:04 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : 1:openstack-dashboard-10.0.0-1.el7.noarch 1/1 Verifying : 1:openstack-dashboard-10.0.0-1.el7.noarch 1/1 Installed: openstack-dashboard.noarch 1:10.0.0-1.el7 Complete! [root@openstack1 ~]#
/etc/openstack-dashboard/local_settingsの”ALLOWED_HOSTS”を以下の通り修正します。
変更前
ALLOWED_HOSTS = ['horizon.example.com', 'localhost']
変更後
ALLOWED_HOSTS = ['*', ]
リブートし、再度イメージ作成画面に移動して下さい。(ちなみに、リブートされてからWebが起動するまで少し時間がかかるので、落ち着いて)
そして、先ほどの手順でイメージ作成画面に戻ってみて下さい。
エラーが消えたはずです。
次に進みましょう。
この画面で、以下の通り入力します。以下の3つの項目だけで良いです。「イメージの作成をクリック」
- イメージ名:Fedora
- ファイル:先ほどダウンロードしたFedoraのファイルを設定。
- Format:QCOW2-QEMU Emulator
ここからは日本語です。
イメージの作成が正常に完了したはずです。
Privateネットワーク作成
OpenStackで作ったVM同士が通信するPrivateネットワークを作ります。
「プロジェクト」→「ネットワーク」→「ネットワーク」をクリック。
「ネットワークの作成」をクリック。
以下の通り入力し、「サブネット」をクリック。
以下の通り入力して下さい。このIPはこれまで入力してきた家のLANとは別物なので、何でも大丈夫です。でも、以下の手順と整合を合わせる為に、全く同じ値を入力して下さい。
「サブネットの詳細」をクリック。
以下と同じ値を入力し、「作成」をクリック。
Privateネットワークができました。
ルーター等、残りのネットワーク設定
続いて、ルーターを作成します。左の「ルーター」をクリック。
「ルーターの作成」をクリック。
以下の通り入力し、「ルーターの作成」をクリック。
ルーターが作成されました。作成したルーター「router_admin」をクリック。
「インターフェース」をクリック。
「インターフェースの追加」をクリック。
以下の通り選択し、「送信」をクリック。(IPアドレスは入力しないでもよいです)
左上の「ゲートウェイの設定」をクリック。
以下の通り設定し、「送信」をクリック。(ルーターIDは気にせず)
ルーターが出来ました。
念のため、確認のため、左の「ネットワークトポロジー」をクリックします。以下のようにルーターとネットワークが繋がっているはず。さらに、「トポロジー」タブをクリック。
こんな感じで、セグメント間にルーターがあることが解ります。
アクセス制御設定
次に、アクセスの設定(NSXのDFWのようなもの)を設定します。
「プロジェクト」→「コンピュート」→「アクセスとセキュリティー」をクリック。
「default」の「ルールの管理」をクリック。
「ルールの追加」をクリック。
ルールから「すべてのICMP」を選択し、「追加」をクリック。(他は自動的に入力されます)
同じ要領で、SSHも追加。
結果は、以下のようになるはずです。
次に、SSHキーの作成を行います。
コンソールから、以下を入力して下さい。
source keystonerc_admin nova keypair-add admin > admin_key.pem
結果はこんな感じです。
[root@openstack1 ~]# source keystonerc_admin [root@openstack1 ~(keystone_admin)]# nova keypair-add admin > admin_key.pem [root@openstack1 ~(keystone_admin)]# ls -l total 64 -rw-r--r--. 1 root root 1676 Oct 27 10:35 admin_key.pem -rw-------. 1 root root 958 Oct 27 09:12 anaconda-ks.cfg -rw-------. 1 root root 262 Oct 27 09:32 keystonerc_admin -rw-------. 1 root root 49806 Oct 27 09:26 packstack-answers-20161027-092611.txt [root@openstack1 ~(keystone_admin)]#
以上で、OpenStack上でVMを作る準備ができました!休憩しましょう!
次は、いよいよクライマックス。VMを作ります!
OpenStackでVM(インスタンス)の作成
では、最後です。
「プロジェクト」→「コンピューと」インスタンスをクリック。
右の「インスタンスを起動」をクリック。
これまでのピースを全て繋げます。
インスタンス名は何でも良いです。好きな名前を入れて、「次へ」をクリック。
以下のような画面になります。ここで、事前に作成したFedoraのイメージを選択したいのです。
下の「Fedora」の右っかわに+マークがあります。これをクリックします。
すると、上に移動したのがわかるはずです。こんな要領で、以下もやっていきます。
「ボリュームサイズ」を10にして、「次へ」をクリック。
「m1.small」を選択して、「次へ」をクリック。(画面の通りでOK)
「private」だけを選択肢、「次へ」をクリック。(つまり、external_networkは選択しない)
そのまま「次へ」
既に「default」が選択されているので、そのまま「次へ」
これも既に「admin」が選択されてるのでOKです。「インスタンスの起動」をクリック。
以上で、VMが作られるはずです。。待てば
出来ました!しかし、この段階では外部からアクセスが出来ません、右の「スナップショットの作成」の右の三角を押して、「Floating IPの割り当て」をクリック。
「確保済みの・・・」の右のプラスをクリック。
プールを選択し、以下の通りになっていることを確認して、「IPの確保」をクリック。
「IPアドレス」を確認し、「割り当て」をクリック。
インスタンスの横に「Floating IP」が表示されたら、成功です。このIPアドレスに対して、外部からアクセスできます。
試しにPINGしてみます。
[root@openstack1 ~]# ping 192.168.1.160 PING 192.168.1.160 (192.168.1.160) 56(84) bytes of data. 64 bytes from 192.168.1.160: icmp_seq=1 ttl=63 time=3.71 ms 64 bytes from 192.168.1.160: icmp_seq=2 ttl=63 time=0.322 ms ^C --- 192.168.1.160 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1001ms rtt min/avg/max/mdev = 0.322/2.017/3.712/1.695 ms [root@openstack1 ~]#
OKですね!
うまくいかなかったら、手順を見直して下さい
上記は私の環境で10回以上試して動作している手順です。
なので、もしうまくいかなかったら、手順を見落としている可能性があるので、再度確認して下さい。
また、くどいようですが、私と同じ環境を構築している方が無難です。
コメント
ESXiの記事、こちらの記事ともに非常に参考になりました。
ありがとうございます!
記事を見てくれてありがとうございます。
また、参考になったみたいで嬉しいです。この記事はかなり時間をかけたので・・・
Hyper-Vでも、本手順でOpenStackが構築できました。
大変、参考になりました。
遅くなってすいません(スパムが多くて・・・)
少しでも有用な情報が提供できたみたいで嬉しいです!
インストールしてどんなものか動かしたいだけならばこんなやり方しないで、
以下のようなRDOに沿ってやるほうがよっぽど楽だし簡単でした。
https://www.rdoproject.org/install/packstack/
https://www.server-world.info/query?os=CentOS_7&p=openstack_ocata2&f=17
コメントありがとうございます。
参考にさせて頂きます!