Trying to adhere to python naming convention.
This commit is contained in:
32
cinder_controller/Dockerfile
Normal file
32
cinder_controller/Dockerfile
Normal file
@ -0,0 +1,32 @@
|
||||
FROM ubuntu:16.04
|
||||
# install packages
|
||||
|
||||
RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 5EDB1B62EC4926EA
|
||||
|
||||
RUN set -x \
|
||||
&& echo "deb http://ubuntu-cloud.archive.canonical.com/ubuntu xenial-updates/ocata main" > /etc/apt/sources.list.d/ocata.list \
|
||||
&& apt-get -y update \
|
||||
&& apt-get -y install ubuntu-cloud-keyring \
|
||||
&& apt-get -y update \
|
||||
&& apt-get -y install \
|
||||
mysql-client \
|
||||
python-mysqldb \
|
||||
python-openstackclient \
|
||||
python-oslo.cache \
|
||||
cinder-api \
|
||||
cinder-scheduler \
|
||||
&& apt-get -y clean
|
||||
|
||||
EXPOSE 8776
|
||||
|
||||
#file that writes configs
|
||||
COPY write_conf.sh /etc/write_conf.sh
|
||||
# add bootstrap script and make it executable
|
||||
COPY bootstrap.sh /etc/bootstrap.sh
|
||||
|
||||
COPY run.sh /etc/run.sh
|
||||
|
||||
RUN chown root.root /etc/bootstrap.sh && chmod a+x /etc/bootstrap.sh
|
||||
RUN chown root.root /etc/run.sh && chmod a+x /etc/run.sh
|
||||
|
||||
CMD ["/etc/run.sh"]
|
41
cinder_controller/README.md
Normal file
41
cinder_controller/README.md
Normal file
@ -0,0 +1,41 @@
|
||||
# How to build
|
||||
```
|
||||
docker build . -t hpc/openstack-cinder-controller
|
||||
```
|
||||
|
||||
# Bootstrap
|
||||
```
|
||||
docker run --rm
|
||||
-e "MY_IP={{ ansible_default_ipv4.address }}"
|
||||
-e "CINDER_HOST={{ hostvars[groups['cinder-controller'][0]]['ansible_default_ipv4']['address'] }}"
|
||||
-e "CINDER_PASSWORD={{ secrets['CINDER_PASSWORD'] }}"
|
||||
-e "CINDER_USER=cinder"
|
||||
-e "KEYSTONE_HOST={{ hostvars[groups['keystone'][0]]['ansible_default_ipv4']['address'] }}"
|
||||
-e "MYSQL_HOST={{ hostvars[groups['databases'][0]]['ansible_default_ipv4']['address'] }}"
|
||||
-e "MYSQL_ROOT_PASSWORD={{ secrets['MYSQL_ROOT_PASSWORD'] }}"
|
||||
-e "OS_PASSWORD={{ secrets['OS_PASSWORD'] }}"
|
||||
-e "RABBIT_HOST={{ hostvars[groups['rabbitmq'][0]]['ansible_default_ipv4']['address'] }}"
|
||||
-e "RABBIT_PASSWORD={{ secrets['RABBIT_PASSWORD'] }}"
|
||||
-e "RABBIT_USER=openstack"
|
||||
hpc/openstack-cinder /etc/bootstrap.sh
|
||||
|
||||
```
|
||||
|
||||
# Run an image
|
||||
|
||||
```
|
||||
/usr/bin/docker run \
|
||||
-e "MY_IP={{ ansible_default_ipv4.address }}"
|
||||
-e "CINDER_HOST={{ hostvars[groups['cinder-controller'][0]]['ansible_default_ipv4']['address'] }}"
|
||||
-e "CINDER_PASSWORD={{ secrets['CINDER_PASSWORD'] }}"
|
||||
-e "CINDER_USER=cinder"
|
||||
-e "KEYSTONE_HOST={{ hostvars[groups['keystone'][0]]['ansible_default_ipv4']['address'] }}"
|
||||
-e "MYSQL_HOST={{ hostvars[groups['databases'][0]]['ansible_default_ipv4']['address'] }}"
|
||||
-e "MYSQL_ROOT_PASSWORD={{ secrets['MYSQL_ROOT_PASSWORD'] }}"
|
||||
-e "OS_PASSWORD={{ secrets['OS_PASSWORD'] }}"
|
||||
-e "RABBIT_HOST={{ hostvars[groups['rabbitmq'][0]]['ansible_default_ipv4']['address'] }}"
|
||||
-e "RABBIT_PASSWORD={{ secrets['RABBIT_PASSWORD'] }}"
|
||||
-e "RABBIT_USER=openstack"
|
||||
-p 8776:8776 \
|
||||
hpc/openstack-cinder-controller
|
||||
```
|
17
cinder_controller/admin-openrc.sh
Normal file
17
cinder_controller/admin-openrc.sh
Normal file
@ -0,0 +1,17 @@
|
||||
#!/bin/bash
|
||||
# a admin-openrc.sh file
|
||||
export MYSQL_ROOT_PASSWORD="geheim"
|
||||
|
||||
# To create the Identity service credentials
|
||||
GLANCE_USER_NAME=glance
|
||||
GLANCE_PASSWORD=geheim
|
||||
export OS_IDENTITY_API_VERSION=3
|
||||
export OS_USERNAME=admin
|
||||
export OS_PASSWORD=geheim
|
||||
export OS_TENANT_NAME=admin
|
||||
export OS_AUTH_URL=http://${KEYSTONE_HOST}:35357/v3
|
||||
|
||||
export OS_PROJECT_DOMAIN_NAME=default
|
||||
export OS_USER_DOMAIN_NAME=default
|
||||
export OS_PROJECT_NAME=admin
|
||||
export OS_IMAGE_API_VERSION=2
|
48
cinder_controller/bootstrap.sh
Executable file
48
cinder_controller/bootstrap.sh
Executable file
@ -0,0 +1,48 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Create admin-openrc.sh from secrets that are in the environment during bootstrap.
|
||||
cat << EOF > /root/admin-openrc.sh
|
||||
#!/bin/bash
|
||||
export OS_TENANT_NAME=admin
|
||||
export OS_USERNAME=admin
|
||||
export OS_PASSWORD=${OS_PASSWORD}
|
||||
export OS_AUTH_URL=http://${KEYSTONE_HOST}:35357/v3
|
||||
export OS_IDENTITY_API_VERSION=3
|
||||
|
||||
export OS_PROJECT_DOMAIN_NAME=default
|
||||
export OS_USER_DOMAIN_NAME=default
|
||||
export OS_PROJECT_NAME=admin
|
||||
export OS_IMAGE_API_VERSION=2
|
||||
EOF
|
||||
|
||||
source /root/admin-openrc.sh
|
||||
|
||||
# Write the config files
|
||||
/etc/write_conf.sh
|
||||
|
||||
# create database for cinder
|
||||
mysql -uroot -p"$MYSQL_ROOT_PASSWORD" -h "$MYSQL_HOST" << EOF
|
||||
drop database if exists cinder;
|
||||
create database cinder;
|
||||
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' IDENTIFIED BY "$CINDER_PASSWORD";
|
||||
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY "$CINDER_PASSWORD";
|
||||
EOF
|
||||
|
||||
openstack user create cinder --domain default --password "$CINDER_PASSWORD"
|
||||
openstack role add --user cinder --project service admin
|
||||
|
||||
openstack service create --name cinderv2 --description "OpenStack Block Service" volumev2
|
||||
openstack service create --name cinderv3 --description "OpenStack Block Service" volumev3
|
||||
|
||||
openstack endpoint create volumev2 public http://"${CINDER_HOST}":8776/v2/%\(project_id\)s --region RegionOne
|
||||
openstack endpoint create volumev2 internal http://"${CINDER_HOST}":8776/v2/%\(project_id\)s --region RegionOne
|
||||
openstack endpoint create volumev2 admin http://"${CINDER_HOST}":8776/v2/%\(project_id\)s --region RegionOne
|
||||
|
||||
openstack endpoint create volumev3 public http://"${CINDER_HOST}":8776/v3/%\(project_id\)s --region RegionOne
|
||||
openstack endpoint create volumev3 internal http://"${CINDER_HOST}":8776/v3/%\(project_id\)s --region RegionOne
|
||||
openstack endpoint create volumev3 admin http://"${CINDER_HOST}":8776/v3/%\(project_id\)s --region RegionOne
|
||||
|
||||
# sync the database
|
||||
cinder-manage db sync
|
||||
|
||||
|
14
cinder_controller/run.sh
Executable file
14
cinder_controller/run.sh
Executable file
@ -0,0 +1,14 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Write the config files
|
||||
/etc/write_conf.sh
|
||||
# start glance service
|
||||
cinder-scheduler -d &
|
||||
sleep 5
|
||||
apachectl -DFOREGROUND &
|
||||
|
||||
# If any process fails, kill the rest.
|
||||
# This ensures the container stops and systemd will restart it.
|
||||
|
||||
wait -n
|
||||
pkill -P $$
|
30
cinder_controller/write_conf.sh
Executable file
30
cinder_controller/write_conf.sh
Executable file
@ -0,0 +1,30 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Generate config files from environments values.
|
||||
# These are to be passed to the docker container using -e
|
||||
|
||||
cat << EOF > /etc/cinder/cinder.conf
|
||||
|
||||
[database]
|
||||
connection = mysql+pymysql://$CINDER_USER:$CINDER_PASSWORD@$MYSQL_HOST/cinder
|
||||
|
||||
[DEFAULT]
|
||||
auth_strategy = keystone
|
||||
transport_url = rabbit://$RABBIT_USER:$RABBIT_PASSWORD@$MY_IP
|
||||
my_ip = $MY_IP
|
||||
|
||||
[keystone_authtoken]
|
||||
auth_uri = http://$KEYSTONE_HOST:5000
|
||||
auth_url = http://$KEYSTONE_HOST:35357
|
||||
memcached_servers = $MEMCACHED_HOST:11211
|
||||
auth_type = password
|
||||
project_domain_name = Default
|
||||
user_domain_name = Default
|
||||
project_name = service
|
||||
username = $CINDER_USER
|
||||
password = $CINDER_PASSWORD
|
||||
|
||||
[oslo_concurrency]
|
||||
lock_path = /var/lib/cinder/tmp
|
||||
|
||||
EOF
|
Reference in New Issue
Block a user