関連記事
- CloudStack 4.18をUbuntu 22.04 LTSにインストールしてみた
- CloudStack 4.18をUbuntu 22.04 LTSにインストール: ネットワーク設定
- CloudStack 4.18をUbuntu 22.04 LTSにインストール: マネージメントサーバー
- CloudStack 4.18をUbuntu 22.04 LTSにインストール: ストレージ&システムVMイメージ設定
- CloudStack 4.18をUbuntu 22.04 LTSにインストール: エージェント(KVMホスト)
- CloudStack 4.18をUbuntu 22.04 LTSにインストール: マネージメントコンソールからのセットアップ
- CloudStack 4.18をUbuntu 22.04 LTSにインストール: GPUパススルー
- CloudStack 4.18をUbuntu 22.04 LTSにインストール: ゲストネットワークにL2ネットワークを設定
CloudStack パッケージインストール
apt パッケージを使ってインストールするので、鍵のインストールとsource.listにリポジトリを追加します。
$ wget -qO- http://download.cloudstack.org/release.asc | sudo tee /usr/share/keyrings/openstack-keyring.asc
$ sudo vi /etc/apt/sources.list.d/cloudstack.list
cloudstack.list に下記を追記します。
deb [arch=amd64 signed-by=/usr/share/keyrings/openstack-keyring.asc] http://download.cloudstack.org/ubuntu jammy 4.18
apt update してマネジメントサーバーとデータベースのパッケージをインストールします。
$ sudo apt update
$ sudo apt install cloudstack-management mysql-server
MySQLをセットアップ
mysqld.conf ファイルを開いて設定をおこないます。
$ sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld] 直下に下記を追加し、保存して閉じます。
server-id=1
innodb_rollback_on_timeout=1
innodb_lock_wait_timeout=600
max_connections=350
log-bin=mysql-bin
binlog-format='ROW'
次は cloudstack.cnf ファイルを新規作成します。
$ sudo vi /etc/mysql/conf.d/cloudstack.cnf
下記を設定して保存します。
[mysqld]
設定が終わったらMySQL再起動。
$ sudo systemctl restart mysql
接続確認
ここでブラウザからマネジメントサーバーにアクセスして接続確認をおこないます。
IPアドレスは読み替えてください。ポート番号は8080です。
http://192.168.1.16:8080/client
id/pw: admin / password
マネジメントサーバーをセットアップ
初期データ投入
cloudstack-setup-databases コマンドを使ってマネジメントサーバーのシードデータを投入します。
$ sudo cloudstack-setup-databases cloud:XXXXXXXXXXXXXXXXXXXXXXXX@localhost --deploy-as=root -i whale.ntlscd.priv
cloud:XXXXXXXXXXXXXXXXXXXXXXXX@localhost の部分はデータベースへの接続情報です。
ユーザ名: cloud
パスワード: XXXXXXXXXXXXXXXXXXXXXXXX
データベースサーバーのホスト名: localhost
になります。
ユーザはこのコマンドで作成されるため、事前にユーザを追加しておく必要はありません。
下のメッセージが表示されたら完了です。
データベースへの接続情報等は db.properties に設定されているので、変更する場合はこのファイルを確認します。(今回はそのまま使います)
CloudStack has successfully initialized database, you can check your database configuration in /etc/cloudstack/management/db.properties
マネジメントサーバーセットアップおよび起動
cloudstack-setup-management コマンドで設定と起動をおこないます。
基本的に自動で設定がおこなわれるので楽ですね。
$ sudo cloudstack-setup-management
$ sudo systemctl status cloudstack-management
$ sudo tail -f /var/log/cloudstack/management/management-server.log
次のメッセージが表示されたら設定・起動は完了です。(ファイアウォールの設定はまた別の投稿で紹介します)
Please ensure ports 8080, 8250, 8443, and 9090 are opened and not firewalled for the management server and not in use by other processes on this host.
cloudstack-setup-management が終わったら、systemctl statusで起動されているか確認します。
この時点で設定は完了してサーバーが起動していますが、初回起動時なので裏でいろいろ設定が走っています。
tail コマンドで表示するログにhealth check の表示が出るまで待ちます。(少し時間かかる)
Usageサーバーインストール
cloudstack-usage パッケージをインストールするのみです。
$ sudo apt install cloudstack-usage
管理画面へのHTTPS接続設定
マネジメントサーバーもSSL証明書の設定をおこなうことでHTTPS接続することもできますが、今回はNginxのリバースプロキシを設定して接続し、Nginx側でHTTPS接続できるように設定します。
最終的に、https://whale.local/ で接続したい。
ちなみに、ホスト名が whale なので、avahi-daemonがインストールされていれば mDNS のチカラで DNS の設定がなくてもwhale.localでアクセスできます。
まずは Nginx をインストール
$ sudo apt install nginx
オレオレCA・オレオレ証明書作成
インターネットから接続できる環境ではないため、Let’s Encryptは使えないのでオレオレ証明書を設定します。
$ sudo mkdir /etc/nginx/certificate
$ cd /etc/nginx
秘密鍵作成
$ sudo openssl genrsa -des3 -out /etc/nginx/certificate/server.key 2048
CSR作成
$ sudo openssl req -new -key /etc/nginx/certificate/server.key -out /etc/nginx/certificate/server.csr
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:Kanagawa
Locality Name (eg, city) []:Yokohama
Organization Name (eg, company) [Internet Widgits Pty Ltd]:NautilusCODE
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:whale.local whale.ntlscd.priv
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
秘密鍵はパスフレーズを解除しておきます。再起動の度にパスフレーズ入力するのも面倒なので…
$ sudo cp -p /etc/nginx/certificate/server.key /etc/nginx/certificate/server.key.orig
$ sudo openssl rsa -in /etc/nginx/certificate/server.key -out /etc/nginx/certificate/server.key
SANで設定するFQDNを登録します。
$ sudo vi /etc/nginx/certificate/san.txt
ドメインは各環境に合わせて変更してください。
subjectAltName = DNS:whale.local, DNS:whale.ntlcd.priv
SSL証明書を発行します。
-daysオプションで有効期限を指定しますが、10年にしました。
$ sudo openssl req -new -x509 -days 3650 -key /etc/nginx/certificate/cloudstack.key -sha512 -out /etc/nginx/certificate/cloudstack.crt
$ sudo openssl x509 -req -days 3650 -in /etc/nginx/certificate/server.csr -signkey /etc/nginx/certificate/server.key -out /etc/nginx/certificate/cloudstack.crt -extfile /etc/nginx/certificate/san.txt
Nginxセットアップ
Webサーバーのバーチャルホスト設定をおこないます。
先ほど作成した秘密鍵、SSL証明を使います。
$ sudo vi /etc/nginx/sites-available/cloudstack
下記設定を登録
server {
listen 443 ssl http2;
server_name whale.local;
access_log /var/log/nginx/whale.local_access.log;
error_log /var/log/nginx/whale.local_error.log;
ssl_certificate /etc/nginx/certificate/cloudstack.crt;
ssl_certificate_key /etc/nginx/certificate/server.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
# HSTS (ngx_http_headers_module is required) (15768000 seconds = 6 months)
add_header Strict-Transport-Security max-age=15768000;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Protocol $scheme;
proxy_pass http://localhost:8080;
}
}
ufw でファイアウォールが443を通す設定をおこないます。
$ sudo ufw allow 443/tcp
バーチャルホストを有効化し、Nginxを再起動。
$ cd /etc/nginx/sites-enabled
$ sudo ln -s ../sites-available/cloudstack .
$ sudo systemctl restart nginx
これで設定完了です。
https://whale.local/ にアクセスできればOKです。
参考情報
マネジメントサーバーのインストール・セットアップはこんな感じです。
まだまだ先は長く、ストレージ(NFS)、エージェントサーバー、ファイアウォールの設定が残っています。
そんで、Webインターフェイスからの設定もあるので、なかなか大変…
関連記事
- CloudStack 4.18をUbuntu 22.04 LTSにインストールしてみた
- CloudStack 4.18をUbuntu 22.04 LTSにインストール: ネットワーク設定
- CloudStack 4.18をUbuntu 22.04 LTSにインストール: マネージメントサーバー
- CloudStack 4.18をUbuntu 22.04 LTSにインストール: ストレージ&システムVMイメージ設定
- CloudStack 4.18をUbuntu 22.04 LTSにインストール: エージェント(KVMホスト)
- CloudStack 4.18をUbuntu 22.04 LTSにインストール: マネージメントコンソールからのセットアップ
- CloudStack 4.18をUbuntu 22.04 LTSにインストール: GPUパススルー
- CloudStack 4.18をUbuntu 22.04 LTSにインストール: ゲストネットワークにL2ネットワークを設定