AWS上にopenstackを構築

はじめに

以下openstack公式サイトの手順を参照して実施しました。
https://docs.openstack.org/devstack/latest/

前提

AWSアカウントを持っています。

大まかな手順

  1. VPCを作成
  2. サブネットを作成
  3. セキュリティーグループを作成
  4. インターネットゲートウェイを作成
  5. ロールを作成
  6. インスタンスを作成
  7. devstackをインストール
  8. EIPを作成
  9. openstackダッシュボードを確認

構成手順

①VPCを作成

AWSコンソールへログイン

MFAコードを入力する

サービス検索欄に「VPC」を入力、VPC画面を開きます。「VPC作成」ボタンをクリックします。

ipv4 CIDRの値は「10.0.0.0/16」でよく利用していると思いますが、devstackがインストール際に、hostipを検知エラーの可能性があるので、他のCIDRを利用したほうがよいです。こちらは10.50.0.0/16で設定しました。

VPC作成できたことを確認します。

②サブネット作成

「VPC」サービス画面で、「サブネット」をクリック、「サブネット作成」をクリックします。

先程新規したVPCを選択します。

サブネット名は自由に記入いただき、IPv4 CIDRブロックは「10.50.1.0/24」で設定します。

サブネット作成完了しました。

③セキュリティーグループを作成

「VPC」サービス画面で、「セキュリティーグループ」をクリック、「セキュリティーグループ作成」をクリックします。

「セキュリティーグループ名」は自由入力、「説明」欄はセキュリティーグループ名と同じ内容で入力します。「VPC」は先程新規したVPCを選択します。

以下の通りにインバウンドとアウトバウンドを設定し、「セキュリティーグループの作成」ボタンをクリックします。
インバウンドの設定値:SSH すべて、HTTP すべて;
アウトバウンド設定値:すべてを許可します。

セキュリティーグループを作成完了しました。インバウンドとアウトバウンドの値を再度確認します。

アウトバウンドの設定値を確認します。

④インターネットゲートウェイを作成

「VPC」サービス画面で、「インターネットゲートウェイ」をクリック、「インターネットゲートウェイの作成」をクリックします。

インターネットゲートウェイの名前を入力し、「インターネットゲートウェイ」の作成をクリックします。

作成したインターネットゲートウェイをVPCにアタッチします。

先程新規したVPCを選択します。

サブネットからインターネットゲートウェイの通信経路を設定します。左側のメニューから「サブネット」をクリックし、先程新規したサブネットを選択し、ルートテーブルのURLをクリックし、ルートテーブル画面へ遷移します。

「ルートテーブル」画面から「ルールを編集」クリック、ルールを追加します。

送信先は「0.0.0.0/0」を入力し、ターゲットはプルダウンメニューから「インターネットゲートウェイ」をクリックし、先程新規したインターネットゲートウェイを選択します。

⑤ロールを作成

サービス欄から「IAM」を入力し、IAM管理画面へ遷移します。

左メニューから「ロール」をクリックし、「ロールを作成」ボタンをクリックします。

エンティティは以下の通りに設定します。

ポリシーは「AmazonSSMManagedInstanceCore」を選択します。

作成したことを確認します。

⑥ec2インスタンスを作成

いよいよインスタンスを作成します。

ec2ダッシュボードからインスタンスを起動します。

名前を入力し、インスタンスタイプを「ubuntu」を選択します。

openstackはvCPUは4以上必要ので、t2.xlargeでもできるかもしれませんが、念のためt2.2xlargeを選択しました。

新しいキーペアを作成します。

名前を入力してキーペアを作成します。

ダウンロードできたことを確認します。

ネットワーク設定します。「編集」ボタンをクリックします。

先程新規したVPC、サブネット、セキュリティーグループを選択します。

ストレージを30GBに設定します。

先程新規したロールを選択します。

以上で「インスタンスを起動」ボタンをクリックします。1分程度でインスタンス作成できます。

⑦devstackを構築

インスタンスへ接続する前に、先程ダウンロードしたキーペアファイルをpowershellの直下へ配置必要です、こちらのpowershellのディレクトリは「C:\Users\waninryu」ですので、C:\Users\waninryuの直下にopenstack-demo.pemを配置しました。

ローカルSSHクライアントからインスタンスへ接続。自分はwindowsを利用しているので、powershellで接続します。macを利用している場合ターミナルを利用いただければと思います。

質問が来たら「yes」を入力します。

openstack公式サイトのDevStack構築手順から、順番でコマンドを実行します。
devstackディレクトリへ移動出来たら、local.confファイルを編集します。公式サイトに記載した通りに「samples」フォルダにlocal.confサンプルファイルがあります。local.confファイルはdevstackの直下に配置しないと、devstackが検知されません。

  • sudo 1. useradd -s /bin/bash -d /opt/stack -m stack
  • sudo chmod +x /opt/stack
  • echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack
  • sudo -u stack -i
  • git clone https://opendev.org/openstack/devstack
  • cd devstack
  • cp samples/local.conf local.conf
  • vi local.conf

こちらの内容を以下に変更します。
ADMIN_PASSWORD=secret
DATABASE_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD

変更した内容を確認します。
コマンド:cat local.conf

インストール開始します。15分程度かかります。
コマンド: ./stack.sh

インストール完了した画面です。ログインユーザーが二つあります。
ログインuser①:admin
ログインuser②:domo
とパスワード:secret
openstackダッシュボードへアクセスIPはインスタンスのプライベートIPですので、直接アクセスできません。EIPを追加します。

⑧EIPを作成

ブラウザからhttpでアクセスできるように、EIPを作成します。

EIPアドレスを割り当てます。

EIPをインスタンスと関連付けます。

先程新規したインスタンスに関連付けます。

⑨openstackダッシュボードを確認します。

EIPのipアドレスをブラウザに入力します。

openstackへログイン

ダッシュボードを確認します。

以上、構築完了しました。注意必要なのは、インスタンスタイプです、スペースが足りない場合、インストールが途中で止まってしまいます。


Last modified: 2023-05-12

Author