|
...
|
...
|
@@ -28,16 +28,6 @@ export SERVICE_TOKEN=$SERVICE_TOKEN
|
|
28
|
28
|
export SERVICE_ENDPOINT=$SERVICE_ENDPOINT
|
|
29
|
29
|
SERVICE_TENANT_NAME=${SERVICE_TENANT_NAME:-service}
|
|
30
|
30
|
|
|
31
|
|
-function get_id () {
|
|
32
|
|
- echo `"$@" | awk '/ id / { print $4 }'`
|
|
33
|
|
-}
|
|
34
|
|
-
|
|
35
|
|
-# Lookups
|
|
36
|
|
-SERVICE_TENANT=$(keystone tenant-list | awk "/ $SERVICE_TENANT_NAME / { print \$2 }")
|
|
37
|
|
-ADMIN_ROLE=$(keystone role-list | awk "/ admin / { print \$2 }")
|
|
38
|
|
-MEMBER_ROLE=$(keystone role-list | awk "/ Member / { print \$2 }")
|
|
39
|
|
-
|
|
40
|
|
-
|
|
41
|
31
|
# Roles
|
|
42
|
32
|
# -----
|
|
43
|
33
|
|
|
...
|
...
|
@@ -45,53 +35,52 @@ MEMBER_ROLE=$(keystone role-list | awk "/ Member / { print \$2 }")
|
|
45
|
45
|
# The admin role in swift allows a user to act as an admin for their tenant,
|
|
46
|
46
|
# but ResellerAdmin is needed for a user to act as any tenant. The name of this
|
|
47
|
47
|
# role is also configurable in swift-proxy.conf
|
|
48
|
|
-RESELLER_ROLE=$(get_id keystone role-create --name=ResellerAdmin)
|
|
|
48
|
+keystone role-create --name=ResellerAdmin
|
|
49
|
49
|
# Service role, so service users do not have to be admins
|
|
50
|
|
-SERVICE_ROLE=$(get_id keystone role-create --name=service)
|
|
|
50
|
+keystone role-create --name=service
|
|
51
|
51
|
|
|
52
|
52
|
|
|
53
|
53
|
# Services
|
|
54
|
54
|
# --------
|
|
55
|
55
|
|
|
56
|
56
|
if [[ "$ENABLED_SERVICES" =~ "n-api" ]] && [[ "$ENABLED_SERVICES" =~ "s-proxy" || "$ENABLED_SERVICES" =~ "swift" ]]; then
|
|
57
|
|
- NOVA_USER=$(keystone user-list | awk "/ nova / { print \$2 }")
|
|
58
|
57
|
# Nova needs ResellerAdmin role to download images when accessing
|
|
59
|
58
|
# swift through the s3 api.
|
|
60
|
59
|
keystone user-role-add \
|
|
61
|
|
- --tenant-id $SERVICE_TENANT \
|
|
62
|
|
- --user-id $NOVA_USER \
|
|
63
|
|
- --role-id $RESELLER_ROLE
|
|
|
60
|
+ --tenant $SERVICE_TENANT_NAME \
|
|
|
61
|
+ --user nova \
|
|
|
62
|
+ --role ResellerAdmin
|
|
64
|
63
|
fi
|
|
65
|
64
|
|
|
66
|
65
|
# Heat
|
|
67
|
66
|
if [[ "$ENABLED_SERVICES" =~ "heat" ]]; then
|
|
68
|
|
- HEAT_USER=$(get_id keystone user-create --name=heat \
|
|
|
67
|
+ keystone user-create --name=heat \
|
|
69
|
68
|
--pass="$SERVICE_PASSWORD" \
|
|
70
|
|
- --tenant_id $SERVICE_TENANT \
|
|
71
|
|
- --email=heat@example.com)
|
|
72
|
|
- keystone user-role-add --tenant-id $SERVICE_TENANT \
|
|
73
|
|
- --user-id $HEAT_USER \
|
|
74
|
|
- --role-id $SERVICE_ROLE
|
|
|
69
|
+ --tenant $SERVICE_TENANT_NAME \
|
|
|
70
|
+ --email=heat@example.com
|
|
|
71
|
+ keystone user-role-add --tenant $SERVICE_TENANT_NAME \
|
|
|
72
|
+ --user heat \
|
|
|
73
|
+ --role service
|
|
75
|
74
|
# heat_stack_user role is for users created by Heat
|
|
76
|
75
|
keystone role-create --name heat_stack_user
|
|
77
|
76
|
if [[ "$KEYSTONE_CATALOG_BACKEND" = 'sql' ]]; then
|
|
78
|
|
- HEAT_CFN_SERVICE=$(get_id keystone service-create \
|
|
|
77
|
+ keystone service-create \
|
|
79
|
78
|
--name=heat-cfn \
|
|
80
|
79
|
--type=cloudformation \
|
|
81
|
|
- --description="Heat CloudFormation Service")
|
|
|
80
|
+ --description="Heat CloudFormation Service"
|
|
82
|
81
|
keystone endpoint-create \
|
|
83
|
82
|
--region RegionOne \
|
|
84
|
|
- --service_id $HEAT_CFN_SERVICE \
|
|
|
83
|
+ --service heat-cfn \
|
|
85
|
84
|
--publicurl "http://$SERVICE_HOST:$HEAT_API_CFN_PORT/v1" \
|
|
86
|
85
|
--adminurl "http://$SERVICE_HOST:$HEAT_API_CFN_PORT/v1" \
|
|
87
|
86
|
--internalurl "http://$SERVICE_HOST:$HEAT_API_CFN_PORT/v1"
|
|
88
|
|
- HEAT_SERVICE=$(get_id keystone service-create \
|
|
|
87
|
+ keystone service-create \
|
|
89
|
88
|
--name=heat \
|
|
90
|
89
|
--type=orchestration \
|
|
91
|
|
- --description="Heat Service")
|
|
|
90
|
+ --description="Heat Service"
|
|
92
|
91
|
keystone endpoint-create \
|
|
93
|
92
|
--region RegionOne \
|
|
94
|
|
- --service_id $HEAT_SERVICE \
|
|
|
93
|
+ --service heat \
|
|
95
|
94
|
--publicurl "http://$SERVICE_HOST:$HEAT_API_PORT/v1/\$(tenant_id)s" \
|
|
96
|
95
|
--adminurl "http://$SERVICE_HOST:$HEAT_API_PORT/v1/\$(tenant_id)s" \
|
|
97
|
96
|
--internalurl "http://$SERVICE_HOST:$HEAT_API_PORT/v1/\$(tenant_id)s"
|
|
...
|
...
|
@@ -100,23 +89,23 @@ fi
|
|
100
|
100
|
|
|
101
|
101
|
# Glance
|
|
102
|
102
|
if [[ "$ENABLED_SERVICES" =~ "g-api" ]]; then
|
|
103
|
|
- GLANCE_USER=$(get_id keystone user-create \
|
|
|
103
|
+ keystone user-create \
|
|
104
|
104
|
--name=glance \
|
|
105
|
105
|
--pass="$SERVICE_PASSWORD" \
|
|
106
|
|
- --tenant_id $SERVICE_TENANT \
|
|
107
|
|
- --email=glance@example.com)
|
|
|
106
|
+ --tenant $SERVICE_TENANT_NAME \
|
|
|
107
|
+ --email=glance@example.com
|
|
108
|
108
|
keystone user-role-add \
|
|
109
|
|
- --tenant-id $SERVICE_TENANT \
|
|
110
|
|
- --user-id $GLANCE_USER \
|
|
111
|
|
- --role-id $ADMIN_ROLE
|
|
|
109
|
+ --tenant $SERVICE_TENANT_NAME \
|
|
|
110
|
+ --user glance \
|
|
|
111
|
+ --role admin
|
|
112
|
112
|
if [[ "$KEYSTONE_CATALOG_BACKEND" = 'sql' ]]; then
|
|
113
|
|
- GLANCE_SERVICE=$(get_id keystone service-create \
|
|
|
113
|
+ keystone service-create \
|
|
114
|
114
|
--name=glance \
|
|
115
|
115
|
--type=image \
|
|
116
|
|
- --description="Glance Image Service")
|
|
|
116
|
+ --description="Glance Image Service"
|
|
117
|
117
|
keystone endpoint-create \
|
|
118
|
118
|
--region RegionOne \
|
|
119
|
|
- --service_id $GLANCE_SERVICE \
|
|
|
119
|
+ --service glance \
|
|
120
|
120
|
--publicurl "http://$SERVICE_HOST:9292" \
|
|
121
|
121
|
--adminurl "http://$SERVICE_HOST:9292" \
|
|
122
|
122
|
--internalurl "http://$SERVICE_HOST:9292"
|
|
...
|
...
|
@@ -125,25 +114,25 @@ fi
|
|
125
|
125
|
|
|
126
|
126
|
# Ceilometer
|
|
127
|
127
|
if [[ "$ENABLED_SERVICES" =~ "ceilometer" ]]; then
|
|
128
|
|
- CEILOMETER_USER=$(get_id keystone user-create --name=ceilometer \
|
|
|
128
|
+ keystone user-create --name=ceilometer \
|
|
129
|
129
|
--pass="$SERVICE_PASSWORD" \
|
|
130
|
|
- --tenant_id $SERVICE_TENANT \
|
|
131
|
|
- --email=ceilometer@example.com)
|
|
132
|
|
- keystone user-role-add --tenant-id $SERVICE_TENANT \
|
|
133
|
|
- --user-id $CEILOMETER_USER \
|
|
134
|
|
- --role-id $ADMIN_ROLE
|
|
|
130
|
+ --tenant $SERVICE_TENANT_NAME \
|
|
|
131
|
+ --email=ceilometer@example.com
|
|
|
132
|
+ keystone user-role-add --tenant $SERVICE_TENANT_NAME \
|
|
|
133
|
+ --user ceilometer \
|
|
|
134
|
+ --role admin
|
|
135
|
135
|
# Ceilometer needs ResellerAdmin role to access swift account stats.
|
|
136
|
|
- keystone user-role-add --tenant-id $SERVICE_TENANT \
|
|
137
|
|
- --user-id $CEILOMETER_USER \
|
|
138
|
|
- --role-id $RESELLER_ROLE
|
|
|
136
|
+ keystone user-role-add --tenant $SERVICE_TENANT_NAME \
|
|
|
137
|
+ --user ceilometer \
|
|
|
138
|
+ --role ResellerAdmin
|
|
139
|
139
|
if [[ "$KEYSTONE_CATALOG_BACKEND" = 'sql' ]]; then
|
|
140
|
|
- CEILOMETER_SERVICE=$(get_id keystone service-create \
|
|
|
140
|
+ keystone service-create \
|
|
141
|
141
|
--name=ceilometer \
|
|
142
|
142
|
--type=metering \
|
|
143
|
|
- --description="Ceilometer Service")
|
|
|
143
|
+ --description="Ceilometer Service"
|
|
144
|
144
|
keystone endpoint-create \
|
|
145
|
145
|
--region RegionOne \
|
|
146
|
|
- --service_id $CEILOMETER_SERVICE \
|
|
|
146
|
+ --service ceilometer \
|
|
147
|
147
|
--publicurl "http://$SERVICE_HOST:8777" \
|
|
148
|
148
|
--adminurl "http://$SERVICE_HOST:8777" \
|
|
149
|
149
|
--internalurl "http://$SERVICE_HOST:8777"
|
|
...
|
...
|
@@ -153,13 +142,13 @@ fi
|
|
153
|
153
|
# EC2
|
|
154
|
154
|
if [[ "$ENABLED_SERVICES" =~ "n-api" ]]; then
|
|
155
|
155
|
if [[ "$KEYSTONE_CATALOG_BACKEND" = 'sql' ]]; then
|
|
156
|
|
- EC2_SERVICE=$(get_id keystone service-create \
|
|
|
156
|
+ keystone service-create \
|
|
157
|
157
|
--name=ec2 \
|
|
158
|
158
|
--type=ec2 \
|
|
159
|
|
- --description="EC2 Compatibility Layer")
|
|
|
159
|
+ --description="EC2 Compatibility Layer"
|
|
160
|
160
|
keystone endpoint-create \
|
|
161
|
161
|
--region RegionOne \
|
|
162
|
|
- --service_id $EC2_SERVICE \
|
|
|
162
|
+ --service ec2 \
|
|
163
|
163
|
--publicurl "http://$SERVICE_HOST:8773/services/Cloud" \
|
|
164
|
164
|
--adminurl "http://$SERVICE_HOST:8773/services/Admin" \
|
|
165
|
165
|
--internalurl "http://$SERVICE_HOST:8773/services/Cloud"
|
|
...
|
...
|
@@ -169,13 +158,13 @@ fi
|
|
169
|
169
|
# S3
|
|
170
|
170
|
if [[ "$ENABLED_SERVICES" =~ "n-obj" || "$ENABLED_SERVICES" =~ "swift3" ]]; then
|
|
171
|
171
|
if [[ "$KEYSTONE_CATALOG_BACKEND" = 'sql' ]]; then
|
|
172
|
|
- S3_SERVICE=$(get_id keystone service-create \
|
|
|
172
|
+ keystone service-create \
|
|
173
|
173
|
--name=s3 \
|
|
174
|
174
|
--type=s3 \
|
|
175
|
|
- --description="S3")
|
|
|
175
|
+ --description="S3"
|
|
176
|
176
|
keystone endpoint-create \
|
|
177
|
177
|
--region RegionOne \
|
|
178
|
|
- --service_id $S3_SERVICE \
|
|
|
178
|
+ --service s3 \
|
|
179
|
179
|
--publicurl "http://$SERVICE_HOST:$S3_SERVICE_PORT" \
|
|
180
|
180
|
--adminurl "http://$SERVICE_HOST:$S3_SERVICE_PORT" \
|
|
181
|
181
|
--internalurl "http://$SERVICE_HOST:$S3_SERVICE_PORT"
|
|
...
|
...
|
@@ -185,14 +174,14 @@ fi
|
|
185
|
185
|
if [[ "$ENABLED_SERVICES" =~ "tempest" ]]; then
|
|
186
|
186
|
# Tempest has some tests that validate various authorization checks
|
|
187
|
187
|
# between two regular users in separate tenants
|
|
188
|
|
- ALT_DEMO_TENANT=$(get_id keystone tenant-create \
|
|
189
|
|
- --name=alt_demo)
|
|
190
|
|
- ALT_DEMO_USER=$(get_id keystone user-create \
|
|
|
188
|
+ keystone tenant-create \
|
|
|
189
|
+ --name=alt_demo
|
|
|
190
|
+ keystone user-create \
|
|
191
|
191
|
--name=alt_demo \
|
|
192
|
192
|
--pass="$ADMIN_PASSWORD" \
|
|
193
|
|
- --email=alt_demo@example.com)
|
|
|
193
|
+ --email=alt_demo@example.com
|
|
194
|
194
|
keystone user-role-add \
|
|
195
|
|
- --tenant-id $ALT_DEMO_TENANT \
|
|
196
|
|
- --user-id $ALT_DEMO_USER \
|
|
197
|
|
- --role-id $MEMBER_ROLE
|
|
|
195
|
+ --tenant alt_demo \
|
|
|
196
|
+ --user alt_demo \
|
|
|
197
|
+ --role Member
|
|
198
|
198
|
fi
|