|
...
|
...
|
@@ -1,165 +1,149 @@
|
|
1
|
1
|
#!/bin/bash
|
|
2
|
|
-# Tenants
|
|
|
2
|
+#
|
|
|
3
|
+# Initial data for Keystone using python-keystoneclient
|
|
|
4
|
+#
|
|
|
5
|
+# A set of EC2-compatible credentials is created for both admin and demo
|
|
|
6
|
+# users and placed in $DEVSTACK_DIR/ec2rc.
|
|
|
7
|
+#
|
|
|
8
|
+# Tenant User Roles
|
|
|
9
|
+# -------------------------------------------------------
|
|
|
10
|
+# admin admin admin
|
|
|
11
|
+# service glance admin
|
|
|
12
|
+# service nova admin
|
|
|
13
|
+# service quantum admin # if enabled
|
|
|
14
|
+# service swift admin # if enabled
|
|
|
15
|
+# demo admin admin
|
|
|
16
|
+# demo demo Member,sysadmin,netadmin
|
|
|
17
|
+# invisible_to_admin demo Member
|
|
|
18
|
+#
|
|
|
19
|
+# Variables set before calling this script:
|
|
|
20
|
+# SERVICE_TOKEN - aka admin_token in keystone.conf
|
|
|
21
|
+# SERVICE_ENDPOINT - local Keystone admin endpoint
|
|
|
22
|
+# SERVICE_TENANT_NAME - name of tenant containing service accounts
|
|
|
23
|
+# ENABLED_SERVICES - stack.sh's list of services to start
|
|
|
24
|
+# DEVSTACK_DIR - Top-level DevStack directory
|
|
|
25
|
+
|
|
|
26
|
+ADMIN_PASSWORD=${ADMIN_PASSWORD:-secrete}
|
|
|
27
|
+SERVICE_PASSWORD=${SERVICE_PASSWORD:-$ADMIN_PASSWORD}
|
|
3
|
28
|
export SERVICE_TOKEN=$SERVICE_TOKEN
|
|
4
|
29
|
export SERVICE_ENDPOINT=$SERVICE_ENDPOINT
|
|
|
30
|
+SERVICE_TENANT_NAME=${SERVICE_TENANT_NAME:-service}
|
|
5
|
31
|
|
|
6
|
32
|
function get_id () {
|
|
7
|
|
- echo `$@ | grep ' id ' | awk '{print $4}'`
|
|
|
33
|
+ echo `$@ | awk '/ id / { print $4 }'`
|
|
8
|
34
|
}
|
|
9
|
35
|
|
|
10
|
|
-# Detect if the keystone cli binary has the command names changed
|
|
11
|
|
-# in https://review.openstack.org/4375
|
|
12
|
|
-# FIXME(dtroyer): Remove the keystone client command checking
|
|
13
|
|
-# after a suitable transition period. add-user-role
|
|
14
|
|
-# and ec2-create-credentials were renamed
|
|
15
|
|
-if keystone help | grep -q user-role-add; then
|
|
16
|
|
- KEYSTONE_COMMAND_4375=1
|
|
17
|
|
-fi
|
|
18
|
|
-
|
|
19
|
|
-ADMIN_TENANT=`get_id keystone tenant-create --name=admin`
|
|
20
|
|
-SERVICE_TENANT=`get_id keystone tenant-create --name=$SERVICE_TENANT_NAME`
|
|
21
|
|
-DEMO_TENANT=`get_id keystone tenant-create --name=demo`
|
|
22
|
|
-INVIS_TENANT=`get_id keystone tenant-create --name=invisible_to_admin`
|
|
|
36
|
+# Tenants
|
|
|
37
|
+ADMIN_TENANT=$(get_id keystone tenant-create --name=admin)
|
|
|
38
|
+SERVICE_TENANT=$(get_id keystone tenant-create --name=$SERVICE_TENANT_NAME)
|
|
|
39
|
+DEMO_TENANT=$(get_id keystone tenant-create --name=demo)
|
|
|
40
|
+INVIS_TENANT=$(get_id keystone tenant-create --name=invisible_to_admin)
|
|
23
|
41
|
|
|
24
|
42
|
|
|
25
|
43
|
# Users
|
|
26
|
|
-ADMIN_USER=`get_id keystone user-create \
|
|
27
|
|
- --name=admin \
|
|
28
|
|
- --pass="$ADMIN_PASSWORD" \
|
|
29
|
|
- --email=admin@example.com`
|
|
30
|
|
-DEMO_USER=`get_id keystone user-create \
|
|
31
|
|
- --name=demo \
|
|
32
|
|
- --pass="$ADMIN_PASSWORD" \
|
|
33
|
|
- --email=admin@example.com`
|
|
|
44
|
+ADMIN_USER=$(get_id keystone user-create --name=admin \
|
|
|
45
|
+ --pass="$ADMIN_PASSWORD" \
|
|
|
46
|
+ --email=admin@example.com)
|
|
|
47
|
+DEMO_USER=$(get_id keystone user-create --name=demo \
|
|
|
48
|
+ --pass="$ADMIN_PASSWORD" \
|
|
|
49
|
+ --email=demo@example.com)
|
|
34
|
50
|
|
|
35
|
51
|
# Roles
|
|
36
|
|
-ADMIN_ROLE=`get_id keystone role-create --name=admin`
|
|
37
|
|
-MEMBER_ROLE=`get_id keystone role-create --name=Member`
|
|
38
|
|
-KEYSTONEADMIN_ROLE=`get_id keystone role-create --name=KeystoneAdmin`
|
|
39
|
|
-KEYSTONESERVICE_ROLE=`get_id keystone role-create --name=KeystoneServiceAdmin`
|
|
40
|
|
-SYSADMIN_ROLE=`get_id keystone role-create --name=sysadmin`
|
|
41
|
|
-NETADMIN_ROLE=`get_id keystone role-create --name=netadmin`
|
|
42
|
|
-
|
|
43
|
|
-
|
|
44
|
|
-if [[ -n "$KEYSTONE_COMMAND_4375" ]]; then
|
|
45
|
|
- # Add Roles to Users in Tenants
|
|
46
|
|
- keystone user-role-add --user $ADMIN_USER --role $ADMIN_ROLE --tenant_id $ADMIN_TENANT
|
|
47
|
|
- keystone user-role-add --user $DEMO_USER --role $MEMBER_ROLE --tenant_id $DEMO_TENANT
|
|
48
|
|
- keystone user-role-add --user $DEMO_USER --role $SYSADMIN_ROLE --tenant_id $DEMO_TENANT
|
|
49
|
|
- keystone user-role-add --user $DEMO_USER --role $NETADMIN_ROLE --tenant_id $DEMO_TENANT
|
|
50
|
|
- keystone user-role-add --user $DEMO_USER --role $MEMBER_ROLE --tenant_id $INVIS_TENANT
|
|
51
|
|
- keystone user-role-add --user $ADMIN_USER --role $ADMIN_ROLE --tenant_id $DEMO_TENANT
|
|
52
|
|
-
|
|
53
|
|
- # TODO(termie): these two might be dubious
|
|
54
|
|
- keystone user-role-add --user $ADMIN_USER --role $KEYSTONEADMIN_ROLE --tenant_id $ADMIN_TENANT
|
|
55
|
|
- keystone user-role-add --user $ADMIN_USER --role $KEYSTONESERVICE_ROLE --tenant_id $ADMIN_TENANT
|
|
56
|
|
-else
|
|
57
|
|
- ### compat
|
|
58
|
|
- # Add Roles to Users in Tenants
|
|
59
|
|
- keystone add-user-role $ADMIN_USER $ADMIN_ROLE $ADMIN_TENANT
|
|
60
|
|
- keystone add-user-role $DEMO_USER $MEMBER_ROLE $DEMO_TENANT
|
|
61
|
|
- keystone add-user-role $DEMO_USER $SYSADMIN_ROLE $DEMO_TENANT
|
|
62
|
|
- keystone add-user-role $DEMO_USER $NETADMIN_ROLE $DEMO_TENANT
|
|
63
|
|
- keystone add-user-role $DEMO_USER $MEMBER_ROLE $INVIS_TENANT
|
|
64
|
|
- keystone add-user-role $ADMIN_USER $ADMIN_ROLE $DEMO_TENANT
|
|
65
|
|
-
|
|
66
|
|
- # TODO(termie): these two might be dubious
|
|
67
|
|
- keystone add-user-role $ADMIN_USER $KEYSTONEADMIN_ROLE $ADMIN_TENANT
|
|
68
|
|
- keystone add-user-role $ADMIN_USER $KEYSTONESERVICE_ROLE $ADMIN_TENANT
|
|
69
|
|
- ###
|
|
70
|
|
-fi
|
|
|
52
|
+ADMIN_ROLE=$(get_id keystone role-create --name=admin)
|
|
|
53
|
+KEYSTONEADMIN_ROLE=$(get_id keystone role-create --name=KeystoneAdmin)
|
|
|
54
|
+KEYSTONESERVICE_ROLE=$(get_id keystone role-create --name=KeystoneServiceAdmin)
|
|
|
55
|
+SYSADMIN_ROLE=$(get_id keystone role-create --name=sysadmin)
|
|
|
56
|
+NETADMIN_ROLE=$(get_id keystone role-create --name=netadmin)
|
|
|
57
|
+
|
|
|
58
|
+
|
|
|
59
|
+# Add Roles to Users in Tenants
|
|
|
60
|
+keystone user-role-add --user $ADMIN_USER --role $ADMIN_ROLE --tenant_id $ADMIN_TENANT
|
|
|
61
|
+keystone user-role-add --user $ADMIN_USER --role $ADMIN_ROLE --tenant_id $DEMO_TENANT
|
|
|
62
|
+keystone user-role-add --user $DEMO_USER --role $SYSADMIN_ROLE --tenant_id $DEMO_TENANT
|
|
|
63
|
+keystone user-role-add --user $DEMO_USER --role $NETADMIN_ROLE --tenant_id $DEMO_TENANT
|
|
|
64
|
+
|
|
|
65
|
+# TODO(termie): these two might be dubious
|
|
|
66
|
+keystone user-role-add --user $ADMIN_USER --role $KEYSTONEADMIN_ROLE --tenant_id $ADMIN_TENANT
|
|
|
67
|
+keystone user-role-add --user $ADMIN_USER --role $KEYSTONESERVICE_ROLE --tenant_id $ADMIN_TENANT
|
|
|
68
|
+
|
|
|
69
|
+
|
|
|
70
|
+# The Member role is used by Horizon and Swift so we need to keep it:
|
|
|
71
|
+MEMBER_ROLE=$(get_id keystone role-create --name=Member)
|
|
|
72
|
+keystone user-role-add --user $DEMO_USER --role $MEMBER_ROLE --tenant_id $DEMO_TENANT
|
|
|
73
|
+keystone user-role-add --user $DEMO_USER --role $MEMBER_ROLE --tenant_id $INVIS_TENANT
|
|
|
74
|
+
|
|
71
|
75
|
|
|
72
|
76
|
# Services
|
|
73
|
|
-keystone service-create \
|
|
74
|
|
- --name=nova \
|
|
75
|
|
- --type=compute \
|
|
76
|
|
- --description="Nova Compute Service"
|
|
77
|
|
-NOVA_USER=`get_id keystone user-create \
|
|
78
|
|
- --name=nova \
|
|
79
|
|
- --pass="$SERVICE_PASSWORD" \
|
|
80
|
|
- --tenant_id $SERVICE_TENANT \
|
|
81
|
|
- --email=nova@example.com`
|
|
|
77
|
+keystone service-create --name=keystone \
|
|
|
78
|
+ --type=identity \
|
|
|
79
|
+ --description="Keystone Identity Service"
|
|
|
80
|
+
|
|
|
81
|
+keystone service-create --name=nova \
|
|
|
82
|
+ --type=compute \
|
|
|
83
|
+ --description="Nova Compute Service"
|
|
|
84
|
+NOVA_USER=$(get_id keystone user-create --name=nova \
|
|
|
85
|
+ --pass="$SERVICE_PASSWORD" \
|
|
|
86
|
+ --tenant_id $SERVICE_TENANT \
|
|
|
87
|
+ --email=nova@example.com)
|
|
82
|
88
|
keystone user-role-add --tenant_id $SERVICE_TENANT \
|
|
83
|
|
- --user $NOVA_USER \
|
|
84
|
|
- --role $ADMIN_ROLE
|
|
85
|
|
-
|
|
86
|
|
-keystone service-create \
|
|
87
|
|
- --name=ec2 \
|
|
88
|
|
- --type=ec2 \
|
|
89
|
|
- --description="EC2 Compatibility Layer"
|
|
90
|
|
-
|
|
91
|
|
-keystone service-create \
|
|
92
|
|
- --name=glance \
|
|
93
|
|
- --type=image \
|
|
94
|
|
- --description="Glance Image Service"
|
|
95
|
|
-GLANCE_USER=`get_id keystone user-create \
|
|
96
|
|
- --name=glance \
|
|
97
|
|
- --pass="$SERVICE_PASSWORD" \
|
|
98
|
|
- --tenant_id $SERVICE_TENANT \
|
|
99
|
|
- --email=glance@example.com`
|
|
|
89
|
+ --user $NOVA_USER \
|
|
|
90
|
+ --role $ADMIN_ROLE
|
|
|
91
|
+
|
|
|
92
|
+keystone service-create --name=ec2 \
|
|
|
93
|
+ --type=ec2 \
|
|
|
94
|
+ --description="EC2 Compatibility Layer"
|
|
|
95
|
+
|
|
|
96
|
+keystone service-create --name=glance \
|
|
|
97
|
+ --type=image \
|
|
|
98
|
+ --description="Glance Image Service"
|
|
|
99
|
+GLANCE_USER=$(get_id keystone user-create --name=glance \
|
|
|
100
|
+ --pass="$SERVICE_PASSWORD" \
|
|
|
101
|
+ --tenant_id $SERVICE_TENANT \
|
|
|
102
|
+ --email=glance@example.com)
|
|
100
|
103
|
keystone user-role-add --tenant_id $SERVICE_TENANT \
|
|
101
|
|
- --user $GLANCE_USER \
|
|
102
|
|
- --role $ADMIN_ROLE
|
|
103
|
|
-
|
|
104
|
|
-keystone service-create \
|
|
105
|
|
- --name=keystone \
|
|
106
|
|
- --type=identity \
|
|
107
|
|
- --description="Keystone Identity Service"
|
|
|
104
|
+ --user $GLANCE_USER \
|
|
|
105
|
+ --role $ADMIN_ROLE
|
|
108
|
106
|
|
|
109
|
107
|
if [[ "$ENABLED_SERVICES" =~ "n-vol" ]]; then
|
|
110
|
|
- keystone service-create \
|
|
111
|
|
- --name="nova-volume" \
|
|
112
|
|
- --type=volume \
|
|
113
|
|
- --description="Nova Volume Service"
|
|
|
108
|
+ keystone service-create --name="nova-volume" \
|
|
|
109
|
+ --type=volume \
|
|
|
110
|
+ --description="Nova Volume Service"
|
|
114
|
111
|
fi
|
|
115
|
112
|
|
|
116
|
113
|
if [[ "$ENABLED_SERVICES" =~ "swift" ]]; then
|
|
117
|
|
- keystone service-create \
|
|
118
|
|
- --name=swift \
|
|
119
|
|
- --type="object-store" \
|
|
120
|
|
- --description="Swift Service"
|
|
121
|
|
- SWIFT_USER=`get_id keystone user-create \
|
|
122
|
|
- --name=swift \
|
|
123
|
|
- --pass="$SERVICE_PASSWORD" \
|
|
124
|
|
- --tenant_id $SERVICE_TENANT \
|
|
125
|
|
- --email=swift@example.com`
|
|
|
114
|
+ keystone service-create --name=swift \
|
|
|
115
|
+ --type="object-store" \
|
|
|
116
|
+ --description="Swift Service"
|
|
|
117
|
+ SWIFT_USER=$(get_id keystone user-create --name=swift \
|
|
|
118
|
+ --pass="$SERVICE_PASSWORD" \
|
|
|
119
|
+ --tenant_id $SERVICE_TENANT \
|
|
|
120
|
+ --email=swift@example.com)
|
|
126
|
121
|
keystone user-role-add --tenant_id $SERVICE_TENANT \
|
|
127
|
|
- --user $SWIFT_USER \
|
|
128
|
|
- --role $ADMIN_ROLE
|
|
|
122
|
+ --user $SWIFT_USER \
|
|
|
123
|
+ --role $ADMIN_ROLE
|
|
129
|
124
|
fi
|
|
|
125
|
+
|
|
130
|
126
|
if [[ "$ENABLED_SERVICES" =~ "quantum" ]]; then
|
|
131
|
|
- keystone service-create \
|
|
132
|
|
- --name=quantum \
|
|
133
|
|
- --type=network \
|
|
134
|
|
- --description="Quantum Service"
|
|
135
|
|
- QUANTUM_USER=`get_id keystone user-create \
|
|
136
|
|
- --name=quantum \
|
|
137
|
|
- --pass="$SERVICE_PASSWORD" \
|
|
138
|
|
- --tenant_id $SERVICE_TENANT \
|
|
139
|
|
- --email=quantum@example.com`
|
|
|
127
|
+ keystone service-create --name=quantum \
|
|
|
128
|
+ --type=network \
|
|
|
129
|
+ --description="Quantum Service"
|
|
|
130
|
+ QUANTUM_USER=$(get_id keystone user-create --name=quantum \
|
|
|
131
|
+ --pass="$SERVICE_PASSWORD" \
|
|
|
132
|
+ --tenant_id $SERVICE_TENANT \
|
|
|
133
|
+ --email=quantum@example.com)
|
|
140
|
134
|
keystone user-role-add --tenant_id $SERVICE_TENANT \
|
|
141
|
|
- --user $QUANTUM_USER \
|
|
142
|
|
- --role $ADMIN_ROLE
|
|
|
135
|
+ --user $QUANTUM_USER \
|
|
|
136
|
+ --role $ADMIN_ROLE
|
|
143
|
137
|
fi
|
|
144
|
138
|
|
|
145
|
139
|
# create ec2 creds and parse the secret and access key returned
|
|
146
|
|
-if [[ -n "$KEYSTONE_COMMAND_4375" ]]; then
|
|
147
|
|
- RESULT=`keystone ec2-credentials-create --tenant_id=$ADMIN_TENANT --user=$ADMIN_USER`
|
|
148
|
|
-else
|
|
149
|
|
- RESULT=`keystone ec2-create-credentials --tenant_id=$ADMIN_TENANT --user_id=$ADMIN_USER`
|
|
150
|
|
-fi
|
|
151
|
|
- echo `$@ | grep id | awk '{print $4}'`
|
|
152
|
|
-ADMIN_ACCESS=`echo "$RESULT" | grep access | awk '{print $4}'`
|
|
153
|
|
-ADMIN_SECRET=`echo "$RESULT" | grep secret | awk '{print $4}'`
|
|
|
140
|
+RESULT=$(keystone ec2-credentials-create --tenant_id=$ADMIN_TENANT --user=$ADMIN_USER)
|
|
|
141
|
+ADMIN_ACCESS=$(echo "$RESULT" | awk '/ access / { print $4 }')
|
|
|
142
|
+ADMIN_SECRET=$(echo "$RESULT" | awk '/ secret / { print $4 }')
|
|
154
|
143
|
|
|
155
|
|
-
|
|
156
|
|
-if [[ -n "$KEYSTONE_COMMAND_4375" ]]; then
|
|
157
|
|
- RESULT=`keystone ec2-credentials-create --tenant_id=$DEMO_TENANT --user=$DEMO_USER`
|
|
158
|
|
-else
|
|
159
|
|
- RESULT=`keystone ec2-create-credentials --tenant_id=$DEMO_TENANT --user_id=$DEMO_USER`
|
|
160
|
|
-fi
|
|
161
|
|
-DEMO_ACCESS=`echo "$RESULT" | grep access | awk '{print $4}'`
|
|
162
|
|
-DEMO_SECRET=`echo "$RESULT" | grep secret | awk '{print $4}'`
|
|
|
144
|
+RESULT=$(keystone ec2-credentials-create --tenant_id=$DEMO_TENANT --user=$DEMO_USER)
|
|
|
145
|
+DEMO_ACCESS=$(echo "$RESULT" | awk '/ access / { print $4 }')
|
|
|
146
|
+DEMO_SECRET=$(echo "$RESULT" | awk '/ secret / { print $4 }')
|
|
163
|
147
|
|
|
164
|
148
|
# write the secret and access to ec2rc
|
|
165
|
149
|
cat > $DEVSTACK_DIR/ec2rc <<EOF
|