523 lines
14 KiB
YAML
523 lines
14 KiB
YAML
name: microstack
|
|
version: alpha
|
|
summary: Openstack on your laptop.
|
|
description: |
|
|
Microstack gives you an easy way to develop and test Openstack
|
|
workloads on your laptop. TODO drop in basic usage instructions
|
|
here.
|
|
grade: devel
|
|
confinement: classic
|
|
environment:
|
|
LD_LIBRARY_PATH: $SNAP/lib:$SNAP/usr/lib
|
|
PATH: $SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH
|
|
LC_ALL: C
|
|
OS_PLACEMENT_CONFIG_DIR: $SNAP/etc/nova/
|
|
|
|
apps:
|
|
# Keystone
|
|
keystone-uwsgi:
|
|
command: snap-openstack keystone-uwsgi
|
|
daemon: simple
|
|
plugs:
|
|
- network-bind
|
|
keystone-manage:
|
|
command: snap-openstack keystone-manage
|
|
plugs:
|
|
- network
|
|
|
|
# Nova
|
|
nova-uwsgi:
|
|
command: snap-openstack nova-uwsgi
|
|
daemon: simple
|
|
plugs:
|
|
- network-bind
|
|
nova-api:
|
|
command: snap-openstack nova-api-os-compute
|
|
daemon: simple
|
|
plugs:
|
|
- network-bind
|
|
conductor:
|
|
command: snap-openstack nova-conductor
|
|
daemon: simple
|
|
plugs:
|
|
- network
|
|
scheduler:
|
|
command: snap-openstack nova-scheduler
|
|
daemon: simple
|
|
plugs:
|
|
- network
|
|
consoleauth:
|
|
command: snap-openstack nova-consoleauth
|
|
daemon: simple
|
|
plugs:
|
|
- network
|
|
nova-manage:
|
|
command: snap-openstack nova-manage
|
|
plugs:
|
|
- network
|
|
|
|
# Neutron
|
|
neutron-api:
|
|
command: snap-openstack neutron-server
|
|
daemon: simple
|
|
plugs:
|
|
- network-bind
|
|
neutron-manage:
|
|
command: snap-openstack neutron-db-manage
|
|
plugs:
|
|
- network
|
|
|
|
# Glance
|
|
glance-api:
|
|
command: snap-openstack glance-api
|
|
daemon: simple
|
|
plugs:
|
|
- network-bind
|
|
registry:
|
|
command: snap-openstack glance-registry
|
|
daemon: simple
|
|
plugs:
|
|
- network
|
|
- network-bind
|
|
glance-manage:
|
|
command: snap-openstack glance-manage
|
|
plugs:
|
|
- network
|
|
|
|
# Openstack Shared Services
|
|
nginx:
|
|
command: snap-openstack nginx
|
|
daemon: forking
|
|
plugs:
|
|
- network-bind
|
|
|
|
# Openvswitch
|
|
ovs-vswitchd:
|
|
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
|
|
daemon: forking
|
|
plugs:
|
|
- network
|
|
- network-bind
|
|
- network-control
|
|
- openvswitch-support
|
|
- process-control
|
|
- system-trace
|
|
ovsdb-server:
|
|
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
|
|
daemon: forking
|
|
plugs:
|
|
- network
|
|
- network-bind
|
|
- network-control
|
|
- openvswitch-support
|
|
- process-control
|
|
- system-trace
|
|
ovs-vsctl:
|
|
command: ovs-wrapper $SNAP/bin/ovs-vsctl
|
|
plugs:
|
|
- network
|
|
ovs-appctl:
|
|
command: ovs-wrapper $SNAP/bin/ovs-appctl
|
|
plugs:
|
|
- network
|
|
ovs-ofctl:
|
|
command: ovs-wrapper $SNAP/bin/ovs-ofctl
|
|
plugs:
|
|
- network
|
|
ovs-dpctl:
|
|
command: ovs-wrapper $SNAP/bin/ovs-dpctl
|
|
plugs:
|
|
- network
|
|
|
|
# Libvirt/Qemu
|
|
libvirt-bin:
|
|
command: bin/launch-libvirtd
|
|
daemon: simple
|
|
virsh:
|
|
command: bin/virsh
|
|
environment:
|
|
PATH: $SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH
|
|
LC_ALL: C
|
|
|
|
# MySQL
|
|
mysql-startup:
|
|
command: mysql-startup
|
|
plugs:
|
|
- process-control
|
|
- network
|
|
- network-bind
|
|
mysql-server:
|
|
command: mysql-start-server
|
|
plugs:
|
|
- process-control
|
|
- network
|
|
- network-bind
|
|
mysql-client:
|
|
command: mysql-start-client
|
|
plugs:
|
|
- process-control
|
|
- network
|
|
- network-bind
|
|
mysql-help:
|
|
command: mysql-show-help
|
|
|
|
parts:
|
|
# Keystone
|
|
keystone:
|
|
plugin: python
|
|
python-version: python2
|
|
constraints: https://raw.githubusercontent.com/openstack/requirements/stable/ocata/upper-constraints.txt
|
|
source: http://tarballs.openstack.org/keystone/keystone-stable-ocata.tar.gz
|
|
python-packages:
|
|
- mysql-python
|
|
- oslo.cache[dogpile]
|
|
- pymysql
|
|
- pysqlite
|
|
- uwsgi
|
|
- git+https://github.com/openstack/snap.openstack#egg=snap.openstack
|
|
install: |
|
|
touch $SNAPCRAFT_PART_INSTALL/lib/python2.7/site-packages/paste/__init__.py
|
|
touch $SNAPCRAFT_PART_INSTALL/lib/python2.7/site-packages/repoze/__init__.py
|
|
export SNAP_ROOT="../../.."
|
|
export SNAP_SITE_PACKAGES="$SNAPCRAFT_PART_INSTALL/lib/python2.7/site-packages"
|
|
patch -d $SNAP_SITE_PACKAGES -p1 < $SNAP_ROOT/patches/oslo-config-dirs.patch
|
|
build-packages:
|
|
- gcc
|
|
- libffi-dev
|
|
- libmysqlclient-dev
|
|
- libssl-dev
|
|
- libsqlite3-dev
|
|
|
|
keystone-config:
|
|
after: [keystone]
|
|
plugin: dump
|
|
source: http://tarballs.openstack.org/keystone/keystone-stable-ocata.tar.gz
|
|
organize:
|
|
etc/*.conf: etc/keystone/
|
|
etc/*.ini: etc/keystone/
|
|
etc/*.json: etc/keystone/
|
|
etc/*.templates: etc/keystone/
|
|
filesets:
|
|
etc:
|
|
- etc/keystone/*.conf
|
|
- etc/keystone/*.ini
|
|
- etc/keystone/*.json
|
|
- etc/keystone/*.templates
|
|
stage: [$etc]
|
|
prime: [$etc]
|
|
|
|
# Nova
|
|
nova:
|
|
after: [keystone] # We abitrarily rely on keystone to be the one to patch things
|
|
plugin: python
|
|
python-version: python2
|
|
source: http://tarballs.openstack.org/nova/nova-stable-ocata.tar.gz
|
|
python-packages:
|
|
- pymysql
|
|
- uwsgi
|
|
- python-memcached
|
|
- git+https://github.com/openstack/snap.openstack#egg=snap.openstack
|
|
constraints: https://raw.githubusercontent.com/openstack/requirements/stable/ocata/upper-constraints.txt
|
|
build-packages:
|
|
- gcc
|
|
- libffi-dev
|
|
- libssl-dev
|
|
- libxml2-dev
|
|
- libxslt1-dev
|
|
|
|
nova-config:
|
|
after: [nova]
|
|
plugin: dump
|
|
source: http://tarballs.openstack.org/nova/nova-stable-ocata.tar.gz
|
|
filesets:
|
|
etc:
|
|
- etc/nova/*.conf
|
|
- etc/nova/*.ini
|
|
- etc/nova/*.json
|
|
- etc/nova/rootwrap.d
|
|
stage: [$etc]
|
|
prime: [$etc]
|
|
|
|
neutron:
|
|
after: [keystone] # We arbitrarily rely on keystone to patch some things
|
|
plugin: python
|
|
python-version: python2
|
|
source: http://tarballs.openstack.org/neutron/neutron-stable-ocata.tar.gz
|
|
python-packages:
|
|
- pymysql
|
|
- python-memcached
|
|
- git+https://github.com/openstack/snap.openstack#egg=snap.openstack
|
|
constraints: https://raw.githubusercontent.com/openstack/requirements/stable/ocata/upper-constraints.txt
|
|
build-packages:
|
|
- gcc
|
|
- libffi-dev
|
|
- libssl-dev
|
|
|
|
neutron-config:
|
|
after: [neutron]
|
|
plugin: dump
|
|
source: http://tarballs.openstack.org/neutron/neutron-stable-ocata.tar.gz
|
|
organize:
|
|
etc/*.conf: etc/neutron/
|
|
etc/*.ini: etc/neutron/
|
|
etc/*.json: etc/neutron/
|
|
etc/rootwrap.d/*: etc/neutron/rootwrap.d/
|
|
filesets:
|
|
etc:
|
|
- etc/neutron/*
|
|
stage: [$etc]
|
|
prime: [$etc]
|
|
|
|
# Glance
|
|
glance:
|
|
after: [keystone] # We arbitrarily rely on keystone to patch some things
|
|
plugin: python
|
|
python-version: python2
|
|
source: http://tarballs.openstack.org/glance/glance-stable-ocata.tar.gz
|
|
python-packages:
|
|
- httplib2
|
|
- os-brick
|
|
- oslo.rootwrap
|
|
- oslo.vmware
|
|
- pymysql
|
|
- python-cinderclient
|
|
- python-memcached
|
|
- python-swiftclient
|
|
- git+https://github.com/openstack/snap.openstack#egg=snap.openstack
|
|
constraints: https://raw.githubusercontent.com/openstack/requirements/stable/ocata/upper-constraints.txt
|
|
build-packages:
|
|
- gcc
|
|
- libffi-dev
|
|
- libssl-dev
|
|
- libxml2-dev
|
|
- libxslt1-dev
|
|
glance-config:
|
|
after: [glance]
|
|
plugin: dump
|
|
source: http://tarballs.openstack.org/glance/glance-stable-ocata.tar.gz
|
|
organize:
|
|
etc/*.conf: etc/glance/
|
|
etc/*.ini: etc/glance/
|
|
etc/*.json: etc/glance/
|
|
filesets:
|
|
etc:
|
|
- etc/glance/*.conf
|
|
- etc/glance/*.ini
|
|
- etc/glance/*.json
|
|
stage: [$etc]
|
|
prime: [$etc]
|
|
|
|
# Openvswitch
|
|
ovs-patches:
|
|
source: snap/patches/
|
|
plugin: dump
|
|
organize:
|
|
'*' : patches/
|
|
prime:
|
|
- -*
|
|
|
|
openvswitch:
|
|
# TODO: figure out a better way to fetch the version
|
|
source: http://openvswitch.org/releases/openvswitch-2.10.0.tar.gz
|
|
plugin: autotools
|
|
build-packages:
|
|
- libssl-dev
|
|
- libnuma-dev
|
|
- libcap-ng-dev
|
|
- libpcap-dev
|
|
- libunbound-dev
|
|
- python-all
|
|
- python-six
|
|
- python-setuptools
|
|
stage-packages:
|
|
- uuid-runtime
|
|
configflags:
|
|
- "--localstatedir=/var/snap/$SNAPCRAFT_PROJECT_NAME/common"
|
|
- "--sysconfdir=/var/snap/$SNAPCRAFT_PROJECT_NAME/etc"
|
|
after:
|
|
- ovs-patches
|
|
prepare: |
|
|
# Apply patches
|
|
for patch in ${SNAPCRAFT_STAGE}/patches/openvswitch/*.patch; do
|
|
echo "Applying $(basename "$patch") ..."
|
|
patch \
|
|
--batch \
|
|
--forward \
|
|
--strip 1 \
|
|
--input "$patch"
|
|
echo
|
|
done
|
|
|
|
# Openstack Shared Parts
|
|
templates:
|
|
after: [keystone, nova, neutron, openvswitch]
|
|
plugin: dump
|
|
source: snap
|
|
|
|
nginx:
|
|
after: [keystone, nova, neutron, openvswitch]
|
|
source: http://www.nginx.org/download/nginx-1.13.0.tar.gz
|
|
plugin: autotools
|
|
configflags:
|
|
- --prefix=/usr
|
|
- --http-log-path=/var/snap/microstack/common/log/nginx-access.log
|
|
- --error-log-path=/var/snap/microstack/common/log/nginx-error.log
|
|
- --lock-path=/var/snap/microstack/common/lock/nginx.lock
|
|
- --pid-path=/var/snap/microstack/common/run/nginx.pid
|
|
- --http-client-body-temp-path=/var/snap/microstack/common/lib/nginx_client_body
|
|
- --http-proxy-temp-path=/var/snap/microstack/common/lib/nginx_proxy
|
|
- --http-fastcgi-temp-path=/var/snap/microstack/common/lib/nginx_fastcgi
|
|
- --http-uwsgi-temp-path=/var/snap/microstack/common/lib/nginx_uwsgi
|
|
- --http-scgi-temp-path=/var/snap/microstack/common/lib/nginx_scgi
|
|
- --with-http_ssl_module
|
|
build-packages:
|
|
- libpcre3-dev
|
|
- libssl-dev
|
|
- python-six
|
|
prepare: |
|
|
export SNAP_ROOT="../../.."
|
|
export SNAP_SOURCE="$SNAP_ROOT/parts/nginx/build"
|
|
patch -d $SNAP_SOURCE -p1 < $SNAP_ROOT/patches/drop-nginx-setgroups.patch
|
|
|
|
libxml2:
|
|
source: http://xmlsoft.org/sources/libxml2-2.9.4.tar.gz
|
|
plugin: autotools
|
|
|
|
# libvirt/qemu
|
|
qemu:
|
|
plugin: nil
|
|
stage-packages:
|
|
- on amd64: [qemu-system-x86]
|
|
- on i386: [qemu-system-x86]
|
|
- on armhf: [qemu-system-arm]
|
|
- on arm64: [qemu-system-arm]
|
|
- qemu-utils
|
|
- libslang2
|
|
organize:
|
|
usr/lib/*/pulseaudio/libpulsecommon-8.0.so: usr/lib/libpulsecommon-8.0.so
|
|
usr/share/seabios/bios-256k.bin: qemu/bios-256k.bin
|
|
usr/share/seabios/vgabios-stdvga.bin: qemu/vgabios-stdvga.bin
|
|
usr/share/seabios/kvmvapic.bin: qemu/kvmvapic.bin
|
|
usr/lib/ipxe/qemu/efi-virtio.rom: qemu/efi-virtio.rom
|
|
|
|
kvm-support:
|
|
plugin: nil
|
|
stage-packages:
|
|
- try: [msr-tools]
|
|
|
|
libvirt:
|
|
source: .
|
|
source-subdir: libvirt-1.3.1
|
|
plugin: autotools
|
|
build-packages:
|
|
- libxml2-dev
|
|
- libxml-libxml-perl
|
|
- libcurl4-gnutls-dev
|
|
- libncurses5-dev
|
|
- libreadline-dev
|
|
- zlib1g-dev
|
|
- libgcrypt20-dev
|
|
- libgnutls28-dev
|
|
- libyajl-dev
|
|
- libpcap0.8-dev
|
|
- libaudit-dev
|
|
- libdevmapper-dev
|
|
- libpciaccess-dev
|
|
- libnl-3-dev
|
|
- libnl-route-3-dev
|
|
- uuid-dev
|
|
- try: [libnuma-dev]
|
|
- wget
|
|
- dpkg-dev
|
|
stage-packages:
|
|
- dmidecode
|
|
- dnsmasq
|
|
- libxml2
|
|
- libyajl2
|
|
- try: [libnuma1]
|
|
- libcurl3-gnutls
|
|
- libpciaccess0
|
|
configflags:
|
|
- --with-qemu
|
|
- --without-bhyve
|
|
- --without-xen
|
|
- --without-openvz
|
|
- --without-vmware
|
|
- --without-xenapi
|
|
- --without-esx
|
|
- --without-hyperv
|
|
- --without-lxc
|
|
- --without-vz
|
|
- --without-vbox
|
|
- --without-uml
|
|
- --without-sasl
|
|
- --without-storage-iscsi
|
|
- --without-storage-sheepdog
|
|
- --without-storage-rbd
|
|
- --without-storage-lvm
|
|
- --without-selinux
|
|
- --prefix=/snap/$SNAPCRAFT_PROJECT_NAME/current
|
|
- --localstatedir=/var/snap/$SNAPCRAFT_PROJECT_NAME/common
|
|
- --sysconfdir=/var/snap/$SNAPCRAFT_PROJECT_NAME/common
|
|
- DNSMASQ=/snap/$SNAPCRAFT_PROJECT_NAME/current/usr/sbin/dnsmasq
|
|
- DMIDECODE=/snap/$SNAPCRAFT_PROJECT_NAME/current/usr/sbin/dmidecode
|
|
override-build: |
|
|
wget http://archive.ubuntu.com/ubuntu/pool/main/libv/libvirt/libvirt_1.3.1.orig.tar.gz
|
|
wget http://archive.ubuntu.com/ubuntu/pool/main/libv/libvirt/libvirt_1.3.1-1ubuntu10.24.debian.tar.xz
|
|
wget http://archive.ubuntu.com/ubuntu/pool/main/libv/libvirt/libvirt_1.3.1-1ubuntu10.24.dsc
|
|
dpkg-source -x libvirt*.dsc
|
|
snapcraftctl build
|
|
organize:
|
|
# Hack to shift installed libvirt back to root of snap
|
|
# required to ensure that pathing to files etc works at
|
|
# runtime
|
|
# * is not used to avoid directory merge conflicts
|
|
snap/microstack/current/: ./
|
|
|
|
|
|
# MySQL
|
|
mysql-server:
|
|
prepare: ./stage_binaries.sh
|
|
build-packages: [libaio-dev, libmecab-dev, libnuma-dev, libncurses5-dev, wget, zlib1g-dev]
|
|
plugin: dump
|
|
source: ./
|
|
organize:
|
|
staging-files/usr: usr/
|
|
snap:
|
|
- usr/lib/mysql/plugin/mysql_no_login.so
|
|
- usr/lib/mysql/plugin/innodb_engine.so
|
|
- usr/lib/mysql/plugin/mypluglib.so
|
|
- usr/lib/mysql/plugin/locking_service.so
|
|
- usr/lib/mysql/plugin/adt_null.so
|
|
- usr/lib/mysql/plugin/rewriter.so
|
|
- usr/lib/mysql/plugin/keyring_udf.so
|
|
- usr/lib/mysql/plugin/libmemcached.so
|
|
- usr/lib/mysql/plugin/auth_socket.so
|
|
- usr/lib/mysql/plugin/validate_password.so
|
|
- usr/lib/mysql/plugin/semisync_slave.so
|
|
- usr/lib/mysql/plugin/semisync_master.so
|
|
- usr/lib/mysql/plugin/keyring_file.so
|
|
- usr/lib/mysql/plugin/mysqlx.so
|
|
- usr/lib/mysql/plugin/version_token.so
|
|
- usr/lib/mysql/plugin/libpluginmecab.so
|
|
- usr/lib/mysql/plugin/group_replication.so
|
|
- usr/sbin/mysqld
|
|
- usr/bin/mysqlpump
|
|
- usr/bin/mysql
|
|
- usr/bin/mysql_ssl_rsa_setup
|
|
- usr/bin/my_print_defaults
|
|
- usr/bin/mysqldump
|
|
- usr/bin/mysql_tzinfo_to_sql
|
|
- usr/bin/mysql_upgrade
|
|
- usr/share/mysql/*
|
|
mysql-scripts:
|
|
plugin: dump
|
|
source: ./scripts
|
|
organize:
|
|
mysql-show-help: bin/mysql-show-help
|
|
mysql-start-server: bin/mysql-start-server
|
|
mysql-start-client: bin/mysql-start-client
|
|
mysql-startup: bin/mysql-startup
|