Browse code

new keystone support

termie authored on 2012/01/10 15:13:29
Showing 5 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,30 @@
0
+# config for TemplatedCatalog, using camelCase because I don't want to do
1
+# translations for legacy compat
2
+catalog.RegionOne.identity.publicURL = http://%SERVICE_HOST%:$(public_port)s/v2.0
3
+catalog.RegionOne.identity.adminURL = http://%SERVICE_HOST%:$(admin_port)s/v2.0
4
+catalog.RegionOne.identity.internalURL = http://%SERVICE_HOST%:$(public_port)s/v2.0
5
+catalog.RegionOne.identity.name = 'Identity Service'
6
+
7
+
8
+catalog.RegionOne.compute.publicURL = http://%SERVICE_HOST%:8774/v1.1/$(tenant_id)s
9
+catalog.RegionOne.compute.adminURL = http://%SERVICE_HOST%:8774/v1.1/$(tenant_id)s
10
+catalog.RegionOne.compute.internalURL = http://%SERVICE_HOST%:8774/v1.1/$(tenant_id)s
11
+catalog.RegionOne.compute.name = 'Compute Service'
12
+
13
+
14
+catalog.RegionOne.ec2.publicURL = http://%SERVICE_HOST%:8773/services/Cloud
15
+catalog.RegionOne.ec2.adminURL = http://%SERVICE_HOST%:8773/services/Admin
16
+catalog.RegionOne.ec2.internalURL = http://%SERVICE_HOST%:8773/services/Cloud
17
+catalog.RegionOne.ec2.name = 'EC2 Service'
18
+
19
+
20
+catalog.RegionOne.image.publicURL = http://%SERVICE_HOST%:9292/v1
21
+catalog.RegionOne.image.adminURL = http://%SERVICE_HOST%:9292/v1
22
+catalog.RegionOne.image.internalURL = http://%SERVICE_HOST%:9292/v1
23
+catalog.RegionOne.image.name = 'Image Service'
24
+
25
+
26
+catalog.RegionOne.object_store.publicURL = http://%SERVICE_HOST%:8080/v1/AUTH_$(tenant_id)s
27
+catalog.RegionOne.object_store.adminURL = http://%SERVICE_HOST%:8080/
28
+catalog.RegionOne.object_store.internalURL = http://%SERVICE_HOST%:8080/v1/AUTH_$(tenant_id)s
29
+catalog.RegionOne.object_store.name = 'Swift Service'
... ...
@@ -1,112 +1,61 @@
1 1
 [DEFAULT]
2
-# Show more verbose log output (sets INFO log level output)
3
-verbose = False
4
-
5
-# Show debugging output in logs (sets DEBUG log level output)
6
-debug = False
7
-
8
-# Which backend store should Keystone use by default.
9
-# Default: 'sqlite'
10
-# Available choices are 'sqlite' [future will include LDAP, PAM, etc]
11
-default_store = sqlite
12
-
13
-# Log to this file. Make sure you do not set the same log
14
-# file for both the API and registry servers!
15
-log_file = %DEST%/keystone/keystone.log
16
-
17
-# List of backends to be configured
18
-backends = keystone.backends.sqlalchemy
19
-#For LDAP support, add: ,keystone.backends.ldap
20
-
21
-# Dictionary Maps every service to a header.Missing services would get header
22
-# X_(SERVICE_NAME) Key => Service Name, Value => Header Name
23
-service-header-mappings = {
24
-	'nova' : 'X-Server-Management-Url',
25
-	'swift' : 'X-Storage-Url',
26
-	'cdn' : 'X-CDN-Management-Url'}
27
-
28
-#List of extensions currently supported
29
-extensions= osksadm,oskscatalog
30
-
31
-# Address to bind the API server
32
-# TODO Properties defined within app not available via pipeline.
33
-service_host = 0.0.0.0
34
-
35
-# Port the bind the API server to
36
-service_port = 5000
37
-
38
-# SSL for API server
39
-service_ssl = False
40
-
41
-# Address to bind the Admin API server
42
-admin_host = 0.0.0.0
43
-
44
-# Port the bind the Admin API server to
2
+public_port = 5000
45 3
 admin_port = 35357
4
+admin_token = %SERVICE_TOKEN%
5
+log_file = %DEST%/keystone/keystone.log
46 6
 
47
-# SSL for API Admin server
48
-admin_ssl = False
7
+[sql]
8
+connection = %SQL_CONN%
9
+idle_timeout = 30
10
+min_pool_size = 5
11
+max_pool_size = 10
12
+pool_timeout = 200
49 13
 
50
-# Keystone certificate file (modify as needed)
51
-# Only required if *_ssl is set to True
52
-certfile = /etc/keystone/ssl/certs/keystone.pem
14
+[identity]
15
+driver = keystone.backends.sql.SqlIdentity
53 16
 
54
-# Keystone private key file (modify as needed)
55
-# Only required if *_ssl is set to True
56
-keyfile = /etc/keystone/ssl/private/keystonekey.pem
17
+[catalog]
18
+driver = keystone.backends.templated.TemplatedCatalog
19
+template_file = ./etc/default_catalog.templates
57 20
 
58
-# Keystone trusted CA certificates  (modify as needed)
59
-# Only required if *_ssl is set to True
60
-ca_certs = /etc/keystone/ssl/certs/ca.pem
21
+[token]
22
+driver = keystone.backends.kvs.KvsToken
61 23
 
62
-# Client certificate required
63
-# Only relevant if *_ssl is set to True
64
-cert_required = True
24
+[policy]
25
+driver = keystone.backends.policy.SimpleMatch
65 26
 
66
-#Role that allows to perform admin operations.
67
-keystone-admin-role = admin
27
+[filter:debug]
28
+paste.filter_factory = keystone.wsgi:Debug.factory
68 29
 
69
-#Role that allows to perform service admin operations.
70
-keystone-service-admin-role = KeystoneServiceAdmin
30
+[filter:token_auth]
31
+paste.filter_factory = keystone.middleware:TokenAuthMiddleware.factory
71 32
 
72
-#Tells whether password user need to be hashed in the backend
73
-hash-password = True
33
+[filter:admin_token_auth]
34
+paste.filter_factory = keystone.middleware:AdminTokenAuthMiddleware.factory
74 35
 
75
-[keystone.backends.sqlalchemy]
76
-# SQLAlchemy connection string for the reference implementation registry
77
-# server. Any valid SQLAlchemy connection string is fine.
78
-# See: http://bit.ly/ideIpI
79
-sql_connection = %SQL_CONN%
80
-backend_entities = ['UserRoleAssociation', 'Endpoints', 'Role', 'Tenant',
81
-                    'User', 'Credentials', 'EndpointTemplates', 'Token',
82
-                    'Service']
36
+[filter:json_body]
37
+paste.filter_factory = keystone.middleware:JsonBodyMiddleware.factory
83 38
 
84
-# Period in seconds after which SQLAlchemy should reestablish its connection
85
-# to the database.
86
-sql_idle_timeout = 30
39
+[filter:crud_extension]
40
+paste.filter_factory = keystone.service:AdminCrudExtension.factory
87 41
 
88
-[pipeline:admin]
89
-pipeline =
90
-    urlrewritefilter
91
-    admin_api
92 42
 
93
-[pipeline:keystone-legacy-auth]
94
-pipeline =
95
-    urlrewritefilter
96
-    legacy_auth
97
-    service_api
43
+[app:public_service]
44
+paste.app_factory = keystone.service:public_app_factory
98 45
 
99
-[app:service_api]
100
-paste.app_factory = keystone.server:service_app_factory
46
+[app:admin_service]
47
+paste.app_factory = keystone.service:admin_app_factory
101 48
 
102
-[app:admin_api]
103
-paste.app_factory = keystone.server:admin_app_factory
49
+[pipeline:public_api]
50
+pipeline = token_auth admin_token_auth json_body debug public_service
104 51
 
105
-[filter:urlrewritefilter]
106
-paste.filter_factory = keystone.middleware.url:filter_factory
52
+[pipeline:admin_api]
53
+pipeline = token_auth admin_token_auth json_body debug crud_extension admin_service
107 54
 
108
-[filter:legacy_auth]
109
-paste.filter_factory = keystone.frontends.legacy_token_auth:filter_factory
55
+[composite:main]
56
+use = egg:Paste#urlmap
57
+/v2.0 = public_api
110 58
 
111
-[filter:debug]
112
-paste.filter_factory = keystone.common.wsgi:debug_filter_factory
59
+[composite:admin]
60
+use = egg:Paste#urlmap
61
+/v2.0 = admin_api
... ...
@@ -1,54 +1,138 @@
1 1
 #!/bin/bash
2 2
 BIN_DIR=${BIN_DIR:-.}
3 3
 # Tenants
4
-$BIN_DIR/keystone-manage tenant add admin
5
-$BIN_DIR/keystone-manage tenant add demo
6
-$BIN_DIR/keystone-manage tenant add invisible_to_admin
4
+ADMIN_TENANT=`$BIN_DIR/keystone-manage tenant --ks-id-only
5
+                                       create \
6
+                                       tenant_name=admin`
7
+DEMO_TENANT=`$BIN_DIR/keystone-manage tenant --ks-id-only create \
8
+                                      tenant_name=demo`
9
+INVIS_TENANT=`$BIN_DIR/keystone-manage tenant --ks-id-only create \
10
+                                       tenant_name=invisible_to_admin`
11
+
7 12
 
8 13
 # Users
9
-$BIN_DIR/keystone-manage user add admin %ADMIN_PASSWORD%
10
-$BIN_DIR/keystone-manage user add demo %ADMIN_PASSWORD%
14
+ADMIN_USER=`$BIN_DIR/keystone-manage user --ks-id-only create \
15
+                                          name=admin \
16
+                                          "password=%ADMIN_PASSWORD%" \
17
+                                          email=admin@example.com`
18
+DEMO_USER=`$BIN_DIR/keystone-manage user --ks-id-only create \
19
+                                         name=demo \
20
+                                         "password=%ADMIN_PASSWORD%" \
21
+                                         email=demo@example.com`
11 22
 
12 23
 # Roles
13
-$BIN_DIR/keystone-manage role add admin
14
-$BIN_DIR/keystone-manage role add Member
15
-$BIN_DIR/keystone-manage role add KeystoneAdmin
16
-$BIN_DIR/keystone-manage role add KeystoneServiceAdmin
17
-$BIN_DIR/keystone-manage role add sysadmin
18
-$BIN_DIR/keystone-manage role add netadmin
19
-$BIN_DIR/keystone-manage role grant admin admin admin
20
-$BIN_DIR/keystone-manage role grant Member demo demo
21
-$BIN_DIR/keystone-manage role grant sysadmin demo demo
22
-$BIN_DIR/keystone-manage role grant netadmin demo demo
23
-$BIN_DIR/keystone-manage role grant Member demo invisible_to_admin
24
-$BIN_DIR/keystone-manage role grant admin admin demo
25
-$BIN_DIR/keystone-manage role grant admin admin
26
-$BIN_DIR/keystone-manage role grant KeystoneAdmin admin
27
-$BIN_DIR/keystone-manage role grant KeystoneServiceAdmin admin
24
+ADMIN_ROLE=`$BIN_DIR/keystone-manage role --ks-id-only create \
25
+                                          name=Admin`
26
+MEMBER_ROLE=`$BIN_DIR/keystone-manage role --ks-id-only create \
27
+                                           name=Member`
28
+KEYSTONEADMIN_ROLE=`$BIN_DIR/keystone-manage role --ks-id-only create \
29
+                                                  name=KeystoneAdmin`
30
+KEYSTONESERVICE_ROLE=`$BIN_DIR/keystone-manage role --ks-id-only create \
31
+                                                         name=KeystoneServiceAdmin`
32
+SYSADMIN_ROLE=`$BIN_DIR/keystone-manage role --ks-id-only create \
33
+                                             name=sysadmin`
34
+NETADMIN_ROLE=`$BIN_DIR/keystone-manage role --ks-id-only create \
35
+                                             name=netadmin`
36
+
37
+
38
+# Add Roles to Users in Tenants
39
+
40
+$BIN_DIR/keystone-manage role add_user_to_tenant \
41
+                              role_id=$ADMIN_ROLE \
42
+                              user_id=$ADMIN_USER \
43
+                              tenant_id=$ADMIN_TENANT
44
+$BIN_DIR/keystone-manage role add_user_to_tenant \
45
+                              role_id=$MEMBER_ROLE \
46
+                              user_id=$DEMO_USER \
47
+                              tenant_id=$DEMO_TENANT
48
+$BIN_DIR/keystone-manage role add_user_to_tenant \
49
+                              role_id=$SYSADMIN_ROLE \
50
+                              user_id=$DEMO_USER \
51
+                              tenant_id=$DEMO_TENANT
52
+$BIN_DIR/keystone-manage role add_user_to_tenant \
53
+                              role_id=$NETADMIN_ROLE \
54
+                              user_id=$DEMO_USER \
55
+                              tenant_id=$DEMO_TENANT
56
+$BIN_DIR/keystone-manage role add_user_to_tenant \
57
+                              role_id=$MEMBER_ROLE \
58
+                              user_id=$DEMO_USER \
59
+                              tenant_id=$INVIS_TENANT
60
+$BIN_DIR/keystone-manage role add_user_to_tenant \
61
+                              role_id=$ADMIN_ROLE \
62
+                              user_id=$ADMIN_USER \
63
+                              tenant_id=$DEMO_TENANT
64
+
65
+# TODO(termie): these two might be dubious
66
+$BIN_DIR/keystone-manage role add_user_to_tenant \
67
+                              role_id=$KEYSTONEADMIN_ROLE \
68
+                              user_id=$ADMIN_USER \
69
+                              tenant_id=$ADMIN_TENANT
70
+$BIN_DIR/keystone-manage role add_user_to_tenant \
71
+                              role_id=$KEYSTONESERVICE_ROLE \
72
+                              user_id=$ADMIN_USER \
73
+                              tenant_id=$ADMIN_TENANT
28 74
 
29 75
 # Services
30
-$BIN_DIR/keystone-manage service add nova compute "Nova Compute Service"
31
-$BIN_DIR/keystone-manage service add ec2 ec2 "EC2 Compatability Layer"
32
-$BIN_DIR/keystone-manage service add glance image "Glance Image Service"
33
-$BIN_DIR/keystone-manage service add keystone identity "Keystone Identity Service"
76
+$BIN_DIR/keystone-manage service create \
77
+                                 name=nova \
78
+                                 service_type=compute \
79
+                                 "description=Nova Compute Service"
80
+
81
+$BIN_DIR/keystone-manage service create \
82
+                                 name=ec2 \
83
+                                 service_type=ec2 \
84
+                                 "description=EC2 Compatibility Layer"
85
+
86
+$BIN_DIR/keystone-manage service create \
87
+                                 name=glance \
88
+                                 service_type=image \
89
+                                 "description=Glance Image Service"
90
+
91
+$BIN_DIR/keystone-manage service create \
92
+                                 name=keystone \
93
+                                 service_type=identity \
94
+                                 "description=Keystone Identity Service"
34 95
 if [[ "$ENABLED_SERVICES" =~ "swift" ]]; then
35
-    $BIN_DIR/keystone-manage service add swift object-store "Swift Service"
96
+    $BIN_DIR/keystone-manage service create \
97
+                                     name=swift \
98
+                                     service_type=object-store \
99
+                                     "description=Swift Service"
36 100
 fi
37 101
 
38 102
 #endpointTemplates
39
-$BIN_DIR/keystone-manage $* endpointTemplates add RegionOne nova http://%SERVICE_HOST%:8774/v1.1/%tenant_id% http://%SERVICE_HOST%:8774/v1.1/%tenant_id%  http://%SERVICE_HOST%:8774/v1.1/%tenant_id% 1 1
40
-$BIN_DIR/keystone-manage $* endpointTemplates add RegionOne ec2 http://%SERVICE_HOST%:8773/services/Cloud http://%SERVICE_HOST%:8773/services/Admin http://%SERVICE_HOST%:8773/services/Cloud 1 1
41
-$BIN_DIR/keystone-manage $* endpointTemplates add RegionOne glance http://%SERVICE_HOST%:9292/v1 http://%SERVICE_HOST%:9292/v1 http://%SERVICE_HOST%:9292/v1 1 1
42
-$BIN_DIR/keystone-manage $* endpointTemplates add RegionOne keystone %KEYSTONE_SERVICE_PROTOCOL%://%KEYSTONE_SERVICE_HOST%:%KEYSTONE_SERVICE_PORT%/v2.0 %KEYSTONE_AUTH_PROTOCOL%://%KEYSTONE_AUTH_HOST%:%KEYSTONE_AUTH_PORT%/v2.0 %KEYSTONE_SERVICE_PROTOCOL%://%KEYSTONE_SERVICE_HOST%:%KEYSTONE_SERVICE_PORT%/v2.0 1 1
103
+$BIN_DIR/keystone-manage $* endpointTemplates add \
104
+      RegionOne nova
105
+      http://%SERVICE_HOST%:8774/v1.1/%tenant_id%
106
+      http://%SERVICE_HOST%:8774/v1.1/%tenant_id%
107
+      http://%SERVICE_HOST%:8774/v1.1/%tenant_id% 1 1
108
+$BIN_DIR/keystone-manage $* endpointTemplates add
109
+      RegionOne ec2
110
+      http://%SERVICE_HOST%:8773/services/Cloud
111
+      http://%SERVICE_HOST%:8773/services/Admin
112
+      http://%SERVICE_HOST%:8773/services/Cloud 1 1
113
+$BIN_DIR/keystone-manage $* endpointTemplates add
114
+      RegionOne glance
115
+      http://%SERVICE_HOST%:9292/v1
116
+      http://%SERVICE_HOST%:9292/v1
117
+      http://%SERVICE_HOST%:9292/v1 1 1
118
+$BIN_DIR/keystone-manage $* endpointTemplates add
119
+      RegionOne keystone
120
+      http://%SERVICE_HOST%:5000/v2.0
121
+      http://%SERVICE_HOST%:35357/v2.0
122
+      http://%SERVICE_HOST%:5000/v2.0 1 1
43 123
 if [[ "$ENABLED_SERVICES" =~ "swift" ]]; then
44
-    $BIN_DIR/keystone-manage $* endpointTemplates add RegionOne swift http://%SERVICE_HOST%:8080/v1/AUTH_%tenant_id% http://%SERVICE_HOST%:8080/ http://%SERVICE_HOST%:8080/v1/AUTH_%tenant_id% 1 1
124
+    $BIN_DIR/keystone-manage $* endpointTemplates add
125
+        RegionOne swift
126
+        http://%SERVICE_HOST%:8080/v1/AUTH_%tenant_id%
127
+        http://%SERVICE_HOST%:8080/
128
+        http://%SERVICE_HOST%:8080/v1/AUTH_%tenant_id% 1 1
45 129
 fi
46 130
 
47 131
 # Tokens
48
-$BIN_DIR/keystone-manage token add %SERVICE_TOKEN% admin admin 2015-02-05T00:00
132
+#$BIN_DIR/keystone-manage token add %SERVICE_TOKEN% admin admin 2015-02-05T00:00
49 133
 
50 134
 # EC2 related creds - note we are setting the secret key to ADMIN_PASSWORD
51 135
 # but keystone doesn't parse them - it is just a blob from keystone's
52 136
 # point of view
53
-$BIN_DIR/keystone-manage credentials add admin EC2 'admin' '%ADMIN_PASSWORD%' admin || echo "no support for adding credentials"
54
-$BIN_DIR/keystone-manage credentials add demo EC2 'demo' '%ADMIN_PASSWORD%' demo || echo "no support for adding credentials"
137
+#$BIN_DIR/keystone-manage credentials add admin EC2 'admin' '%ADMIN_PASSWORD%' admin || echo "no support for adding credentials"
138
+#$BIN_DIR/keystone-manage credentials add demo EC2 'demo' '%ADMIN_PASSWORD%' demo || echo "no support for adding credentials"
... ...
@@ -1310,6 +1310,11 @@ if [[ "$ENABLED_SERVICES" =~ "key" ]]; then
1310 1310
     cp $FILES/keystone.conf $KEYSTONE_CONF
1311 1311
     sudo sed -e "s,%SQL_CONN%,$BASE_SQL_CONN/keystone,g" -i $KEYSTONE_CONF
1312 1312
     sudo sed -e "s,%DEST%,$DEST,g" -i $KEYSTONE_CONF
1313
+    sudo sed -e "s,%SERVICE_TOKEN%,$SERVICE_TOKEN,g" -i $KEYSTONE_CONF
1314
+
1315
+    KEYSTONE_CATALOG=$KEYSTONE_DIR/etc/default_catalog.template
1316
+    cp $FILES/default_catalog.template $KEYSTONE_CATALOG
1317
+    sudo sed -e "s,%SERVICE_HOST%,$SERVICE_HOST,g" -i $KEYSTONE_CATALOG
1313 1318
 
1314 1319
     # keystone_data.sh creates our admin user and our ``SERVICE_TOKEN``.
1315 1320
     KEYSTONE_DATA=$KEYSTONE_DIR/bin/keystone_data.sh
... ...
@@ -15,7 +15,7 @@ GLANCE_REPO=https://github.com/openstack/glance.git
15 15
 GLANCE_BRANCH=master
16 16
 
17 17
 # unified auth system (manages accounts/tokens)
18
-KEYSTONE_REPO=https://github.com/openstack/keystone.git
18
+KEYSTONE_REPO=https://github.com/termie/keystonelight.git
19 19
 KEYSTONE_BRANCH=master
20 20
 
21 21
 # a websockets/html5 or flash powered VNC console for vm instances