Merge pull request #21 from javacruft/configure-refactor

Configure refactor
This commit is contained in:
James Page 2018-11-06 14:14:35 +00:00 committed by GitHub
commit f79ede2ad0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 195 additions and 164 deletions

View File

@ -1,36 +1,7 @@
#!/bin/bash -e #!/bin/bash -e
# Install conf.d configuration from snap for db etc
for project in neutron nova keystone glance; do
mkdir -p ${SNAP_COMMON}/etc/${project}/${project}.conf.d
cp -r ${SNAP}/etc/${project}/${project}.conf.d/* ${SNAP_COMMON}/etc/${project}/${project}.conf.d
done
# Create all of the databases
for db in neutron nova nova_api nova_cell0 cinder glance keystone; do
echo "CREATE DATABASE IF NOT EXISTS ${db}; GRANT ALL PRIVILEGES ON ${db}.* TO '${db}'@'localhost' IDENTIFIED BY '${db}';" \
| mysql-start-client -u root
done
# Grant nova user access to cell0
echo "GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' IDENTIFIED BY 'nova';" | mysql-start-client -u root
# RabbitMQ
echo "rabbit setup"
export HOME=$SNAP_COMMON/lib/rabbitmq # TODO: unset this?
# Rabbitmq isn't always started when we run this. Wait for it to start.
# TODO: develop this a bit more -- not 100% that this does what we want.
while :;
do
grep "Starting broker... completed" /var/snap/microstack/common/log/rabbitmq/startup_log && break
echo "waiting for rabbitmq to start" && sleep 1;
done
rabbitmqctl add_user openstack rabbitmq || true
rabbitmqctl set_permissions openstack ".*" ".*" ".*"
# Keystone # Keystone
echo "keystone setup" echo "Configuring Keystone"
snap-openstack keystone-manage fernet_setup --keystone-user root --keystone-group root snap-openstack keystone-manage fernet_setup --keystone-user root --keystone-group root
snap-openstack keystone-manage db_sync snap-openstack keystone-manage db_sync
@ -51,7 +22,7 @@ openstack project show service || {
} }
# Nova # Nova
echo "nova setup" echo "Configuring Nova"
openstack user show nova || { openstack user show nova || {
openstack user create --domain default --password nova nova openstack user create --domain default --password nova nova
@ -115,7 +86,7 @@ openstack flavor show m1.xlarge || {
} }
# Neutron # Neutron
echo "neutron setup" echo "Configuring Neutron"
openstack user show neutron || { openstack user show neutron || {
openstack user create --domain default --password neutron neutron openstack user create --domain default --password neutron neutron
@ -148,8 +119,25 @@ openstack subnet show test-subnet || {
openstack subnet create --network test --subnet-range 192.168.222.0/24 test-subnet openstack subnet create --network test --subnet-range 192.168.222.0/24 test-subnet
} }
openstack network show external || {
openstack network create --external \
--provider-physical-network=physnet1 \
--provider-network-type=flat external
}
openstack subnet show external-subnet || {
openstack subnet create --network external --subnet-range 10.20.20.0/24 \
--no-dhcp external-subnet
}
openstack router show test-router || {
openstack router create test-router
openstack router add subnet test-router test-subnet
openstack router set --external-gateway external test-router
}
# Glance # Glance
echo "glance setup" echo "Configuring Glance"
openstack user show glance || { openstack user show glance || {
openstack user create --domain default --password glance glance openstack user create --domain default --password glance glance
@ -174,12 +162,10 @@ sleep 5
openstack image show cirros || { openstack image show cirros || {
[ -f $HOME/images/cirros-0.3.5-x86_64-disk.img ] || { [ -f $HOME/images/cirros-0.3.5-x86_64-disk.img ] || {
export http_proxy=$SNAPSTACK_HTTP_PROXY
mkdir -p $HOME/images mkdir -p $HOME/images
wget \ wget \
http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img \ http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img \
-O ${HOME}/images/cirros-0.3.5-x86_64-disk.img -O ${HOME}/images/cirros-0.3.5-x86_64-disk.img
unset http_proxy
} }
openstack image create --file ${HOME}/images/cirros-0.3.5-x86_64-disk.img \ openstack image create --file ${HOME}/images/cirros-0.3.5-x86_64-disk.img \
--public --container-format=bare --disk-format=qcow2 cirros --public --container-format=bare --disk-format=qcow2 cirros

45
snap/hooks/configure vendored Executable file
View File

@ -0,0 +1,45 @@
#!/bin/bash -e
# Install conf.d configuration from snap for db etc
echo "Installing configuration for OpenStack Services"
for project in neutron nova keystone glance; do
mkdir -p ${SNAP_COMMON}/etc/${project}/${project}.conf.d
cp -r ${SNAP}/etc/${project}/${project}.conf.d/* ${SNAP_COMMON}/etc/${project}/${project}.conf.d
done
# Create all of the databases
echo "Creating OpenStack Databases"
# Wait for MySQL to startup
while ! nc -z localhost 3306; do sleep 0.1; done;
sleep 5
for db in neutron nova nova_api nova_cell0 cinder glance keystone; do
echo "CREATE DATABASE IF NOT EXISTS ${db}; GRANT ALL PRIVILEGES ON ${db}.* TO '${db}'@'localhost' IDENTIFIED BY '${db}';" \
| mysql-start-client -u root
done
# Grant nova user access to cell0
echo "GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' IDENTIFIED BY 'nova';" | mysql-start-client -u root
# RabbitMQ
echo "Configuring RabbitMQ"
# Rabbitmq isn't always started when we run this. Wait for it to start.
while :;
do
grep "Starting broker... completed" ${SNAP_COMMON}/log/rabbitmq/startup_log && break
echo "waiting for rabbitmq to start" && sleep 1;
done
HOME=$SNAP_COMMON/lib/rabbitmq rabbitmqctl add_user openstack rabbitmq || :
HOME=$SNAP_COMMON/lib/rabbitmq rabbitmqctl set_permissions openstack ".*" ".*" ".*"
# Open vSwitch/Neutron
echo "Configuring Open vSwitch networking"
# Create external integration bridge
ovs-vsctl --retry --may-exist add-br br-ex
# Configure br-ex
ip address add 10.20.20.1/24 dev br-ex || :
ip link set br-ex up || :

View File

@ -1,10 +1,9 @@
name: microstack name: microstack
version: rocky version: rocky
summary: Openstack on your laptop. summary: OpenStack on your laptop.
description: | description: |
Microstack gives you an easy way to develop and test Openstack Microstack gives you an easy way to develop and test OpenStack
workloads on your laptop. TODO drop in basic usage instructions workloads on your laptop.
here.
grade: devel grade: devel
confinement: classic confinement: classic
environment: environment:
@ -26,191 +25,193 @@ apps:
# Openstack # Openstack
openstack: openstack:
command: openstack command: openstack
plugs: # plugs:
- network # - network
configure-openstack:
# OpenStack Service Configuration
configure:
command: configure-openstack command: configure-openstack
plugs: # plugs:
- network # - network
# Keystone # Keystone
keystone-uwsgi: keystone-uwsgi:
command: snap-openstack keystone-uwsgi command: snap-openstack keystone-uwsgi
daemon: simple daemon: simple
plugs: # plugs:
- network-bind # - network-bind
keystone-manage: keystone-manage:
command: snap-openstack keystone-manage command: snap-openstack keystone-manage
plugs: # plugs:
- network # - network
# Nova # Nova
nova-uwsgi: nova-uwsgi:
command: snap-openstack nova-uwsgi command: snap-openstack nova-uwsgi
daemon: simple daemon: simple
plugs: # plugs:
- network-bind # - network-bind
nova-api: nova-api:
command: snap-openstack nova-api-os-compute command: snap-openstack nova-api-os-compute
daemon: simple daemon: simple
plugs: # plugs:
- network-bind # - network-bind
nova-conductor: nova-conductor:
command: snap-openstack nova-conductor command: snap-openstack nova-conductor
daemon: simple daemon: simple
plugs: # plugs:
- network # - network
nova-scheduler: nova-scheduler:
command: snap-openstack nova-scheduler command: snap-openstack nova-scheduler
daemon: simple daemon: simple
plugs: # plugs:
- network # - network
nova-compute: nova-compute:
command: snap-openstack nova-compute command: snap-openstack nova-compute
daemon: simple daemon: simple
plugs: # plugs:
- network-bind # - network-bind
- network-control # - network-control
- firewall-control # - firewall-control
- hardware-observe # - hardware-observe
- libvirt # - libvirt
- openvswitch # - openvswitch
nova-api-metadata: nova-api-metadata:
command: snap-openstack nova-api-metadata command: snap-openstack nova-api-metadata
daemon: simple daemon: simple
plugs: # plugs:
- network-bind # - network-bind
- firewall-control # - firewall-control
nova-manage: nova-manage:
command: snap-openstack nova-manage command: snap-openstack nova-manage
plugs: # plugs:
- network # - network
# Neutron # Neutron
neutron-api: neutron-api:
command: snap-openstack neutron-server command: snap-openstack neutron-server
daemon: simple daemon: simple
plugs: # plugs:
- network-bind # - network-bind
neutron-openvswitch-agent: neutron-openvswitch-agent:
command: snap-openstack neutron-openvswitch-agent command: snap-openstack neutron-openvswitch-agent
daemon: simple daemon: simple
plugs: # plugs:
- network-bind # - network-bind
- network-control # - network-control
- network-observe # - network-observe
- firewall-control # - firewall-control
- process-control # - process-control
- system-observe # - system-observe
- openvswitch # - openvswitch
neutron-l3-agent: neutron-l3-agent:
command: snap-openstack neutron-l3-agent command: snap-openstack neutron-l3-agent
daemon: simple daemon: simple
plugs: # plugs:
- network-bind # - network-bind
- network-control # - network-control
- network-observe # - network-observe
- firewall-control # - firewall-control
- process-control # - process-control
- system-observe # - system-observe
- openvswitch # - openvswitch
neutron-dhcp-agent: neutron-dhcp-agent:
command: snap-openstack neutron-dhcp-agent command: snap-openstack neutron-dhcp-agent
daemon: simple daemon: simple
plugs: # plugs:
- network # - network
- network-bind # - network-bind
- network-control # - network-control
- network-observe # - network-observe
- process-control # - process-control
- system-observe # - system-observe
- openvswitch # - openvswitch
neutron-metadata-agent: neutron-metadata-agent:
command: snap-openstack neutron-metadata-agent command: snap-openstack neutron-metadata-agent
daemon: simple daemon: simple
plugs: # plugs:
- network # - network
- network-bind # - network-bind
- network-control # - network-control
neutron-ovs-cleanup: neutron-ovs-cleanup:
command: snap-openstack neutron-ovs-cleanup command: snap-openstack neutron-ovs-cleanup
plugs: # plugs:
- network # - network
- network-control # - network-control
- openvswitch # - openvswitch
neutron-netns-cleanup: neutron-netns-cleanup:
command: snap-openstack neutron-netns-cleanup command: snap-openstack neutron-netns-cleanup
plugs: # plugs:
- network # - network
- network-control # - network-control
neutron-db-manage: neutron-db-manage:
command: snap-openstack neutron-db-manage command: snap-openstack neutron-db-manage
plugs: # plugs:
- network # - network
# Glance # Glance
glance-api: glance-api:
command: snap-openstack glance-api command: snap-openstack glance-api
daemon: simple daemon: simple
plugs: # plugs:
- network-bind # - network-bind
registry: registry:
command: snap-openstack glance-registry command: snap-openstack glance-registry
daemon: simple daemon: simple
plugs: # plugs:
- network # - network
- network-bind # - network-bind
glance-manage: glance-manage:
command: snap-openstack glance-manage command: snap-openstack glance-manage
plugs: # plugs:
- network # - network
# Openstack Shared Services # Openstack Shared Services
nginx: nginx:
command: snap-openstack nginx command: snap-openstack nginx
daemon: forking daemon: forking
plugs: # plugs:
- network-bind # - network-bind
# Openvswitch # Openvswitch
ovs-vswitchd: ovs-vswitchd:
command: ovs-wrapper $SNAP/share/openvswitch/scripts/ovs-ctl --no-ovsdb-server --no-monitor --system-id=random start command: ovs-wrapper $SNAP/share/openvswitch/scripts/ovs-ctl --no-ovsdb-server --no-monitor --system-id=random start
stop-command: ovs-wrapper $SNAP/share/openvswitch/scripts/ovs-ctl --no-ovsdb-server stop stop-command: ovs-wrapper $SNAP/share/openvswitch/scripts/ovs-ctl --no-ovsdb-server stop
daemon: forking daemon: forking
plugs: # plugs:
- network # - network
- network-bind # - network-bind
- network-control # - network-control
- openvswitch-support # - openvswitch-support
- process-control # - process-control
- system-trace # - system-trace
ovsdb-server: ovsdb-server:
command: ovs-wrapper $SNAP/share/openvswitch/scripts/ovs-ctl --no-ovs-vswitchd --no-monitor --system-id=random start command: ovs-wrapper $SNAP/share/openvswitch/scripts/ovs-ctl --no-ovs-vswitchd --no-monitor --system-id=random start
stop-command: ovs-wrapper $SNAP/share/openvswitch/scripts/ovs-ctl --no-ovs-vswitchd stop stop-command: ovs-wrapper $SNAP/share/openvswitch/scripts/ovs-ctl --no-ovs-vswitchd stop
daemon: forking daemon: forking
plugs: # plugs:
- network # - network
- network-bind # - network-bind
- network-control # - network-control
- openvswitch-support # - openvswitch-support
- process-control # - process-control
- system-trace # - system-trace
ovs-vsctl: ovs-vsctl:
command: ovs-wrapper $SNAP/bin/ovs-vsctl command: ovs-wrapper $SNAP/bin/ovs-vsctl
plugs: # plugs:
- network # - network
ovs-appctl: ovs-appctl:
command: ovs-wrapper $SNAP/bin/ovs-appctl command: ovs-wrapper $SNAP/bin/ovs-appctl
plugs: # plugs:
- network # - network
ovs-ofctl: ovs-ofctl:
command: ovs-wrapper $SNAP/bin/ovs-ofctl command: ovs-wrapper $SNAP/bin/ovs-ofctl
plugs: # plugs:
- network # - network
ovs-dpctl: ovs-dpctl:
command: ovs-wrapper $SNAP/bin/ovs-dpctl command: ovs-wrapper $SNAP/bin/ovs-dpctl
plugs: # plugs:
- network # - network
# Libvirt/Qemu # Libvirt/Qemu
libvirtd: libvirtd:
@ -221,33 +222,32 @@ apps:
virsh: virsh:
command: virsh command: virsh
# MySQL
# MySQL # MySQL
mysqld: mysqld:
command: mysql-start-server command: mysql-start-server
daemon: simple daemon: simple
plugs: # plugs:
- process-control # - process-control
- network # - network
- network-bind # - network-bind
mysql: mysql:
command: mysql-start-client command: mysql-start-client
plugs: # plugs:
- process-control # - process-control
- network # - network
# RabbitMQ # RabbitMQ
rabbitmq-server: rabbitmq-server:
command: rabbitmq-server command: rabbitmq-server
daemon: simple daemon: simple
plugs: # plugs:
- network-bind # - network-bind
environment: environment:
HOME: $SNAP_COMMON/lib/rabbitmq HOME: $SNAP_COMMON/lib/rabbitmq
rabbitmqctl: rabbitmqctl:
command: rabbitmqctl command: rabbitmqctl
plugs: # plugs:
- network # - network
environment: environment:
HOME: $SNAP_COMMON/lib/rabbitmq HOME: $SNAP_COMMON/lib/rabbitmq
rabbitmq-plugins: rabbitmq-plugins:
@ -259,41 +259,41 @@ apps:
memcached: memcached:
command: memcached -u root -v command: memcached -u root -v
daemon: simple daemon: simple
plugs: # plugs:
- network-bind # - network-bind
# Cinder # Cinder
cinder-uwsgi: cinder-uwsgi:
command: snap-openstack cinder-uwsgi command: snap-openstack cinder-uwsgi
# daemon: simple # daemon: simple
plugs: # plugs:
- network-bind # - network-bind
cinder-backup: cinder-backup:
command: snap-openstack cinder-backup command: snap-openstack cinder-backup
# daemon: simple # daemon: simple
plugs: # plugs:
- network # - network
cinder-manage: cinder-manage:
command: snap-openstack cinder-manage command: snap-openstack cinder-manage
plugs: # plugs:
- network # - network
cinder-scheduler: cinder-scheduler:
command: snap-openstack cinder-scheduler command: snap-openstack cinder-scheduler
# daemon: simple # daemon: simple
plugs: # plugs:
- network # - network
cinder-volume: cinder-volume:
command: snap-openstack cinder-volume command: snap-openstack cinder-volume
# daemon: simple # daemon: simple
plugs: # plugs:
- network # - network
# Horizon # Horizon
horizon-uwsgi: horizon-uwsgi:
command: snap-openstack horizon-uwsgi command: snap-openstack horizon-uwsgi
daemon: simple daemon: simple
plugs: # plugs:
- network-bind # - network-bind
parts: parts:
# OpenStack Python Projects, keyed off Keystone # OpenStack Python Projects, keyed off Keystone