Deploy Trove to OpenStack
Note: this guide assumes you are familiar with building Baserock systems, for more information on building Baserock systems see: Building a Baserock system.
You may also want to read the Deploy to OpenStack guide before continuing.
First, build the Trove:
morph build systems/trove-system-x86_64.morph
Before you can deploy trove you will need to generate keys for some of the accounts trove uses, see prepare trove accounts for more details.
Next, write the following cluster into a file (e.g. openstack-trove-cluster.morph
):
name: openstack-trove
kind: cluster
systems:
- morph: systems/trove-system-x86_64.morph
deploy:
trove:
type: extensions/openstack
location: https://identity-url-for-your-openstack-cloud
DISK_SIZE: 2G
FSTAB_HOMES: /dev/vdb /home auto defaults,noatime,rw 0 2
OPENSTACK_USER: your_openstack_username
OPENSTACK_TENANT: your_openstack_tenant
OPENSTACK_IMAGENAME: trove-image
CLOUD_INIT: yes
KERNEL_ARGS: console=ttyS0 console=tty0
TROVE_GENERIC: yes
Then run morph deploy, with name of the file you just created
morph deploy openstack-trove-cluster.morph trove.OPENSTACK_PASSWORD=your_openstack_password
This will construct an image and upload it to OpenStack.
Trove needs to be configured before it can be used, write the following script
to a file (e.g cloud-config.sh
) :
#cloud-config
runcmd:
- |
mkdir /etc/trove/
cd /etc/trove
ssh-keygen -q -N "" -f lorry.key
ssh-keygen -q -N "" -f worker.key
- |
cat << EOF > admin.key.pub
<your public key goes here>
EOF
- |
cat <<EOF > "/etc/trove/trove.conf"
TROVE_ID: example-trove
TROVE_COMPANY: My company name
UPSTREAM_TROVE: git.baserock.org
TROVE_ADMIN_USER: admin
TROVE_ADMIN_EMAIL: admin@mycompany.org
TROVE_ADMIN_NAME: Admin Name
# Optional fields
# HOSTNAME: host1234
# TROVE_HOSTNAME: git.example-trove.org
# LORRY_CONTROLLER_MINIONS: 4
# Do not change the following
LORRY_SSH_KEY: /etc/trove/lorry.key
LORRY_SSH_PUBKEY: /etc/trove/lorry.key.pub
TROVE_ADMIN_SSH_PUBKEY: /etc/trove/admin.key.pub
WORKER_SSH_PUBKEY: /etc/trove/worker.key.pub
EOF
- systemctl restart trove-setup
Now you can bring up the instance by running:
nova boot --flavor flavor --image trove-image example-trove
--ephemeral size=160,format=ext4 --user-data cloud-config.sh
where the last parameter is the file you just created.
Note, the size of the ephemeral disk you pass to
nova boot
cannot exceed the the ephemeral disk size set by the flavor.Note2, the command assume you have set up your credentials in Nova environment. If you haven't done that refer to Openstack RC file