Hello community, here is the log from the commit of package openstack-quickstart for openSUSE:Factory checked in at 2012-10-23 19:41:27 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/openstack-quickstart (Old) and /work/SRC/openSUSE:Factory/.openstack-quickstart.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openstack-quickstart", Maintainer is "[email protected]" Changes: -------- --- /work/SRC/openSUSE:Factory/openstack-quickstart/openstack-quickstart.changes 2012-02-14 13:07:03.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.openstack-quickstart.new/openstack-quickstart.changes 2012-10-23 19:41:30.000000000 +0200 @@ -1,0 +2,102 @@ +Tue Aug 14 11:36:09 UTC 2012 - [email protected] + +- export OS_TENANT_NAME for new glanceclient + +------------------------------------------------------------------- +Tue Aug 7 13:46:38 UTC 2012 - [email protected] + +- fix dashboard to use SSL, + but not use secure cookies without SSL + +------------------------------------------------------------------- +Fri Jul 27 12:03:03 UTC 2012 - [email protected] + +- update keystone_data.sh from upstream devstack (stable/essex branch) + +------------------------------------------------------------------- +Thu Jul 19 11:17:41 UTC 2012 - [email protected] + +- change libvirt to run qemu as user qemu + +------------------------------------------------------------------- +Fri Jul 6 13:12:51 UTC 2012 - [email protected] + +- fix pg_hba.conf 'horizon' database name + +------------------------------------------------------------------- +Fri Jun 22 08:15:35 UTC 2012 - [email protected] + +- allow nova-rootwrap + +------------------------------------------------------------------- +Wed Jun 13 13:12:00 UTC 2012 - [email protected] + +- Use SSL-enabled vhost with a self-signed certificate for dashboard +- Use secure session and csrf cookies in dashboard Django config + +------------------------------------------------------------------- +Tue Jun 12 11:14:53 UTC 2012 - [email protected] + +- Use system users prefixed with 'openstack-' + +------------------------------------------------------------------- +Tue Jun 5 13:38:33 UTC 2012 - [email protected] + +- allow to force lxc mode + +------------------------------------------------------------------- +Wed Apr 18 20:06:26 UTC 2012 - [email protected] + +- fix hardcoded horizon PW +- also start consoleauth service + +------------------------------------------------------------------- +Mon Apr 2 10:59:55 CEST 2012 - [email protected] + +- use postgresql by default for all services +- add support for postgresql for dashboard + +------------------------------------------------------------------- +Fri Mar 16 14:09:40 UTC 2012 - [email protected] + +- check for existence of volumes file (fixes bnc#752035) + +------------------------------------------------------------------- +Mon Feb 27 17:54:07 UTC 2012 - [email protected] + +- add postgresql support + +------------------------------------------------------------------- +Tue Feb 7 17:21:54 UTC 2012 - [email protected] + +- only initialize db once for glance +- setup keystone for glance + +------------------------------------------------------------------- +Tue Feb 7 13:12:21 UTC 2012 - [email protected] + +- split openstackquickstartrc +- update for new glance with two init scripts + +------------------------------------------------------------------- +Tue Feb 7 12:40:54 UTC 2012 - [email protected] + +- replace pipelines in /etc/nova/api-paste.ini to use keystone + +------------------------------------------------------------------- +Mon Feb 6 12:12:09 UTC 2012 - [email protected] + +- upgrade keystone database to latest schema before + adding anything to it + +------------------------------------------------------------------- +Mon Feb 6 10:33:13 UTC 2012 - [email protected] + +- add connection_type=libvirt + +------------------------------------------------------------------- +Fri Jan 27 12:13:37 UTC 2012 - [email protected] + +- drop unsupported --flat_injected=False + +------------------------------------------------------------------- New: ---- keystone_data.sh openstack-quickstart-democleanup openstackquickstartrc ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ openstack-quickstart.spec ++++++ --- /var/tmp/diff_new_pack.cz600n/_old 2012-10-23 19:41:32.000000000 +0200 +++ /var/tmp/diff_new_pack.cz600n/_new 2012-10-23 19:41:32.000000000 +0200 @@ -1,7 +1,7 @@ # # spec file for package openstack-quickstart # -# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -12,6 +12,11 @@ # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. +# Please submit bugfixes or comments via http://bugs.opensuse.org/ +# + + + Name: openstack-quickstart Version: 2011.3 Release: 0 @@ -24,24 +29,32 @@ Source1: openstack-quickstart-extranodesetup Source2: openstack-loopback-lvm Source3: getkstoken +Source4: keystone_data.sh +Source5: openstack-quickstart-democleanup Source10: bash.openstackrc +Source11: openstackquickstartrc Source100: COPYING +Suggests: patterns-OpenStack-controller patterns-OpenStack-compute-node BuildRoot: %{_tmppath}/%{name}-%{version}-build %description -Includes scripts and configs to easily generate an openstack demo setup. +Includes scripts and configs to easily generate an openstack demo +setup. %prep %build %install -mkdir -p %{buildroot}%{_sysconfdir} %{buildroot}%{_sbindir} %{buildroot}%{_bindir} +mkdir -p %{buildroot}%{_sysconfdir} %{buildroot}%{_sbindir} %{buildroot}%{_bindir} %{buildroot}/usr/lib/devstack install -p -m 755 %{SOURCE0} %{buildroot}%{_sbindir} install -p -m 755 %{SOURCE1} %{buildroot}%{_sbindir} install -p -m 755 %{SOURCE2} %{buildroot}%{_sbindir} +install -p -m 755 %{SOURCE5} %{buildroot}%{_sbindir} install -p -m 755 %{SOURCE3} %{buildroot}%{_bindir} +install -p -m 755 %{SOURCE4} %{buildroot}/usr/lib/devstack install -p -m 644 %{SOURCE10} %{buildroot}%{_sysconfdir} +install -p -m 600 %{SOURCE11} %{buildroot}%{_sysconfdir} cp -a %{SOURCE100} . %files @@ -49,7 +62,9 @@ %config %{_sbindir}/openstack-quickstart-* %{_sbindir}/openstack-loopback-lvm %{_bindir}/getkstoken +/usr/lib/devstack %config %{_sysconfdir}/bash.openstackrc +%config %{_sysconfdir}/openstackquickstartrc %doc COPYING %changelog ++++++ bash.openstackrc ++++++ --- /var/tmp/diff_new_pack.cz600n/_old 2012-10-23 19:41:33.000000000 +0200 +++ /var/tmp/diff_new_pack.cz600n/_new 2012-10-23 19:41:33.000000000 +0200 @@ -18,8 +18,15 @@ fi export EC2_ACCESS_KEY=$NOVA_PROJECT_ID export EC2_SECRET_KEY=$NOVA_API_KEY - # for glance - export TOKEN=`getkstoken` + # for glance/keystone + export OS_AUTH_USER=$NOVA_USERNAME + export OS_USERNAME=$NOVA_USERNAME + export OS_TENANT_NAME=$NOVA_PROJECT_ID + export OS_AUTH_KEY=$NOVA_API_KEY + export OS_PASSWORD=$NOVA_API_KEY + export OS_AUTH_TENANT=$NOVA_PROJECT_ID + export OS_AUTH_URL=$NOVA_URL + export OS_AUTH_STRATEGY=keystone } export NOVA_URL=http://127.0.0.1:5000/v2.0/ @@ -31,9 +38,8 @@ # for euca2ools export EC2_URL=http://127.0.0.1:8773/services/Cloud +# for keystone administration +export SERVICE_ENDPOINT=http://127.0.0.1:35357/v2.0 +# don't put secrets in world readable files - this line is just for reference +#export SERVICE_TOKEN=999888777666 -#export OS_AUTH_USER=$NOVA_USERNAME -#export OS_AUTH_KEY=$NOVA_API_KEY -#export OS_AUTH_TENANT=$NOVA_PROJECT_ID -#export OS_AUTH_URL=$NOVA_URL -#export OS_AUTH_STRATEGY=keystone ++++++ keystone_data.sh ++++++ #!/bin/bash # # Initial data for Keystone using python-keystoneclient # # Tenant User Roles # ------------------------------------------------------------------ # admin admin admin # service glance admin # service nova admin, [ResellerAdmin (swift only)] # service quantum admin # if enabled # service swift admin # if enabled # demo admin admin # demo demo Member, anotherrole # invisible_to_admin demo Member # # Variables set before calling this script: # SERVICE_TOKEN - aka admin_token in keystone.conf # SERVICE_ENDPOINT - local Keystone admin endpoint # SERVICE_TENANT_NAME - name of tenant containing service accounts # ENABLED_SERVICES - stack.sh's list of services to start # DEVSTACK_DIR - Top-level DevStack directory ADMIN_PASSWORD=${ADMIN_PASSWORD:-secrete} SERVICE_PASSWORD=${SERVICE_PASSWORD:-$ADMIN_PASSWORD} export SERVICE_TOKEN=$SERVICE_TOKEN export SERVICE_ENDPOINT=$SERVICE_ENDPOINT SERVICE_TENANT_NAME=${SERVICE_TENANT_NAME:-service} function get_id () { echo `$@ | awk '/ id / { print $4 }'` } # Tenants ADMIN_TENANT=$(get_id keystone tenant-create --name=admin) SERVICE_TENANT=$(get_id keystone tenant-create --name=$SERVICE_TENANT_NAME) DEMO_TENANT=$(get_id keystone tenant-create --name=demo) INVIS_TENANT=$(get_id keystone tenant-create --name=invisible_to_admin) # Users ADMIN_USER=$(get_id keystone user-create --name=admin \ --pass="$ADMIN_PASSWORD" \ [email protected]) DEMO_USER=$(get_id keystone user-create --name=demo \ --pass="$ADMIN_PASSWORD" \ [email protected]) # Roles ADMIN_ROLE=$(get_id keystone role-create --name=admin) KEYSTONEADMIN_ROLE=$(get_id keystone role-create --name=KeystoneAdmin) KEYSTONESERVICE_ROLE=$(get_id keystone role-create --name=KeystoneServiceAdmin) # ANOTHER_ROLE demonstrates that an arbitrary role may be created and used # TODO(sleepsonthefloor): show how this can be used for rbac in the future! ANOTHER_ROLE=$(get_id keystone role-create --name=anotherrole) # Add Roles to Users in Tenants keystone user-role-add --user_id $ADMIN_USER --role_id $ADMIN_ROLE --tenant_id $ADMIN_TENANT keystone user-role-add --user_id $ADMIN_USER --role_id $ADMIN_ROLE --tenant_id $DEMO_TENANT keystone user-role-add --user_id $DEMO_USER --role_id $ANOTHER_ROLE --tenant_id $DEMO_TENANT # TODO(termie): these two might be dubious keystone user-role-add --user_id $ADMIN_USER --role_id $KEYSTONEADMIN_ROLE --tenant_id $ADMIN_TENANT keystone user-role-add --user_id $ADMIN_USER --role_id $KEYSTONESERVICE_ROLE --tenant_id $ADMIN_TENANT # The Member role is used by Horizon and Swift so we need to keep it: MEMBER_ROLE=$(get_id keystone role-create --name=Member) keystone user-role-add --user_id $DEMO_USER --role_id $MEMBER_ROLE --tenant_id $DEMO_TENANT keystone user-role-add --user_id $DEMO_USER --role_id $MEMBER_ROLE --tenant_id $INVIS_TENANT # Configure service users/roles NOVA_USER=$(get_id keystone user-create --name=nova \ --pass="$SERVICE_PASSWORD" \ --tenant_id $SERVICE_TENANT \ [email protected]) keystone user-role-add --tenant_id $SERVICE_TENANT \ --user_id $NOVA_USER \ --role_id $ADMIN_ROLE GLANCE_USER=$(get_id keystone user-create --name=glance \ --pass="$SERVICE_PASSWORD" \ --tenant_id $SERVICE_TENANT \ [email protected]) keystone user-role-add --tenant_id $SERVICE_TENANT \ --user_id $GLANCE_USER \ --role_id $ADMIN_ROLE if [[ "$ENABLED_SERVICES" =~ "swift" ]]; then SWIFT_USER=$(get_id keystone user-create --name=swift \ --pass="$SERVICE_PASSWORD" \ --tenant_id $SERVICE_TENANT \ [email protected]) keystone user-role-add --tenant_id $SERVICE_TENANT \ --user_id $SWIFT_USER \ --role_id $ADMIN_ROLE # Nova needs ResellerAdmin role to download images when accessing # swift through the s3 api. The admin role in swift allows a user # to act as an admin for their tenant, but ResellerAdmin is needed # for a user to act as any tenant. The name of this role is also # configurable in swift-proxy.conf RESELLER_ROLE=$(get_id keystone role-create --name=ResellerAdmin) keystone user-role-add --tenant_id $SERVICE_TENANT \ --user_id $NOVA_USER \ --role_id $RESELLER_ROLE fi if [[ "$ENABLED_SERVICES" =~ "quantum" ]]; then QUANTUM_USER=$(get_id keystone user-create --name=quantum \ --pass="$SERVICE_PASSWORD" \ --tenant_id $SERVICE_TENANT \ [email protected]) keystone user-role-add --tenant_id $SERVICE_TENANT \ --user_id $QUANTUM_USER \ --role_id $ADMIN_ROLE fi ++++++ openstack-loopback-lvm ++++++ --- /var/tmp/diff_new_pack.cz600n/_old 2012-10-23 19:41:33.000000000 +0200 +++ /var/tmp/diff_new_pack.cz600n/_new 2012-10-23 19:41:33.000000000 +0200 @@ -16,15 +16,17 @@ #losetup -d $loop -# calc wanted size -size=$(df -P -k /var/lib/nova/|tail -1| perl -ne 'm/^\S+\s*\d+\s+\d+\s+(\d+)/; print int($1*0.3)') +if ! test -e $f ; then + # calc wanted size + size=$(df -P -k /var/lib/nova/|tail -1| perl -ne 'm/^\S+\s*\d+\s+\d+\s+(\d+)/; print int($1*0.3)') -if [ $size -le 2000000 ] ; then - echo "error detecting free space or FS too small: $size KB" - exit 12 -fi + if [ $size -le 2000000 ] ; then + echo "error detecting free space or FS too small: $size KB" + exit 12 + fi -truncate --size=${size}K $f + truncate --size=${size}K $f +fi losetup $loop $f pvcreate $loop vgcreate nova-volumes $loop ++++++ openstack-quickstart-democleanup ++++++ #!/bin/bash # Warning: this script deletes most of the files # and stops most services of a cloud from openstack-quickstart-demosetup # try normal cleanup first to stop VMs nova list| perl -ne 'if(/^\| (\S+) /){print "$1\n"}' |xargs -l nova delete nova image-list| perl -ne 'if(/^\| (\S+) /){print "$1\n"}' | xargs -l nova image-delete for i in /etc/init.d/{openstack-*,rabbitmq-server,memcached,libvirtd} ; do $i stop done killall dnsmasq killall postmaster /etc/init.d/postgresql restart cd / for n in nova keystone glance horizon ; do sudo -u postgres dropdb $n sudo -u postgres dropuser $n echo "drop database $n;" | mysql done for m in /var/lib/nova/instances/*/rootfs ; do umount $m # for LXC done killall qemu-nbd 2>/dev/null # for LXC rm -f /var/lib/keystone/keystone.sqlite /var/lib/openstack-dashboard/openstack_dashboard/local/dashboard_openstack.sqlite3 /var/lib/glance/glance.sqlite rm -rf /var/lib/nova/instances/* rm -f /var/lib/glance/images/* rm -f /var/log/keystone/* /var/log/nova/* /var/log/glance/* rm -f /var/lib/nova/*/* /etc/init.d/postgresql stop ++++++ openstack-quickstart-demosetup ++++++ --- /var/tmp/diff_new_pack.cz600n/_old 2012-10-23 19:41:33.000000000 +0200 +++ /var/tmp/diff_new_pack.cz600n/_new 2012-10-23 19:41:33.000000000 +0200 @@ -1,22 +1,41 @@ #!/bin/bash -x -pw=openstack -mpw=m$pw -IP=127.0.0.1 -testnet=10.10.134.16/29 -/etc/init.d/mysql start +. /etc/openstackquickstartrc +ADMIN_PASSWORD=$pw +SERVICE_HOST=$IP + +KEYSTONE_SYSTEM_USER=openstack-keystone +KEYSTONE_SYSTEM_GROUP=openstack-keystone +GLANCE_SYSTEM_USER=openstack-glance +GLANCE_SYSTEM_GROUP=openstack-glance +HORIZON_SYSTEM_USER=openstack-horizon echo "Setting up OpenStack demo controller..." +if [ "$DB" = "postgresql" ] ; then + zypper -n in postgresql-server python-psycopg2 + /etc/init.d/postgresql restart +else + # start mysql + /etc/init.d/mysql start +fi + + +grep -q -e vmx -e svm /proc/cpuinfo || MODE=lxc # use lxc or qemu, if kvm is unavailable -if rpm -q openstack-nova-compute >/dev/null && ! grep -q -e vmx -e svm /proc/cpuinfo ; then +if rpm -q openstack-nova-compute >/dev/null ; then + if [ "$MODE" = lxc ] ; then sed -i -e 's/\(--libvirt_type\).*/\1=lxc/' /etc/nova/nova.conf zypper -n install lxc - modprobe nbd - sed -i -e 's/\(MODULES_LOADED_ON_BOOT="\)/\1nbd\ /' /etc/sysconfig/kernel echo mount -t cgroup none /cgroup >> /etc/init.d/boot.local mkdir /cgroup mount -t cgroup none /cgroup + else + modprobe kvm-intel ; modprobe kvm-amd + sed -i -e 's/\(MODULES_LOADED_ON_BOOT="\)/\1kvm-intel kvm-amd\ /' /etc/sysconfig/kernel + fi + modprobe nbd + sed -i -e 's/\(MODULES_LOADED_ON_BOOT="\)/\1nbd\ /' /etc/sysconfig/kernel fi # activate ip-forwarding @@ -52,44 +71,146 @@ # configure dashboard/apache cat >/etc/apache2/conf.d/openstack-dashboard.conf <<EOF -WSGIScriptAlias / /var/lib/openstack-dashboard/dashboard/wsgi/django.wsgi -Alias /static/dashboard /var/lib/openstack-dashboard/dashboard/static/dashboard +<IfDefine SSL> + RewriteEngine On + RewriteCond %{SERVER_PORT} !^443$ + RewriteRule / https://%{HTTP_HOST}%{REQUEST_URI} [L,R] + + <VirtualHost *:443> + ServerName www.example.com + ServerAdmin [email protected] + + SSLEngine On + SSLCertificateFile /etc/apache2/ssl.crt/openstack-dashboard-server.crt + SSLCertificateKeyFile /etc/apache2/ssl.key/openstack-dashboard-server.key + + DocumentRoot /var/lib/openstack-dashboard/ + + Alias /static/horizon /var/lib/openstack-dashboard/horizon/static/horizon + <Directory /var/lib/openstack-dashboard/horizon/static/> + Order allow,deny + Allow from all + </Directory> + + Alias /static /var/lib/openstack-dashboard/openstack_dashboard/static + <Directory /var/lib/openstack-dashboard/openstack_dashboard/static/> + Order allow,deny + Allow from all + </Directory> + + WSGIScriptAlias / /var/lib/openstack-dashboard/openstack_dashboard/wsgi/django.wsgi + <Directory /var/lib/openstack-dashboard/openstack_dashboard/wsgi/> + Order allow,deny + Allow from all + </Directory> + </VirtualHost> +</IfDefine> +EOF +a2enmod rewrite +a2enmod ssl +a2enmod wsgi +a2enflag SSL -<Directory /var/lib/openstack-dashboard/dashboard/wsgi/> -Order allow,deny -Allow from all -</Directory> +DASHBOARD_LOCAL_SET=/var/lib/openstack-dashboard/openstack_dashboard/local/local_settings.py +if grep -q "^\s*CACHE_BACKEND" $DASHBOARD_LOCAL_SET +then + sed -i "s|^\s*CACHE_BACKEND.*$|CACHE_BACKEND = 'memcached://127.0.0.1:11211/'|" $DASHBOARD_LOCAL_SET +else + echo "CACHE_BACKEND = 'memcached://127.0.0.1:11211/'" >> $DASHBOARD_LOCAL_SET +fi +if [ "$DB" = "postgresql" ] +then +cat >> $DASHBOARD_LOCAL_SET <<EODASHDB +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.postgresql_psycopg2', + 'NAME': 'horizon', + 'USER': 'horizon', + 'PASSWORD': '$mpw', + } +} +EODASHDB +fi -<Directory /var/lib/openstack-dashboard/dashboard/static/dashboard> -Order allow,deny -Allow from all -</Directory> -EOF -a2enmod wsgi -cd /var/lib/openstack-dashboard && python -m 'dashboard.manage' syncdb -chown -R wwwrun. /var/lib/openstack-dashboard/local/ +sed -i -e "s/^USE_SSL =.*/USE_SSL = True/" $DASHBOARD_LOCAL_SET +# Use 'secure' session and CSRF cookies (bnc#753582): +cat >> $DASHBOARD_LOCAL_SET <<EOSEC +# Use 'secure' cookies when we use SSL, see https://docs.djangoproject.com/en/1.4/topics/security/: +SESSION_COOKIE_SECURE = CSRF_COOKIE_SECURE = USE_SSL +EOSEC +# replace default IP in all configuration files +sed -i -e "s;127.0.0.1;$IP;" /etc/nova/api-paste.ini /etc/glance/glance-api.conf /etc/glance/glance-registry.conf # configure nova -sed -i -e "s;127.0.0.1;$IP;" /etc/nova/api-paste.ini /etc/glance/glance-api.conf /etc/glance/glance-registry.conf -perl -i.bak -pe "s/root:<mysql-password>/nova:$mpw/; s/<IP>/$IP/g; s/(--network_manager).*/\$1=nova.network.manager.FlatDHCPManager/;" /etc/nova/nova.conf -echo "--vncproxy_url=http://$IP:6080" >> /etc/nova/nova.conf +perl -i.bak -pe "s,--sql_connection=\w+://\w+:[^\@:]*,--sql_connection=$DB://nova:$mpw,; s/<IP>/$IP/g; s/(--network_manager).*/\$1=nova.network.manager.FlatDHCPManager/;" /etc/nova/nova.conf echo '--flat_network_bridge=br0' >> /etc/nova/nova.conf echo '--allow_admin_api' >> /etc/nova/nova.conf -echo '--flat_injected=False' >> /etc/nova/nova.conf +echo '--connection_type=libvirt' >> /etc/nova/nova.conf echo '--image_service=nova.image.glance.GlanceImageService' >> /etc/nova/nova.conf echo "--glance_api_servers=$IP:9292" >> /etc/nova/nova.conf -echo "--osapi_extensions_path=`ls -d /usr/lib*/python*/site-packages/extensions | head -n 1`" >> /etc/nova/nova.conf +echo "--auth_strategy=keystone" >> /etc/nova/nova.conf +echo "--novncproxy_base_url=http://$IP:6080/vnc_auto.html" >> /etc/nova/nova.conf +extensions_path=`ls -d /usr/lib*/python*/site-packages/extensions | head -n 1` +if [ -n "$extensions_path" ]; then + echo "--osapi_extensions_path=" >> /etc/nova/nova.conf +fi + +grep -q nova-rootwrap /etc/sudoers || echo "openstack-nova ALL=(ALL) NOPASSWD:/usr/bin/nova-rootwrap" >> /etc/sudoers + +perl -i -pe "s/%SERVICE_TOKEN%/$SERVICE_TOKEN/;" /etc/nova/api-paste.ini # obsolete 2012-03-19? +for m in nova glance ; do + sed -i -e 's/%SERVICE_TENANT_NAME%/service/' -e "s/%SERVICE_USER%/$m/" -e "s/%SERVICE_PASSWORD%/$SERVICE_TOKEN\nadmin_token = $SERVICE_TOKEN/" /etc/$m/*.ini +done + +# replace pipelines to use keystone +function replace_pipeline() { + sed "/\[pipeline:$1\]/,/\[/s/^pipeline = .*/pipeline = $2/" -i /etc/nova/api-paste.ini +} +replace_pipeline "ec2cloud" "ec2faultwrap logrequest totoken authtoken keystonecontext cloudrequest authorizer validator ec2executor" +replace_pipeline "ec2admin" "ec2faultwrap logrequest totoken authtoken keystonecontext adminrequest authorizer ec2executor" +replace_pipeline "openstack_compute_api_v2" "faultwrap authtoken keystonecontext ratelimit osapi_compute_app_v2" +replace_pipeline "openstack_volume_api_v1" "faultwrap authtoken keystonecontext ratelimit osapi_volume_app_v1" + +if [ "$DB" = "postgresql" ] ; then + DATADIR=/var/lib/pgsql/data + if ! grep -q ::/0 /var/lib/pgsql/data/pg_hba.conf ; then + sed -i "s/^\(host .*\) ident\(.*\)/\1 md5 \2/" "$DATADIR/pg_hba.conf" + sed -i "s/^\(local \)/local horizon all md5 sameuser\n\1/" "$DATADIR/pg_hba.conf" + # allow remote connections: + echo "listen_addresses = '*'" >> $DATADIR/postgresql.conf + echo "host all all 0.0.0.0/0 md5 sameuser" >> $DATADIR/pg_hba.conf + echo "host all all ::/0 md5 sameuser" >> $DATADIR/pg_hba.conf + if rpm -q postgresql|grep -q postgresql-9 ; then + sed -i 's/\s*sameuser$//' $DATADIR/pg_hba.conf # adapt config syntax to postgresql-9 + fi + fi + sudo -u postgres dropdb -O keystone # needed for keystone_data.sh + for DBNAME in nova keystone glance horizon ; do + sudo -u postgres psql -c "CREATE ROLE $DBNAME PASSWORD '$mpw' LOGIN;" + sudo -u postgres createdb -O $DBNAME $DBNAME + done + sudo -u postgres createuser -s root + /etc/init.d/postgresql restart + insserv postgresql +else + echo | mysql -u root || pwquery=-p + for DBNAME in nova keystone glance horizon ; do + echo " + set global character_set_server=latin1; + set session character_set_server=latin1; + CREATE DATABASE IF NOT EXISTS $DBNAME; + GRANT ALL PRIVILEGES ON $DBNAME.* TO '$DBNAME'@localhost IDENTIFIED BY '$mpw'; + GRANT ALL PRIVILEGES ON $DBNAME.* TO '$DBNAME'@'%' IDENTIFIED BY '$mpw'; + " | mysql -u root $pwquery + done +fi + + +# sync dashboard DB "after" the database is created +cd /var/lib/openstack-dashboard && su -s /bin/bash -c "umask 0027; python -m 'manage' syncdb" wwwrun -echo | mysql -u root || pwquery=-p -echo " -set global character_set_server=latin1; -set session character_set_server=latin1; -CREATE DATABASE IF NOT EXISTS nova; -GRANT ALL PRIVILEGES ON nova.* TO 'nova'@localhost IDENTIFIED BY '$mpw'; -GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY '$mpw'; -" | mysql -u root $pwquery nova-manage db sync # optional - makes life better with little RAM @@ -102,45 +223,79 @@ #nova-manage network create 10.10.134.32/27 1 32 nova-manage network create --fixed_range_v4=$testnet --label=testnet + +# setup glance + +for f in api registry ; do + grep paste_deploy /etc/glance/glance-$f.conf || echo -e "[paste_deploy]\nflavor = keystone" >> /etc/glance/glance-$f.conf +done +sed -i "s%sql_connection =.*%sql_connection = $DB://glance:$mpw@$IP/glance%" /etc/glance/glance-registry.conf # db_sync is broken for postgresql +#sed -i 's%sql_connection =.*%sql_connection = sqlite:////var/lib/glance/glance.sqlite%' /etc/glance/glance-registry.conf +glance-manage db_sync +chown -R $GLANCE_SYSTEM_USER:$GLANCE_SYSTEM_GROUP /var/lib/glance /var/log/glance + # keystone demo setup, based on devstack.sh -# Tenants -keystone-manage tenant add admin -keystone-manage tenant add demo - -# Users -keystone-manage user add admin $pw -keystone-manage user add demo $pw - -# Roles -keystone-manage role add Admin -keystone-manage role add Member -keystone-manage role add KeystoneAdmin -keystone-manage role add KeystoneServiceAdmin -keystone-manage role grant Admin admin admin -keystone-manage role grant Member demo demo -keystone-manage role grant Admin admin demo -keystone-manage role grant Admin admin -keystone-manage role grant KeystoneAdmin admin -keystone-manage role grant KeystoneServiceAdmin admin - -# Services -keystone-manage service add nova compute "Nova Compute Service" -keystone-manage service add glance image "Glance Image Service" -keystone-manage service add keystone identity "Keystone Identity Service" - -#endpointTemplates -keystone-manage endpointTemplates add RegionOne nova http://$IP:8774/v1.1/%tenant_id% http://$IP:8774/v1.1/%tenant_id% http://$IP:8774/v1.1/%tenant_id% 1 1 -keystone-manage endpointTemplates add RegionOne glance http://$IP:9292/v1.1/%tenant_id% http://$IP:9292/v1.1/%tenant_id% http://$IP:9292/v1.1/%tenant_id% 1 1 -keystone-manage endpointTemplates add RegionOne keystone http://$IP:5000/v2.0 http://$IP:35357/v2.0 http://$IP:5000/v2.0 1 1 - -# Tokens -keystone-manage token add 999888777666 admin admin 2023-02-23T00:42 - -# EC2 related creds - note we are setting the secret key to ADMIN_PASSWORD -# but keystone doesn't parse them - it is just a blob from keystone's -# point of view -keystone-manage credentials add admin EC2 'admin' $pw admin || echo "no support for adding credentials" -keystone-manage credentials add demo EC2 'demo' $pw demo || echo "no support for adding credentials" + +sed -i -e 's/kvs/sql/' -e "s,^connection =.*,connection = $DB://keystone:$mpw@$IP/keystone," /etc/keystone/keystone.conf +#sed -i -e 's/kvs/sql/' -e 's,^connection =.*,connection =sqlite:////var/lib/keystone/keystone.sqlite,' /etc/keystone/keystone.conf +rm -f /var/lib/keystone/keystone.sqlite # cleanup DB as devstack's script fails otherwise +sed -i -e "s/^admin_token .*/admin_token = $SERVICE_TOKEN/" /etc/keystone/keystone.conf + +KEYSTONE_CATALOG=/etc/keystone/default_catalog.templates +sed -e "s,%SERVICE_HOST%,$SERVICE_HOST,g" -e "s/%S3_SERVICE_PORT%/8080/" $KEYSTONE_CATALOG.sample > $KEYSTONE_CATALOG +# Upgrade the database to the latest schema +su - $KEYSTONE_SYSTEM_USER -s /bin/bash -c "keystone-manage --config-file=/etc/keystone/keystone.conf db_sync" +# +## Tenants +#keystone-manage tenant add admin +#keystone-manage tenant add demo +# +## Users +#keystone-manage user add admin $pw +#keystone-manage user add demo $pw +# +## Roles +#keystone-manage role add Admin +#keystone-manage role add Member +#keystone-manage role add KeystoneAdmin +#keystone-manage role add KeystoneServiceAdmin +#keystone-manage role grant Admin admin admin +#keystone-manage role grant Member demo demo +#keystone-manage role grant Admin admin demo +#keystone-manage role grant Admin admin +#keystone-manage role grant KeystoneAdmin admin +#keystone-manage role grant KeystoneServiceAdmin admin +# +## Services +#keystone-manage service add nova compute "Nova Compute Service" +#keystone-manage service add glance image "Glance Image Service" +#keystone-manage service add keystone identity "Keystone Identity Service" +# +##endpointTemplates +#keystone-manage endpointTemplates add RegionOne nova http://$IP:8774/v1.1/%tenant_id% http://$IP:8774/v1.1/%tenant_id% http://$IP:8774/v1.1/%tenant_id% 1 1 +#keystone-manage endpointTemplates add RegionOne glance http://$IP:9292/v1.1/%tenant_id% http://$IP:9292/v1.1/%tenant_id% http://$IP:9292/v1.1/%tenant_id% 1 1 +#keystone-manage endpointTemplates add RegionOne keystone http://$IP:5000/v2.0 http://$IP:35357/v2.0 http://$IP:5000/v2.0 1 1 +# +## Tokens +#keystone-manage token add $SERVICE_TOKEN admin admin 2023-02-23T00:42 +# +## EC2 related creds - note we are setting the secret key to ADMIN_PASSWORD +## but keystone doesn't parse them - it is just a blob from keystone's +## point of view +#keystone-manage credentials add admin EC2 'admin' $pw admin || echo "no support for adding credentials" +#keystone-manage credentials add demo EC2 'demo' $pw demo || echo "no support for adding credentials" + + +# 2012-02-28 keystone light setup +/etc/init.d/openstack-keystone restart +ENABLED_SERVICES=${ENABLED_SERVICES:-g-api,g-reg,key,n-api,n-cpu,n-net,n-vol,n-sch,n-novnc,n-xvnc,horizon,mysql,rabbit} +KEYSTONE_AUTH_HOST=${KEYSTONE_AUTH_HOST:-$SERVICE_HOST} +KEYSTONE_AUTH_PORT=${KEYSTONE_AUTH_PORT:-35357} +KEYSTONE_AUTH_PROTOCOL=${KEYSTONE_AUTH_PROTOCOL:-http} +SERVICE_ENDPOINT=$KEYSTONE_AUTH_PROTOCOL://$KEYSTONE_AUTH_HOST:$KEYSTONE_AUTH_PORT/v2.0 +ADMIN_PASSWORD=$ADMIN_PASSWORD SERVICE_TENANT_NAME=service SERVICE_PASSWORD=$SERVICE_TOKEN SERVICE_TOKEN=$SERVICE_TOKEN SERVICE_ENDPOINT=$SERVICE_ENDPOINT DEVSTACK_DIR=/root ENABLED_SERVICES=$ENABLED_SERVICES bash /usr/lib/devstack/keystone_data.sh + +chown $KEYSTONE_SYSTEM_USER:$KEYSTONE_SYSTEM_GROUP -R /var/lib/keystone/ rm -f /usr/lib/python*/site-packages/nova-iptables.lock.lock # workaround bug @@ -148,21 +303,28 @@ SuSEfirewall2 stop # interferes with openstack's network/firewall insserv -r SuSEfirewall2_setup insserv -r SuSEfirewall2_init -/etc/init.d/boot.apparmor stop # interferes with openstack-nova-network -insserv -r boot.apparmor - +if which aa-complain >&/dev/null; then + aa-complain /etc/apparmor.d/usr.sbin.libvirtd +fi +if [ -e /etc/init.d/boot.apparmor ]; then + /etc/init.d/boot.apparmor stop # interferes with openstack-nova-network + insserv -r boot.apparmor +fi # configure NTP, because we need synchronized time between nodes grep -q ntp.org /etc/ntp.conf || echo server pool.ntp.org >> /etc/ntp.conf +# change libvirt to run qemu as user qemu +sed -i -e 's;.*user.*=.*;user = "qemu";' /etc/libvirt/qemu.conf + # start services -for s in ntp libvirtd mysql rabbitmq-server iscsitarget open-iscsi tgtd memcached apache2 openstack-nova-api openstack-nova-scheduler openstack-nova-network openstack-nova-compute openstack-nova-vncproxy openstack-glance openstack-keystone +for s in ntp libvirtd mysql rabbitmq-server iscsitarget open-iscsi tgtd memcached apache2 openstack-nova-api openstack-nova-scheduler openstack-nova-network openstack-nova-compute openstack-nova-vncproxy openstack-glance-api openstack-glance-registry openstack-keystone openstack-nova-consoleauth openstack-novncproxy do - i=/etc/init.d/$s - if [ -x $i ] ; then - insserv $s - $i restart - fi + i=/etc/init.d/$s + if [ -x $i ] ; then + insserv $s + $i restart + fi done /usr/sbin/openstack-loopback-lvm ++++++ openstack-quickstart-extranodesetup ++++++ --- /var/tmp/diff_new_pack.cz600n/_old 2012-10-23 19:41:33.000000000 +0200 +++ /var/tmp/diff_new_pack.cz600n/_new 2012-10-23 19:41:33.000000000 +0200 @@ -1,10 +1,7 @@ #!/bin/bash -x # assumes the openstack-compute-node pattern installed -pw=openstack -mpw=m$pw -# cloud controller's IP-address: -IP=10.10.135.7 +. /etc/openstackquickstartrc echo "Setting up OpenStack demo extra node..." @@ -49,13 +46,19 @@ /etc/init.d/network start fi +ownip=`ip addr show dev br0 | perl -ne 'm/inet (\d+\.\d+\.\d+\.\d+)/ && print $1'` # configure nova sed -i -e "s;127.0.0.1;$IP;" /etc/nova/api-paste.ini /etc/glance/glance-api.conf /etc/glance/glance-registry.conf /etc/bash.openstackrc perl -i.bak -pe "s/root:<mysql-password>/nova:$mpw/; s/<IP>/$IP/g; s/(--network_manager).*/\$1=nova.network.manager.FlatDHCPManager/;" /etc/nova/nova.conf -echo "--vncproxy_url=http://$IP:6080" >> /etc/nova/nova.conf +if [ "$DB" = "postgresql" ] ; then + perl -i -pe 's/--sql_connection=\w+/--sql_connection=postgresql/' /etc/nova/nova.conf +fi echo '--flat_network_bridge=br0' >> /etc/nova/nova.conf echo "--image_service=nova.image.glance.GlanceImageService" >> /etc/nova/nova.conf echo "--glance_api_servers=$IP:9292" >> /etc/nova/nova.conf +echo "--novncproxy_base_url=http://$IP:6080/vnc_auto.html" >> /etc/nova/nova.conf +echo "--vncserver_listen=$ownip" >> /etc/nova/nova.conf +echo "--vncserver_proxyclient_address=$ownip" >> /etc/nova/nova.conf SuSEfirewall2 stop # interferes with openstack's network/firewall insserv -r SuSEfirewall2_setup @@ -67,8 +70,11 @@ # configure NTP, because we need synchronized time between nodes grep -q ntp.org /etc/ntp.conf || echo server pool.ntp.org >> /etc/ntp.conf +# change libvirt to run qemu as user qemu +sed -i -e 's;.*user.*=.*;user = "qemu";' /etc/libvirt/qemu.conf + # start services -for s in ntp libvirtd iscsitarget open-iscsi tgtd openstack-nova-compute +for s in ntp libvirtd iscsitarget open-iscsi tgtd openstack-nova-compute openstack-nova-consoleauth do i=/etc/init.d/$s if [ -x $i ] ; then ++++++ openstackquickstartrc ++++++ # this file is used as configuration # for openstack-quickstart-demosetup # and openstack-quickstart-extranodesetup scripts # password for demo accounts pw=openstack # mysql password mpw=m$pw # cloud controller IP-Addr - must adapt to routable Address for multi-node-setup IP=127.0.0.1 # this defines which addresses are assigned to VMs - should be part of your regular subnet, unless you arrange for routing testnet=10.10.134.16/29 # this defines which database to use #DB=mysql DB=postgresql SERVICE_TOKEN=999888777666 -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
