-
Notifications
You must be signed in to change notification settings - Fork 308
Expand file tree
/
Copy pathkeystone.sh
More file actions
133 lines (118 loc) · 5.33 KB
/
Copy pathkeystone.sh
File metadata and controls
133 lines (118 loc) · 5.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#!/usr/bin/env bash
# Copyright 2019 The OpenSDS Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Default host ip.
HOST_IP=0.0.0.0
# OpenSDS version configuration.
OPENSDS_VERSION=${OPENSDS_VERSION:-v1beta}
# OpenSDS service name in keystone.
OPENSDS_SERVER_NAME=${OPENSDS_SERVER_NAME:-opensds}
# devstack keystone configuration
STACK_GIT_BASE=${STACK_GIT_BASE:-https://git.openstack.org}
STACK_USER_NAME=${STACK_USER_NAME:-stack}
STACK_PASSWORD=${STACK_PASSWORD:-opensds@123}
STACK_HOME=${STACK_HOME:-/opt/stack}
STACK_BRANCH=${STACK_BRANCH:-stable/train}
DEV_STACK_DIR=$STACK_HOME/devstack
# Multi-Cloud service name in keystone
MULTICLOUD_SERVER_NAME=${MULTICLOUD_SERVER_NAME:-multicloud}
# Multi-cloud
MULTICLOUD_VERSION=${MULTICLOUD_VERSION:-v1}
osds::keystone::create_user(){
if id ${STACK_USER_NAME} &> /dev/null; then
return
fi
sudo useradd -s /bin/bash -d ${STACK_HOME} -m ${STACK_USER_NAME}
# To Grant permission to STACK_USER to access STACK_HOME
sudo chown -R ${STACK_USER_NAME}:${STACK_USER_NAME} ${STACK_HOME}
echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack
}
osds::keystone::devstack_local_conf(){
DEV_STACK_LOCAL_CONF=${DEV_STACK_DIR}/local.conf
cat > $DEV_STACK_LOCAL_CONF << DEV_STACK_LOCAL_CONF_DOCK
[[local|localrc]]
# use TryStack git mirror
GIT_BASE=$STACK_GIT_BASE
disable_service mysql
enable_service postgresql
# If the ``*_PASSWORD`` variables are not set here you will be prompted to enter
# values for them by ``stack.sh``and they will be added to ``local.conf``.
ADMIN_PASSWORD=$STACK_PASSWORD
DATABASE_PASSWORD=$STACK_PASSWORD
RABBIT_PASSWORD=$STACK_PASSWORD
SERVICE_PASSWORD=$STACK_PASSWORD
# Neither is set by default.
HOST_IP=$HOST_IP
# path of the destination log file. A timestamp will be appended to the given name.
LOGFILE=\$DEST/logs/stack.sh.log
# Old log files are automatically removed after 7 days to keep things neat. Change
# the number of days by setting ``LOGDAYS``.
LOGDAYS=2
ENABLED_SERVICES=postgresql,key
# Using stable/queens branches
# ---------------------------------
KEYSTONE_BRANCH=$STACK_BRANCH
KEYSTONECLIENT_BRANCH=$STACK_BRANCH
DEV_STACK_LOCAL_CONF_DOCK
chown stack:stack $DEV_STACK_LOCAL_CONF
}
osds::keystone::create_user_and_endpoint(){
. $DEV_STACK_DIR/openrc admin admin
# for_hotpot
openstack user create --domain default --password $STACK_PASSWORD $OPENSDS_SERVER_NAME
openstack role add --project service --user opensds admin
openstack group create service
openstack group add user service opensds
openstack role add service --project service --group service
openstack group add user admins admin
openstack service create --name opensds$OPENSDS_VERSION --description "OpenSDS Block Storage" opensds$OPENSDS_VERSION
openstack endpoint create --region RegionOne opensds$OPENSDS_VERSION public http://$HOST_IP:50040/$OPENSDS_VERSION/%\(tenant_id\)s
openstack endpoint create --region RegionOne opensds$OPENSDS_VERSION internal http://$HOST_IP:50040/$OPENSDS_VERSION/%\(tenant_id\)s
openstack endpoint create --region RegionOne opensds$OPENSDS_VERSION admin http://$HOST_IP:50040/$OPENSDS_VERSION/%\(tenant_id\)s
# for_gelato
openstack user create --domain default --password "$STACK_PASSWORD" "$MULTICLOUD_SERVER_NAME"
openstack role add --project service --user "$MULTICLOUD_SERVER_NAME" admin
openstack group add user service "$MULTICLOUD_SERVER_NAME"
openstack service create --name "multicloud$MULTICLOUD_VERSION" --description "Multi-cloud Block Storage" "multicloud$MULTICLOUD_VERSION"
openstack endpoint create --region RegionOne "multicloud$MULTICLOUD_VERSION" public "http://$HOST_IP:8089/$MULTICLOUD_VERSION/%(tenant_id)s"
openstack endpoint create --region RegionOne "multicloud$MULTICLOUD_VERSION" internal "http://$HOST_IP:8089/$MULTICLOUD_VERSION/%(tenant_id)s"
openstack endpoint create --region RegionOne "multicloud$MULTICLOUD_VERSION" admin "http://$HOST_IP:8089/$MULTICLOUD_VERSION/%(tenant_id)s"
}
osds::keystone::delete_redundancy_data() {
. $DEV_STACK_DIR/openrc admin admin
openstack project delete demo
openstack project delete alt_demo
openstack project delete invisible_to_admin
openstack user delete demo
openstack user delete alt_demo
}
osds::keystone::download_code(){
if [ ! -d ${DEV_STACK_DIR} ];then
git clone ${STACK_GIT_BASE}/openstack-dev/devstack -b ${STACK_BRANCH} ${DEV_STACK_DIR}
chown stack:stack -R ${DEV_STACK_DIR}
fi
}
osds::keystone::install(){
KEYSTONE_IP=$HOST_IP
osds::keystone::create_user
osds::keystone::download_code
osds::keystone::devstack_local_conf
cd ${DEV_STACK_DIR}
su $STACK_USER_NAME -c FORCE=yes ${DEV_STACK_DIR}/stack.sh
osds::keystone::create_user_and_endpoint
osds::keystone::delete_redundancy_data
}
osds::keystone::install
# set entrypoint.sh as init command
sed -i '14i\/entrypoint\.sh' /etc/rc.local