blob: b3ba372c52a27919c89fd0f3d76627ff07a5a690 [file] [log] [blame]
okozachenko12037fc026c2023-01-13 21:51:34 +11001#!/bin/bash -xe
okozachenko1203969b1752023-01-14 00:59:28 +11002# shellcheck disable=SC1091
okozachenko12037fc026c2023-01-13 21:51:34 +11003
4# Install dependencies
5sudo apt-get update
6
7# Setup folders for DevStack
8sudo mkdir -p /opt/stack
okozachenko12033a0f14c2023-01-13 23:38:16 +11009sudo chown -R "${USER}". /opt/stack
okozachenko12037fc026c2023-01-13 21:51:34 +110010
11# Clone repository if not present, otherwise update
12if [ ! -f /opt/stack/stack.sh ]; then
13 git clone https://git.openstack.org/openstack-dev/devstack /opt/stack
14else
15 pushd /opt/stack
16 git pull
17 popd
18fi
19
20# Create DevStack configuration file
okozachenko120310d70b02023-01-14 00:51:15 +110021sudo mkdir /etc/staffeln
22sudo chown -R "${USER}". /etc/staffeln
okozachenko12037fc026c2023-01-13 21:51:34 +110023cat <<EOF > /opt/stack/local.conf
24[[local|localrc]]
25KEYSTONE_ADMIN_ENDPOINT=true
26DATABASE_PASSWORD=secrete123
27RABBIT_PASSWORD=secrete123
28SERVICE_PASSWORD=secrete123
29ADMIN_PASSWORD=secrete123
30LIBVIRT_TYPE=kvm
31VOLUME_BACKING_FILE_SIZE=50G
32GLANCE_LIMIT_IMAGE_SIZE_TOTAL=10000
33CINDER_BACKUP_DRIVER=swift
34SWIFT_HASH=66a3d6b56c1f479c8b4e70ab5c2000f5
35SWIFT_REPLICAS=1
36enable_plugin neutron https://opendev.org/openstack/neutron
37#swift
38enable_service s-proxy s-object s-container s-account
39# Cinder
40enable_service c-bak
41[[post-config|/etc/neutron/neutron.conf]]
42[DEFAULT]
43advertise_mtu = True
44global_physnet_mtu = 1400
45EOF
46
47# Start DevStack deployment
48/opt/stack/stack.sh
49
50# Create staffeln configuration file
51cat <<EOF > /etc/staffeln/staffeln.conf
52[conductor]
53backup_workers = 1
54rotation_workers = 1
55backup_service_period = 1200
56retention_service_period = 1200
57backup_cycle_timout = 5min
58retention_time = 2w3d
ricolin2d4ad432023-07-26 23:42:26 +080059backup_metadata_key="__staffeln_backup"
okozachenko12037fc026c2023-01-13 21:51:34 +110060retention_metadata_key="__staffeln_retention"
61full_backup_depth = 4
62
63[database]
64backend = sqlalchemy
65connection = "mysql+pymysql://staffeln:password@localhost:3306/staffeln"
66tooz_connection = "mysql://staffeln:password@localhost:3306/staffeln"
67mysql_engine = InnoDB
68EOF
69
70# Create staffeln database
okozachenko120310d70b02023-01-14 00:51:15 +110071mysql -e 'CREATE DATABASE staffeln;' || echo "Database for staffeln already exists."
72mysql -e 'CREATE USER "staffeln"@"%" IDENTIFIED BY "password";' || echo "DB user staffeln already exists."
okozachenko12037fc026c2023-01-13 21:51:34 +110073mysql -e 'GRANT ALL PRIVILEGES ON staffeln.* TO "staffeln"@"%";'
74
75# Install staffeln
76pip install -U setuptools pip
okozachenko12033a0f14c2023-01-13 23:38:16 +110077"${HOME}"/.local/bin/pip3 install -e .
okozachenko12037fc026c2023-01-13 21:51:34 +110078
79# Start staffeln conductor
ricolin2d4ad432023-07-26 23:42:26 +080080"${HOME}"/.local/bin/staffeln-db-manage --config-file /etc/staffeln/staffeln.conf create_schema
81 #staffeln-db-manage upgrade head
82
83echo You can fetch authroize with command: source /opt/stack/openrc admin admin
84echo You can now run staffeln conductor with: "${HOME}"/.local/bin/staffeln-conductor --config-file /etc/staffeln/staffeln.conf
85echo You can now run staffeln api with: "${HOME}"/.local/bin/staffeln-api --config-file /etc/staffeln/staffeln.conf