python openstack oslo_config使用_centos7+openstack (2) keystone配置

这篇文章内容主要描述如何配置keystone

先生成一个token

[root@localhost ~]# openssl rand -hex 10

f0d1ce6d4da5928849fa

修改/etc/keystone/keystone.conf

admin_token = f0d1ce6d4da5928849fa

verbose = true

[database]

connection = mysql://keystone:keystone@192.168.1.151/keystone

# mysql://keystone:your_password_of_user_keystone@192.168.1.151/keystone

# 生产环境密码要换一下

[memcache]

servers = 192.168.1.151:11211

[revoke]

driver = sql

[token]

provider = fernet

driver = memcache

内容有点乱, 再对比一下,一共7处改动

[root@localhost ~]# cat /etc/keystone/keystone.conf|grep -v "^#"|grep -v "^$"

[DEFAULT]

admin_token = f0d1ce6d4da5928849fa

verbose = true

[assignment]

[auth]

[cache]

[catalog]

[cors]

[cors.subdomain]

[credential]

[database]

connection = mysql://keystone:keystone@192.168.1.151/keystone

[domain_config]

[endpoint_filter]

[endpoint_policy]

[eventlet_server]

[eventlet_server_ssl]

[federation]

[fernet_tokens]

[identity]

[identity_mapping]

[kvs]

[ldap]

[matchmaker_redis]

[matchmaker_ring]

[memcache]

servers = 192.168.1.151:11211

[oauth1]

[os_inherit]

[oslo_messaging_amqp]

[oslo_messaging_qpid]

[oslo_messaging_rabbit]

[oslo_middleware]

[oslo_policy]

[paste_deploy]

[policy]

[resource]

[revoke]

driver = sql

[role]

[saml]

[signing]

[ssl]

[token]

provider = fernet

driver = memcache

[tokenless_auth]

[trust]

调用

keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone

创建数据库表

su -s /bin/sh -c "keystone-manage db_sync" keystone

oslo_config.cfg的错误可以忽略,另外如果你像我一样使用root用户,可以省略su -s

[root@localhost ~]# /bin/sh -c "keystone-manage db_sync" keystone

No handlers could be found for logger "oslo_config.cfg"

[root@localhost ~]#

这里会自动创建一个名为keystone的用户,密码也是keystone,测试一下登录

mysql -h 192.168.1.151 -u keystone -p

启动并且设置开机启动memcached

systemctl enable memcached

systemctl start memcached

下面我们来配置httpd

修改/etc/httpd/conf/httpd.conf , 给ServerName加个值

vi /etc/httpd/conf/httpd.conf

ServerName 172.168.151:80

修改 /etc/httpd/conf.d/wsgi-keystone.conf

vi /etc/httpd/conf.d/wsgi-keystone.conf

Listen 5000

Listen 35357

WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}

WSGIProcessGroup keystone-public

WSGIScriptAlias / /usr/bin/keystone-wsgi-public

WSGIApplicationGroup %{GLOBAL}

WSGIPassAuthorization On

= 2.4>

ErrorLogFormat "%{cu}t %M"

ErrorLog /var/log/httpd/keystone-error.log

CustomLog /var/log/httpd/keystone-access.log combined

= 2.4>

Require all granted

Order allow,deny Allow from all

WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}

WSGIProcessGroup keystone-admin

WSGIScriptAlias / /usr/bin/keystone-wsgi-admin

WSGIApplicationGroup %{GLOBAL}

WSGIPassAuthorization On

= 2.4>

ErrorLogFormat "%{cu}t %M"

ErrorLog /var/log/httpd/keystone-error.log

CustomLog /var/log/httpd/keystone-access.log combined

= 2.4>

Require all granted

Order allow,deny Allow from all

启动httpd

systemctl enable httpd

systemctl start httpd

如果 http 起不来关闭selinux 或者安装yum install openstack-selinux

临时关闭SELinux

setenforce 0

临时打开SELinux

setenforce 1

开机关闭SELinux

编辑/etc/selinux/config文件,将SELINUX的值设置为disabled

查看SELinux状态

执行getenforce命令

此时访问服务器的80端口应该可以看到http已经启动了

我们需要使用一个原始的os token进行初始化配置

export OS_TOKEN=f0d1ce6d4da5928849fa

export OS_URL=http://192.168.1.151:35357/v3

export OS_IDENTITY_API_VERSION=3

创建名为default的domain

openstack domain create default

这里我遇到一点小问题

期初我要使用下面的语句创建domain, 但是遇到35357服务端口报500错误

openstack domain create --description "Default Domain" default

检查tail -500f /var/log/httpd/keystone-error.log

2017-07-09 23:50:36.665062 mod_wsgi (pid=13525): Target WSGI script '/usr/bin/keystone-wsgi-admin' cannot be loaded as Python module.

2017-07-09 23:50:36.665090 mod_wsgi (pid=13525): Exception occurred processing WSGI script '/usr/bin/keystone-wsgi-admin'.

2017-07-09 23:50:36.665108 Traceback (most recent call last):

2017-07-09 23:50:36.665121   File "/usr/bin/keystone-wsgi-admin", line 36, in

2017-07-09 23:50:36.665147     application = initialize_admin_application()

2017-07-09 23:50:36.665154   File "/usr/lib/python2.7/site-packages/keystone/server/wsgi.py", line 78, in initialize_admin_application

2017-07-09 23:50:36.665274     return initialize_application('admin')

2017-07-09 23:50:36.665282   File "/usr/lib/python2.7/site-packages/keystone/server/wsgi.py", line 51, in initialize_application

2017-07-09 23:50:36.665292     common.configure()

2017-07-09 23:50:36.665296   File "/usr/lib/python2.7/site-packages/keystone/server/common.py", line 31, in configure

2017-07-09 23:50:36.665303     config.configure()

2017-07-09 23:50:36.665308   File "/usr/lib/python2.7/site-packages/keystone/common/config.py", line 1204, in configure

2017-07-09 23:50:36.665319     help='Do not monkey-patch threading system modules.'))

2017-07-09 23:50:36.665327   File "/usr/lib/python2.7/site-packages/oslo_config/cfg.py", line 1828, in __inner

2017-07-09 23:50:36.665344     result = f(self, *args, **kwargs)

2017-07-09 23:50:36.665348   File "/usr/lib/python2.7/site-packages/oslo_config/cfg.py", line 2003, in register_cli_opt

2017-07-09 23:50:36.665354     raise ArgsAlreadyParsedError("cannot register CLI option")

2017-07-09 23:50:36.665370 ArgsAlreadyParsedError: arguments already parsed: cannot register CLI option

去掉参数--description "Default Domain"之后,重启了一下httpd,莫名其妙好像故障消除了

其实这次我不太清楚rootcause, 参考下面步骤

[root@localhost ~]# curl http://192.168.1.151:35357

500 Internal Server Error

Internal Server Error

The server encountered an internal error or

misconfiguration and was unable to complete

your request.

Please contact the server administrator at

root@localhost to inform them of the time this error occurred,

and the actions you performed just before this error.

More information about this error may be available

in the server error log.

[root@localhost ~]# openstack domain create default

Internal Server Error (HTTP 500)

[root@localhost ~]# openstack domain create default

Internal Server Error (HTTP 500)

[root@localhost ~]# systemctl restart httpd

[root@localhost ~]# openstack domain create default

Conflict occurred attempting to store domain - Duplicate Entry (HTTP 409) (Request-ID: req-3ae96ef8-cfab-45bc-838c-5b980d0486fb)

[root@localhost ~]# openstack domain create --description "Default Domain" default

Conflict occurred attempting to store domain - Duplicate Entry (HTTP 409) (Request-ID: req-4623ed00-bd7e-4265-a8d5-c071562b3809)

[root@localhost ~]# openstack project create --domain default --description "Admin Project" admin

+-------------+----------------------------------+

| Field       | Value                            |

+-------------+----------------------------------+

| description | Admin Project                    |

| domain_id   | default                          |

| enabled     | True                             |

| id          | dfd06c2e4610414491056a6e1214f1ae |

| is_domain   | False                            |

| name        | admin                            |

| parent_id   | None                             |

+-------------+----------------------------------+

[root@localhost ~]#

创建admin用户

openstack project create --domain default --description "Admin Project" admin

openstack user create --domain default --password-prompt admin

openstack role create admin

openstack role add --project admin --user admin admin

创建一个普通用户demo

openstack project create --domain default --description "Demo Project" demo

openstack user create --domain default --password=demo demo

openstack role create user

openstack role add --project demo --user demo user

创建 service 项目,用来管理其他服务用

openstack project create --domain default --description "Service Project" service

创建 keystone 本身的 service 项目,用来管理其他服务用

openstack service create --name keystone --description "OpenStack Identity" identity

注册keystone 服务,以下三种类型分别为公共的、内部的、管理的。

下面的内容如果填错了可以用 openstack endpoint delete edacf5c1b1ee4633a64744401d466cb2 删除

openstack endpoint create --region RegionOne identity public http://192.168.1.151:5000/v2.0

openstack endpoint create --region RegionOne identity internal http://192.168.1.151:5000/v2.0

openstack endpoint create --region RegionOne identity admin http://192.168.1.151:35357/v2.0

openstack endpoint list 可以看到list

测试获取token

unset OS_TOKEN

unset OS_URL

openstack --os-auth-url http://192.168.1.151:35357/v3 --os-project-domain-id default --os-user-domain-id default --os-project-name admin --os-username admin --os-auth-type password token issue

到此keystone就算安装配置完成了, 我们可以看到成功的从keystone获取了token

如果安装过程中出现错误, 请检查下面两个log文件

tail -500f /var/log/httpd/keystone-error.log

tail -500f /var/log/keystone/keystone.log

如果获取token出现了服务器500错误

2017-07-10 00:56:31.424 16257 INFO keystone.common.wsgi [req-ec8b183b-a8d4-42dd-8279-64aa49c52890 - - - - -] GET http://192.168.1.151:35357/v3/

2017-07-10 00:56:32.205 16258 INFO keystone.common.wsgi [req-77a3586d-158d-44f6-b9e8-ecb1d4b1bb86 - - - - -] POST http://192.168.1.151:35357/v3/auth/tokens

2017-07-10 00:56:32.357 16258 INFO keystone.common.kvs.core [req-77a3586d-158d-44f6-b9e8-ecb1d4b1bb86 - - - - -] Using default dogpile sha1_mangle_key as KVS region token-driver key_mangler

2017-07-10 00:56:40.845 16258 WARNING keystone.common.wsgi [req-77a3586d-158d-44f6-b9e8-ecb1d4b1bb86 - - - - -] An unexpected error prevented the server from fulfilling your request.

2017-07-10 00:56:55.670 16255 INFO keystone.common.wsgi [req-8c5206c9-9acf-49a7-89b4-bfe08dcf540f - - - - -] GET http://192.168.1.151:35357/v3/

2017-07-10 00:56:55.699 16257 INFO keystone.common.wsgi [req-7e279e23-5dd5-49b2-9222-03f8d483b217 - - - - -] POST http://192.168.1.151:35357/v3/auth/tokens

2017-07-10 00:56:55.842 16257 INFO keystone.common.kvs.core [req-7e279e23-5dd5-49b2-9222-03f8d483b217 - - - - -] Using default dogpile sha1_mangle_key as KVS region token-driver key_mangler

2017-07-10 00:57:04.113 16257 WARNING keystone.common.wsgi [req-7e279e23-5dd5-49b2-9222-03f8d483b217 - - - - -] An unexpected error prevented the server from fulfilling your request.

有可能是/etc/keystone/keystone.conf文件中的provider写成了uuid, 换成fernet之后调用

keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone

[token]

...

provider = fernet


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部