Keystone v3: различия между версиями

Материал из noname.com.ua
Перейти к навигацииПерейти к поиску
Строка 152: Строка 152:
 
** создать домен
 
** создать домен
   
  +
===/keystone.ldaptest.conf===
 
   
 
==openstack клиент==
 
==openstack клиент==

Версия 15:26, 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
    • подложить файл конфигурации с указаным бекендом (но можно без опций этого бекенда)
    • рестартовать кейстоун
    • создать домен

/keystone.ldaptest.conf

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          |
+----------------------------------+---------+---------+-----------------------------+

Ссылки