CentOS Stream 9
Sponsored Link

OpenStack Zed : Keystone 設定 #12022/11/10

 
OpenStack Identity Service (Keystone) をインストールします。
当例では以下のような環境に Keystone をインストールします。
        eth0|10.0.0.30 
+-----------+-----------+
|   [ dlp.srv.world ]   |
|     (Control Node)    |
|                       |
|  MariaDB    RabbitMQ  |
|  Memcached  Nginx     |
|  Keystone   httpd     |
+-----------------------+

[1] Keystone 用のユーザーとデータベースを MariaDB に作成しておきます。
[root@dlp ~]#
mysql

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.5.16-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> create database keystone; 
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> grant all privileges on keystone.* to keystone@'localhost' identified by 'password'; 
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> grant all privileges on keystone.* to keystone@'%' identified by 'password'; 
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> flush privileges; 
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> exit
Bye
[2] Keystone をインストールします。
# Zed, EPEL からインストール

[root@dlp ~]#
dnf --enablerepo=centos-openstack-zed,epel -y install openstack-keystone python3-openstackclient httpd mod_ssl python3-mod_wsgi python3-oauth2client mod_ssl
[3] Keystone の基本設定です。
[root@dlp ~]#
vi /etc/keystone/keystone.conf
# 443行目 : Memcache サーバーを追記

memcache_servers = dlp.srv.world:11211
# 678行目 : MariaDB に作成した Keystone DB を追記

connection = mysql+pymysql://keystone:password@dlp.srv.world/keystone
[token]
# 2626行目 : コメント解除

provider = fernet
[root@dlp ~]#
su -s /bin/bash keystone -c "keystone-manage db_sync"
# キー初期化

[root@dlp ~]#
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone

[root@dlp ~]#
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
# Keystone ホストを定義

[root@dlp ~]#
export controller=dlp.srv.world
# keystone ブートストラップ
# [adminpassword] の箇所は任意の管理者パスワードを設定

[root@dlp ~]#
keystone-manage bootstrap --bootstrap-password adminpassword \
--bootstrap-admin-url https://$controller:5000/v3/ \
--bootstrap-internal-url https://$controller:5000/v3/ \
--bootstrap-public-url https://$controller:5000/v3/ \
--bootstrap-region-id RegionOne
[4] SELinux を有効にしている場合は、ブール値の変更が必要です。
[root@dlp ~]#
setsebool -P httpd_use_openstack on

[root@dlp ~]#
setsebool -P httpd_can_network_connect on

[root@dlp ~]#
setsebool -P httpd_can_network_connect_db on

[root@dlp ~]#
vi keystone-httpd.te
# 以下の内容で新規作成

module keystone-httpd 1.0;

require {
        type httpd_t;
        type keystone_var_lib_t;
        type keystone_log_t;
        class file { create getattr ioctl open read write };
        class dir { add_name create write };
}

#============= httpd_t ==============
allow httpd_t keystone_var_lib_t:dir { add_name create write };
allow httpd_t keystone_var_lib_t:file { create open write getattr ioctl open read };
allow httpd_t keystone_log_t:dir { add_name write };
allow httpd_t keystone_log_t:file create;

[root@dlp ~]#
checkmodule -m -M -o keystone-httpd.mod keystone-httpd.te

[root@dlp ~]#
semodule_package --outfile keystone-httpd.pp --module keystone-httpd.mod

[root@dlp ~]#
semodule -i keystone-httpd.pp

[5] Firewalld を有効にしている場合は、サービスポートの許可が必要です。
[root@dlp ~]#
firewall-cmd --add-port=5000/tcp

success
[root@dlp ~]#
firewall-cmd --runtime-to-permanent

success
[6]
SSL/TLS 証明書を取得、または、自己署名のSSL/TLS 証明書を作成しておきます。
当例では取得した正規の証明書で進めます。
[7] Keystone 用の設定ファイルを有効にして Apache httpd を起動します。
[root@dlp ~]#
vi /etc/httpd/conf/httpd.conf
# 101行目 : 自身のサーバー名を追記

ServerName dlp.srv.world
[root@dlp ~]#
vi /usr/share/keystone/wsgi-keystone.conf
# SSL の設定を追記

Listen 5000

<VirtualHost *:5000>
    SSLEngine on
    SSLHonorCipherOrder on
    SSLCipherSuite PROFILE=SYSTEM
    SSLProxyCipherSuite PROFILE=SYSTEM
    SSLCertificateFile /etc/letsencrypt/live/dlp.srv.world/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/dlp.srv.world/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/dlp.srv.world/chain.pem
    WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
    WSGIProcessGroup keystone-public
.....
.....

[root@dlp ~]#
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/

[root@dlp ~]#
systemctl enable --now httpd

関連コンテンツ