|
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 |
|
0 commit comments