KollaStack is aimed to be an alternative all-in-one deployment of OpenStack using your local computer as deploy host using kolla-ansible
.
KollaStack consists of the following components:
OpenStack services available out-of-the-box:
- Nova (compute)
- Neutron (network)
- Heat (orchestration)
- Keystone (identity)
- Glance (images)
- Cinder (block storage - via LVM)
Resources needed:
8192MB
RAM2
vCPUs30GB
Disk space (15GB for the host root disk and 15GB used by Cinder to provision storage)
Tested the following OpenStack release(s):
-
Victoria
andkolla-ansible
version11.0.0
-
Ussuri
-
Train
-
Stein
Tested deploying OpenStack on the following VM host OS's:
-
Ubuntu 18.04
-
Ubuntu 20.04
Tested on the following VirtualBox version(s):
-
6.1.10
Tested with the following Vagrant version(s):
-
2.2.14
IMPORTANT: Before starting please make any necessary changes to the Vagrant VM configuration file (vagrant.yml
).
- Create a local
venv
, source it and install required Python packages:
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
- Create a local configuration directory that'll contain a global
kolla-ansible
configuration file. Please use the provided example file if you want to, if so just rename it toglobals.yml
and skip this step!
mkdir -p ./etc/kolla
cp .venv/share/kolla-ansible/etc_examples/kolla/globals.yml ./etc/kolla
The globals-example.yml
file contains the following configured options:
config_strategy: "COPY_ALWAYS"
node_custom_config: "./etc/kolla/config"
enable_haproxy: "no
enable_openstack_core: "yes"
enable_cinder: "yes"
enable_cinder_backend_lvm: "yes"
cinder_volume_group: "cinder-volumes"
kolla_base_distro: "ubuntu"
kolla_install_type: "binary"
openstack_release: "victoria"
kolla_internal_vip_address: "192.168.50.10"
kolla_external_vip_address: "{{ kolla_internal_vip_address }}"
network_interface: "enp0s8"
neutron_external_interface: "enp0s9"
neutron_plugin_agent: "openvswitch"
nova_compute_virt_type: "qemu"
Note that there's hundreds of other things to tweak and configure in this file, please do test and see what's possible, the provided globals-example.yml
is more of a bare minimum config file that will give you a working OpenStack deployment in one VM.
Note that i've added a custom ml2_conf.ini
to enable creation of various types of networks in neutron
.
- Copy the
passwords.yml
to the localkolla-ansible
configuration directory and generated all the passwords:
cp .venv/share/kolla-ansible/etc_examples/kolla/passwords.yml ./etc/kolla
kolla-genpwd -p ./etc/kolla/passwords.yml
- Start the VM in VirtualBox:
cd kollastack/ && vagrant up
- With your venv still sourced run the following from the root of this repository, the
all-in-one
inventory should be configured correctly for you:
kolla-ansible --configdir ./etc/kolla -i all-in-one bootstrap-servers
kolla-ansible --configdir ./etc/kolla -i all-in-one prechecks
kolla-ansible --configdir ./etc/kolla -i all-in-one deploy
-
Create a NAT Network in VirtualBox via File > Preferences > Network. Give the network the name
extnet
to match what we defined in theVagrantfile
for network adapter 3. -
Generate the
admin
credentials file by running:
kolla-ansible post-deploy
- Login to Horizon as
admin
here: https://192.168.50.10. Use the generated password calledkeystone_admin_password
in thepasswords.yml
file.
- Create a VM flavor, we'll be testing with a small CirrOS instance:
openstack --os-compute-api-version 2.55 flavor create --ram 256 --disk 1 --public m1.super.small
- Download a CirrOS image and upload it to the Glance image service:
openstack image create --public --container-format bare --disk-format qcow2 --file <PATH TO IMG> cirros
- OPTIONAL: Create a keypair using your public SSH key, not needed for the CirrOS test but in future scenarios:
openstack keypair create --public-key <PATH TO PUBLIC KEY> <KEYPAIR NAME>
- Create an external network:
openstack network create --external --provider-physical-network physnet1 --provider-network-type flat ext-net
- Create a subnet in the network above:
openstack subnet create --no-dhcp --allocation-pool start=10.0.2.15,end=10.0.2.250 --dns-nameserver 8.8.8.8 --network ext-net --subnet-range 10.0.2.0/24 --gateway 10.0.2.2 ext-subnet
- Example to launch a CirrOS instance:
openstack server create \
--image <IMAGE NAME> \
--flavor m1.tiny \
--key-name <KEYPAIR NAME> \
--network ext-net \
cirros
- Reachable instances with FLIPs
- Octavia (Load Balancing)