TripleO Quickstart is a set of Ansible scripts that will configure a remote host with several virtual machines and install OpenStack TripleO on the nodes. This allows full testing of automated OpenStack deployment inside a virtual baremetal environment using limited hardware.
The one downside of TripleO Quickstart for many developers, is that the scripts only run on Red Hat operating systems (CentOS, RHEL, and Fedora). If your workstation is not running one of the compatible operating systems, you can now use Docker to run tripleo-quickstart in its own container.
Thanks to Bogdan Dobrelya for the following RFE and patch:
RFE: https://bugs.launchpad.net/tripleo/+bug/1676373
Code: https://review.openstack.org/#/q/topic:rfe1676373
Docker config: https://github.com/bogdando/oooq-warp/blob/master/oooq-warp.yaml
You can fit a simple configuration of one node each of type Undercloud, Controller, and Compute in a 32GB system, but more nodes or more RAM per node will require additional system memory on the virtual host. For reference, here is the config that I use to launch a 6-node cluster (plus one installation node, or “undercloud”), with 6 virtual network interfaces for each virtual host (on a system with 128GB of RAM).
undercloud_memory: 16384 # Should be at least 12GB control_memory: 12192 # Should be at least 8GB compute_memory: 8192 # Should be at least 5GB enable_vnc_console: true overcloud_nodes: - name: control_0 flavor: control virtualbmc_port: 6230 - name: control_1 flavor: control virtualbmc_port: 6231 - name: control_2 flavor: control virtualbmc_port: 6232 - name: compute_0 flavor: compute virtualbmc_port: 6233 - name: compute_1 flavor: compute virtualbmc_port: 6234 - name: compute_2 flavor: compute virtualbmc_port: 6235 #- name: ceph_0 # flavor: ceph networks: - name: external bridge: brext forward_mode: nat address: "{{ external_network_cidr|nthhost(1) }}" netmask: "{{ external_network_cidr|ipaddr('netmask') }}" dhcp_range: - "{{ external_network_cidr|nthhost(10) }}" - "{{ external_network_cidr|nthhost(50) }}" nat_port_range: - 1024 - 65535 - name: overcloud bridge: brovc - name: overcloud1 bridge: brovc1 - name: overcloud2 bridge: brovc2 - name: overcloud3 bridge: brovc3 - name: overcloud4 bridge: brovc4
To get started, clone the tripleo-quickstart git repository from: https://github.com/openstack/tripleo-quickstart
Once you have cloned the repo locally, run this command to install the various dependencies:
[user@host ~/tripleo-quickstart]$ bash quickstart.sh --install-deps
Here is the command-line that I use to launch the above config, run from the directory where I cloned the tripleo-quickstart git repo:
bash quickstart.sh --extra-vars @config/general_config/my_config.yml \ --teardown all --release master-tripleo-ci <remote_host>
Note that you can also deploy to multiple remote hosts. You need to set a different working directory for each remote host, and you will need to copy some of the files from the tripleo-quickstart directory in order for the working directory to be used. I haven’t figured out exactly which files are needed in the working directory, so I just copy all the files from the git repo each time I deploy (using “git pull” to update the local repo). Here is how I deploy to two different remote hosts.
# Deploy undercloud1 (run from tripleo-quickstart git directory): mkdir $HOME/workspace/quickstart-undercloud1 export WD=$HOME/workspace/quickstart-undercloud1 cp -r * $WD bash quickstart.sh --extra-vars @config/general_config/my_config.yml -w $WD \ --teardown all --release master-tripleo-ci <remote_host_1> # Deply undercloud2 (run from tripleo-quickstart git directory): mkdir $HOME/workspace/quickstart-undercloud2 export WD=$HOME/workspace/quickstart-undercloud2 cp -r * $WD bash quickstart.sh --extra-vars @config/general_config/my_config_spine_leaf.yml -w $WD \ --teardown all --release master-tripleo-ci <remote_host_2>