NOTE The quickest and easiest way to take Juju for a spin is by using http://conjure-up.io. But if you are like me and want to delve into and meddle with the underlying details this guide is for you!
Deploy OpenStack in a OpenStack cloud using Juju 2.0
- Bundle is based on https://jujucharms.com/openstack-base/
- Altered to deploy services to individual instances instead of the original
behaviour of creating 4 machines with services in LXD containers
- TODO: It is probably possible to make the default behaviour work even when deploying on OpenStack. Have to figure out plumbing for the LXD networking within OpenStack instances
- Scripts used to manage life cycle of Neutron ports for neutron-gateway units
- TODO: Implement this in bundle using Juju Spaces
- Running OpenStack cloud
- DNS setup to resolve/access new instances by name
- Either
- Designate set up to integrate with Nova and Neutron
- serverstack-dns
- Either
-
Launch Ubuntu Xenial instance, load OpenStack credentials
-
Add Juju devel PPA
sudo add-apt-repository ppa:juju/devel sudo apt-get update sudo apt-get install juju
-
Add cloud to Juju
cat << EOF > mycloud.yaml clouds: mycloud: type: openstack auth-types: [access-key, userpass] regions: myregion: endpoint: https://192.0.2.10:5000/v3 EOF
juju add-cloud mycloud mycloud.yaml
-
Bootstrap Juju
cat << EOF > config.yaml image-metadata-url: https://198.51.100.10:443/swift/v1/simplestreams/data/ agent-metadata-url: https://streams.canonical.com/juju/tools/ agent-stream: devel default-series: xenial EOF
juju bootstrap mycloud myregion --config config.yaml
-
Check status and tail log
juju status juju debug-log
-
Add UUID of your projects network to deploy.sh
-
Run it
./deploy.sh
-
Get coffee, tea, (popcorn?) or whatever you favor to do while waiting for computers
-
profit!
-
Destroy it
./destroy.sh