AWS(EC2)上にOpenStackを構築する方法【Queens】

OpenStackをオンプレ上に検証環境(勉強用の環境)を立ち上げるとなると結構ややこしいですよね。
コンポーネントごとにサーバを分ける必要がありますし、ノードもそれに合わせて準備する必要がありますし・・・。

OpenStack Kiloのバージョンの時にオンプレで検証環境を一度準備したことがあったのですが、OpenStackの簡易的な検証をする必要が再度あったので、今回はAWS上で簡単に作れるか試してみました!

All-In-Oneのパッケージがあるようで、すべてのコンポーネントを1つのサーバで簡単に構築が出来そうだったので今回はAll-In-OneのパッケージをEC2上で展開していきたいと思います。
導入するバージョンは「Queens」を導入します。

注意事項
  • 管理画面(Horizon)はパブリックIPでアクセス出来ますが、NovaのコンソールはローカルIPでのアクセスです。
    VPN経由等でアクセスしないと、サーバのコンソールは開けません。
  • EC2上に構築をするので、ネットワーク周り(Neutron)はほぼ制御出来ません。
  • 画面操作、仮想マシンの立ち上げレベルの学習、検証で使う目的等でしか使えません。

インスタンス(EC2)の作成

AWSマネージメントコンソールから「EC2」のサービスを選択します。

「インスタンスの作成」を選択します。

OpenStackはRHEL、CentOSが対応しておりますが、今回は安価なCentOSで検証します。
「AWS Marketplace」→「CentOSと検索」→「CentOS7(x86_64)-with Updates HVM」を選択します。

インスタンスタイプは、メモリ6GB以上のインスタンスを選択します。
検証で立ち上げるインスタンスのリソースを計算に入れてインスタンスタイプを選んでください。
後から変更も可能です。

詳細の設定はデフォルトのまま次へ。
デフォルトVPC以外の任意のVPCを選択も可能です。

ストレージも立ち上げるインスタンスのリソースを考慮してサイズを変更します。

タグはとりあえずわかりやすいように名前だけつけました。

セキュリティグループは、「HTTP」を追加して作成してください。

キーペアを作成します。
キーペアは、EC2に接続するのに使用します。なくさないように気をつけてください。
また、流出にも気をつけてください。キーペアだけでインスタンスにログイン出来てしまいますので・・・。
キーペアのダウンロードをして、ダウンロードフォルダに「キーペア名.pem」ファイルがあることを確認出来ましたら「インスタンスの作成」を選択します。

作成後は数分で使用可能状態となります。

EIPの固定(パブリックIP静的割当)

インスタンスが作成出来たら、パブリックIPの固定割当を行います。
動的のままだと、EC2を停止するとパブリックIPが動的に変わってしまい、管理画面のアクセスURLが毎回変わってしまいます。
また、後述しますが、Apacheのバーチャルホストの設定も毎回変えなければいけなくなるので管理しやすいようにパブリックIPを固定してしまいます。

EC2のマネジメントコンソールから「Elastic IP」→「新しいアドレスの割り当て」を選択します。

「割り当て」を選択します。

割り当てが成功すれば「閉じる」を選択します。

次に先ほど作成したEC2にアドレスを割り当てます。
1個パブリックIPがElastic IPのメニューに存在していると思いますので、チェックボックスにチェックを付けて「アクション」→「アドレスの関連付け」を選択します。

リソースタイプは「インスタンス」を選択し、先ほど作成したEC2、EC2のプライベートIPを選択して「関連付け」を選択します。

関連付けが成功すれば以下の画面が表示されます。

OpenStack(Queens)のインストール

パブリックIPが固定できたので、EC2に接続します。

まずは、作成したキーペアを作業ディレクトリにコピーして権限を変更します。
ターミナルを開いて、作成したキーペア名でコピー、及び権限変更を行ってください。

cp Downloads/OpenStack.pem ./
chmod 400 OpenStack.pem

キーペア名の「*****.pem」は作成した名前で置き換えてください。

次にマネジメントコンソールから「EC2」を選択し、「インスタンス」→「接続」を選択します。

パブリックDNSで接続するコマンドが表示されます。
赤枠のコマンドを実行してください。

ssh -i "OpenStack.pem" centos@ec2-**パブリックIP**.ap-northeast-1.compute.amazonaws.com

※ユーザ名は、「root」ではなく、「centos」に変更してください。

Are you sure you want to continue connecting (yes/no)? と表示されたら「yes」と入力してEnterキーを押してください。

とりあえずvimをインストールします。
Vimじゃなくても良い方は飛ばしてください。

sudo yum install vim

Firewallを無効にします。※インストールに失敗したら無効化でもOKです。

systemctl disable firewalld 
systemctl stop firewalld 
systemctl status firewalld

NetworkManagerも無効化します。※インストールに失敗したら無効化でもOKです。

systemctl disable NetworkManager 
systemctl stop NetworkManager
systemctl status NetworkManager

次にSELinuxの停止をします。

sudo vim /etc/selinux/config

以下を参照にSELINUXを「disabled」に変更。

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled ←変更箇所
# SELINUXTYPE= can take one of three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

再起動で反映させます。

sudo shutdown -r now

次にyumアップデートします。

sudo yum update -y

アップデート後、いよいよOpenStackをインストールします。

sudo yum install centos-release-openstack-queens

次にOpenStackのインストーラであるPackstackをインストールします。

sudo yum install -y openstack-packstack

Packstackを実行してOpenStackをインストールします。

sudo packstack --allinone

Testing if puppet apply is finished: **ローカルIP**_controller.pp[]

上記メッセージが表示されましたら、20〜40分くらいインストールがかかりますので、お待ち下さい。

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

と表示されましたらインストール完了です。

以上の段階までで、VPNやDirectConnect経由でローカルIPアクセスが可能な方は、

http://(ローカルIP)/dashboard/

でアクセス可能です。

パブリックIPでアクセスされる方はApacheのバーチャルホストを追加します。
追加しない状態だと、404 Not Foundが表示されます。

以下のコマンドを実行し、ファイルを編集します。

sudo vim /etc/httpd/conf.d/15-horizon_vhost.conf

パブリックDNSとパブリックIPの2行追加します。

ServerAlias ec2-****.ap-northeast-1.compute.amazonaws.com
ServerAlias **パブリックIP**

※パブリックDNS、及びパブリックIPは、ご自身のEC2環境に置き換えてください。

Apacheの再起動をして反映させます。

sudo  systemctl  restart  httpd

バーチャルホストを追加後、以下のURLでアクセスが可能なはずです。

http://(パブリックDNS or パブリックIP)/dashboard/

ログイン画面が表示されたらインストール成功です。

パスワードは、以下のコマンドを実行してパスワードを確認します。

sudo cat /root/keystonerc_admin

export OS PASSWORDにパスワードが記載されています。

unset OS_SERVICE_TOKEN
    export OS_USERNAME=admin
    export OS_PASSWORD='ここに記載'
    export OS_REGION_NAME=RegionOne
    export OS_AUTH_URL=http://**ローカルIP**: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

ユーザ名は「admin」です。(画像は間違えてます)

ログインが正常に行えれば以下の画面が表示されます。

以上でOpenStack(Qeens)のインストールが完了です。
お疲れさまでした。

あとはOpenStack上に仮想マシンなどを立ち上げて検証してください。

ただ、冒頭に記載しているとおりローカルIPでしか仮想マシンのコンソールが使えないので注意してください。

以下の書籍は、執筆がLibertyやKiloの時の書籍で少し古いですが、各コンポーネントの役割などわかりやすいです。

この記事が誰かの参考になれば幸いです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です