Keystone v3: различия между версиями
Материал из noname.com.ua
Перейти к навигацииПерейти к поискуSirmax (обсуждение | вклад) |
Sirmax (обсуждение | вклад) |
||
Строка 10: | Строка 10: | ||
* Пользователи в LDAP (LDAP поставить локально для теста) |
* Пользователи в LDAP (LDAP поставить локально для теста) |
||
* выдавать токены |
* выдавать токены |
||
+ | * OS - CentOS7 |
||
+ | |||
+ | ==Apache== |
||
+ | Кейстоун это WSGI-приложение и деплоить его нужно соответственно под apache (другие варианты не пробовал) |
||
+ | <BR> |
||
+ | ДУмаю что это не слишком безопасная настройка с <B> DocumentRoot "/usr/bin"</B> но для тестового сервера вполне. |
||
+ | <PRE> |
||
+ | /etc/httpd/conf.d/keystone.conf |
||
+ | </PRE> |
||
+ | <PRE> |
||
+ | <VirtualHost 0.0.0.0:35357> |
||
+ | ServerName node-1.domain.tld |
||
+ | |||
+ | DocumentRoot "/usr/bin" |
||
+ | |||
+ | <Directory "/usr/bin"> |
||
+ | Options Indexes FollowSymLinks MultiViews |
||
+ | AllowOverride None |
||
+ | Require all granted |
||
+ | </Directory> |
||
+ | |||
+ | ErrorLog "/var/log/httpd/keystone_wsgi_admin_error.log" |
||
+ | ServerSignature Off |
||
+ | CustomLog "/var/log/httpd/keystone_wsgi_admin_access.log" "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b %D \"%{Referer}i\" \"%{User-Agent}i\"" |
||
+ | WSGIApplicationGroup apache |
||
+ | WSGIDaemonProcess keystone_admin display-name=keystone-admin group=keystone processes=1 threads=3 user=keystone |
||
+ | WSGIProcessGroup keystone_admin |
||
+ | WSGIScriptAlias / "/usr/bin/keystone-wsgi-admin" |
||
+ | WSGIPassAuthorization On |
||
+ | |||
+ | LimitRequestFieldSize 81900 |
||
+ | </VirtualHost> |
||
+ | |||
+ | <VirtualHost 0.0.0.0:5000> |
||
+ | ServerName node-1.domain.tld |
||
+ | |||
+ | ## Vhost docroot |
||
+ | DocumentRoot "/usr/bin" |
||
+ | |||
+ | <Directory "/usr/bin"> |
||
+ | Options Indexes FollowSymLinks MultiViews |
||
+ | AllowOverride None |
||
+ | Require all granted |
||
+ | </Directory> |
||
+ | ErrorLog "/var/log/httpd/keystone_wsgi_main_error.log" |
||
+ | ServerSignature Off |
||
+ | CustomLog "/var/log/httpd/keystone_wsgi_main_access.log" "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b %D \"%{Referer}i\" \"%{User-Agent}i\"" |
||
+ | WSGIApplicationGroup apache |
||
+ | WSGIDaemonProcess keystone_main display-name=keystone-main group=keystone processes=1 threads=3 user=keystone |
||
+ | WSGIProcessGroup keystone_main |
||
+ | WSGIScriptAlias / "/usr/bin/keystone-wsgi-public" |
||
+ | WSGIPassAuthorization On |
||
+ | LimitRequestFieldSize 81900 |
||
+ | </VirtualHost> |
||
+ | </PRE> |
||
+ | Для убунты как минимум пути и имена бинарников будут отличаться |
||
+ | |||
+ | |||
+ | ==keystone.conf== |
||
+ | Настройки близки к минимальным |
||
+ | <PRE> |
||
+ | # cat /etc/keystone/keystone.conf | grep -v '#' | grep -v '^$' |
||
+ | [DEFAULT] |
||
+ | admin_token = z5Oq8GDTtFAvdGsld55WO6os |
||
+ | admin_endpoint = http://172.17.35.25:35357 |
||
+ | max_project_tree_depth = 5 |
||
+ | debug = True |
||
+ | verbose = True |
||
+ | log_file = keystone.log |
||
+ | log_dir = /var/log/keystone |
||
+ | [assignment] |
||
+ | [auth] |
||
+ | [cache] |
||
+ | [catalog] |
||
+ | [cors] |
||
+ | [cors.subdomain] |
||
+ | [credential] |
||
+ | [database] |
||
+ | connection = mysql://keystone:keystone@127.0.0.1/keystone?charset=utf8&read_timeout=60 |
||
+ | [domain_config] |
||
+ | driver = sql |
||
+ | [endpoint_filter] |
||
+ | [endpoint_policy] |
||
+ | [eventlet_server] |
||
+ | [eventlet_server_ssl] |
||
+ | [federation] |
||
+ | [fernet_tokens] |
||
+ | [identity] |
||
+ | default_domain_id = default |
||
+ | domain_specific_drivers_enabled = true |
||
+ | domain_configurations_from_database = false |
||
+ | domain_config_dir = /etc/keystone/domains |
||
+ | driver = sql |
||
+ | [identity_mapping] |
||
+ | [kvs] |
||
+ | [ldap] |
||
+ | [matchmaker_redis] |
||
+ | [memcache] |
||
+ | [oauth1] |
||
+ | [os_inherit] |
||
+ | [oslo_messaging_amqp] |
||
+ | [oslo_messaging_notifications] |
||
+ | [oslo_messaging_rabbit] |
||
+ | [oslo_middleware] |
||
+ | [oslo_policy] |
||
+ | [paste_deploy] |
||
+ | [policy] |
||
+ | [resource] |
||
+ | [revoke] |
||
+ | [role] |
||
+ | [saml] |
||
+ | [shadow_users] |
||
+ | [signing] |
||
+ | [ssl] |
||
+ | [token] |
||
+ | [tokenless_auth] |
||
+ | [trust] |
||
+ | </PRE> |
||
+ | |||
+ | Основаня магия доменов это здесь: |
||
+ | <PRE> |
||
+ | [identity] |
||
+ | default_domain_id = default |
||
+ | domain_specific_drivers_enabled = true |
||
+ | domain_configurations_from_database = false |
||
+ | domain_config_dir = /etc/keystone/domains |
||
+ | driver = sql |
||
+ | </PRE> |
||
+ | Эти настройки значат: |
||
+ | |||
+ | * искать домен-специфичные настройки в каталоге /etc/keystone/domains, имя файла должно быть <B>keystone.<domain_name>.conf</B>, например для моего домена ldaptest: <B>/etc/keystone/domains/keystone.ldaptest.conf</B> |
||
+ | * разрешить использовать разные бекенды для доменов. |
||
+ | |||
+ | На этом этапе подстерегает некоторое число засад |
||
+ | |||
+ | * ни под каким соусом у меня не заработал файл с бекендом SQL - вероятно нельзя создать домен с конфигурацией идентичной дефолтной. |
||
+ | * создавать надо строго в определенном порядке |
||
+ | ** включить опцию <B>domain_specific_drivers_enabled = true</B> |
||
+ | ** подложить файл конфигурации с указаным бекендом (но можно без опций этого бекенда) |
||
+ | ** рестартовать кейстоун |
||
+ | ** создать домен |
||
+ | |||
+ | |||
==openstack клиент== |
==openstack клиент== |
||
Строка 69: | Строка 212: | ||
+----------------------------------+---------+---------+-----------------------------+ |
+----------------------------------+---------+---------+-----------------------------+ |
||
</PRE> |
</PRE> |
||
− | |||
− | |||
− | |||
=Ссылки= |
=Ссылки= |
Версия 14:23, 16 августа 2016
Заметки о кейстоун v3
Задача:
- сконфигурировать отдельно-стоящий кейстоун, другие сервисы опенстека не нужны.
- Пользователи в LDAP (LDAP поставить локально для теста)
- выдавать токены
- OS - CentOS7
Apache
Кейстоун это WSGI-приложение и деплоить его нужно соответственно под apache (другие варианты не пробовал)
ДУмаю что это не слишком безопасная настройка с DocumentRoot "/usr/bin" но для тестового сервера вполне.
/etc/httpd/conf.d/keystone.conf
<VirtualHost 0.0.0.0:35357> ServerName node-1.domain.tld DocumentRoot "/usr/bin" <Directory "/usr/bin"> Options Indexes FollowSymLinks MultiViews AllowOverride None Require all granted </Directory> ErrorLog "/var/log/httpd/keystone_wsgi_admin_error.log" ServerSignature Off CustomLog "/var/log/httpd/keystone_wsgi_admin_access.log" "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b %D \"%{Referer}i\" \"%{User-Agent}i\"" WSGIApplicationGroup apache WSGIDaemonProcess keystone_admin display-name=keystone-admin group=keystone processes=1 threads=3 user=keystone WSGIProcessGroup keystone_admin WSGIScriptAlias / "/usr/bin/keystone-wsgi-admin" WSGIPassAuthorization On LimitRequestFieldSize 81900 </VirtualHost> <VirtualHost 0.0.0.0:5000> ServerName node-1.domain.tld ## Vhost docroot DocumentRoot "/usr/bin" <Directory "/usr/bin"> Options Indexes FollowSymLinks MultiViews AllowOverride None Require all granted </Directory> ErrorLog "/var/log/httpd/keystone_wsgi_main_error.log" ServerSignature Off CustomLog "/var/log/httpd/keystone_wsgi_main_access.log" "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b %D \"%{Referer}i\" \"%{User-Agent}i\"" WSGIApplicationGroup apache WSGIDaemonProcess keystone_main display-name=keystone-main group=keystone processes=1 threads=3 user=keystone WSGIProcessGroup keystone_main WSGIScriptAlias / "/usr/bin/keystone-wsgi-public" WSGIPassAuthorization On LimitRequestFieldSize 81900 </VirtualHost>
Для убунты как минимум пути и имена бинарников будут отличаться
keystone.conf
Настройки близки к минимальным
# cat /etc/keystone/keystone.conf | grep -v '#' | grep -v '^$' [DEFAULT] admin_token = z5Oq8GDTtFAvdGsld55WO6os admin_endpoint = http://172.17.35.25:35357 max_project_tree_depth = 5 debug = True verbose = True log_file = keystone.log log_dir = /var/log/keystone [assignment] [auth] [cache] [catalog] [cors] [cors.subdomain] [credential] [database] connection = mysql://keystone:keystone@127.0.0.1/keystone?charset=utf8&read_timeout=60 [domain_config] driver = sql [endpoint_filter] [endpoint_policy] [eventlet_server] [eventlet_server_ssl] [federation] [fernet_tokens] [identity] default_domain_id = default domain_specific_drivers_enabled = true domain_configurations_from_database = false domain_config_dir = /etc/keystone/domains driver = sql [identity_mapping] [kvs] [ldap] [matchmaker_redis] [memcache] [oauth1] [os_inherit] [oslo_messaging_amqp] [oslo_messaging_notifications] [oslo_messaging_rabbit] [oslo_middleware] [oslo_policy] [paste_deploy] [policy] [resource] [revoke] [role] [saml] [shadow_users] [signing] [ssl] [token] [tokenless_auth] [trust]
Основаня магия доменов это здесь:
[identity] default_domain_id = default domain_specific_drivers_enabled = true domain_configurations_from_database = false domain_config_dir = /etc/keystone/domains driver = sql
Эти настройки значат:
- искать домен-специфичные настройки в каталоге /etc/keystone/domains, имя файла должно быть keystone.<domain_name>.conf, например для моего домена ldaptest: /etc/keystone/domains/keystone.ldaptest.conf
- разрешить использовать разные бекенды для доменов.
На этом этапе подстерегает некоторое число засад
- ни под каким соусом у меня не заработал файл с бекендом SQL - вероятно нельзя создать домен с конфигурацией идентичной дефолтной.
- создавать надо строго в определенном порядке
- включить опцию domain_specific_drivers_enabled = true
- подложить файл конфигурации с указаным бекендом (но можно без опций этого бекенда)
- рестартовать кейстоун
- создать домен
openstack клиент
начиная с какого-то момента кейстоун (особенно v3) использует openstack клиент (вместо утилиты keysone)
cat /etc/openstack/clouds.yaml clouds: test: identity-api-version: 3 auth: auth_url: http://172.17.35.25:35357/v3/ project_name: admin username: admin password: admin project_domain_id: default user_domain_id: default region_name: RegionOne
openstack --os-identity-api-version 3 domain create --description "Test sql backend Domain" sql +-------------+----------------------------------+ | Field | Value | +-------------+----------------------------------+ | description | Test sql backend Domain | | enabled | True | | id | 107c679c80264cc080c439a784d95466 | | name | sql | +-------------+----------------------------------+
openstack --os-identity-api-version 3 domain create --description "Test ldap backend Domain" ldap +-------------+----------------------------------+ | Field | Value | +-------------+----------------------------------+ | description | Test ldap backend Domain | | enabled | True | | id | 0799329296c64c3192d3479cd2c18614 | | name | ldap | +-------------+----------------------------------+
openstack --debug --os-cloud test domain list +----------------------------------+---------+---------+-----------------------------+ | ID | Name | Enabled | Description | +----------------------------------+---------+---------+-----------------------------+ | 0799329296c64c3192d3479cd2c18614 | ldap | True | Test ldap backend Domain | | 107c679c80264cc080c439a784d95466 | sql | True | Test sql backend Domain | | a9ec41aca45b4c5691068a81bb259592 | test1 | True | Test 1 Domain | | default | Default | True | The default domain | +----------------------------------+---------+---------+-----------------------------+
Ссылки
- https://ask.openstack.org/en/question/57508/why-my-openstackclient-doesnt-work-with-keystone-v3-api/
- http://docs.openstack.org/mitaka/install-guide-obs/keystone-users.html
- http://docs.openstack.org/admin-guide/keystone-integrate-assignment-backend-ldap.html
- http://www.ibm.com/developerworks/cloud/library/cl-ldap-keystone/
- http://docs.openstack.org/admin-guide/keystone-integrate-identity-backend-ldap.html
- http://docs.openstack.org/admin-guide/keystone-integrate-with-ldap.html
- http://www.ibm.com/developerworks/cloud/library/cl-ldap-keystone/