Kolla-Ansible
What is kolla-ansible ?
It’s a script who permit to create openstack “stack” in docker containers. It uses ansible to setup things.
Setup
Requirements
2 network interfaces (one configured and the other one not configured)
16G memory
120G HDD
Install dependencies
sudo apt update && sudo apt install python3-dev git libffi-dev gcc libssl-dev && sudo apt install python3-pip && sudo pip3 install -U pip && sudo pip install 'ansible>=6,<8'Install Kolla-Ansible
sudo pip3 install git+https://opendev.org/openstack/kolla-ansible@master && sudo mkdir -p /etc/kolla && sudo chown $USER:$USER /etc/kolla && cp -r /usr/local/share/kolla-ansible/etc_examples/kolla/* /etc/kolla && cp /usr/local/share/kolla-ansible/ansible/inventory/* .Install Ansible dependencies
kolla-ansible install-depsConfigure Ansible (deprecated)
sudo mkdir /etc/ansible && sudo vim /etc/ansible/ansible.cfgInsert in ansible.cfg:
[defaults]
host_key_checking=False
pipelining=True
forks=100Prepare installation
For multinode
If you use multinode, modify the configuration in the
multinodefile:[control] 10.0.0.[10:12] ansible_user=ubuntu ansible_password=foobar ansible_become=true # Ansible supports syntax like [10:12] - that means 10, 11 and 12. # Become clause means "use sudo". [network:children] control # when you specify group_name:children, it will use contents of group specified. [compute] 10.0.0.[13:14] ansible_user=ubuntu ansible_password=foobar ansible_become=true [monitoring] 10.0.0.10 # This group is for monitoring node. # Fill it with one of the controllers' IP address or some others. [storage:children] compute [deployment] localhost ansible_connection=local become=true # use localhost and sudoCheck if your configuration is right by:
ansible -i multinode all -m ping
Generate the password
kolla-genpwdglobals.yml (/etc/kolla/globals.yml)
Edit these lines:
kolla_base_distro: "ubuntu"
network_interface: "eth0"
neutron_external_interface: "ens19"
kolla_internal_vip_address: "10.1.1.250"You can enable services manually by typing yes on enable_* lines.
Deployment
Multinode
kolla-ansible -i ./multinode bootstrap-servers && kolla-ansible -i ./multinode prechecks && kolla-ansible -i ./multinode deployAll-in-one
kolla-ansible -i ./all-in-one bootstrap-servers && kolla-ansible -i ./all-in-one prechecks && kolla-ansible -i ./all-in-one deploy
Setup openstack cli
sudo pip install python-openstackclient -c https://releases.openstack.org/constraints/upper/masterkolla-ansible post-deploy && sudo cp /etc/kolla/clouds.yaml /etc/openstack/ && sudo cp /etc/kolla/clouds.yaml ~/.config/openstackSetup network
Run this:
openstack router create router && openstack network create local-net && openstack subnet create --subnet-range 10.0.0.0/24 --network local-net --gateway 10.0.0.1 --dns-nameserver 8.8.8.8 local-subnet && openstack router add subnet router local-subnet && openstack network create --external --provider-physical-network physnet1 --provider-network-type flat public1 && openstack subnet create --allocation-pool start=10.1.2.150,end=10.1.2.199 --network public1 --subnet-range 10.1.2.0/24 --gateway 10.1.2.1 public1-subnet && openstack router set --external-gateway public1 routerEnable packet forwarding
Edit /etc/sysctl.conf
net.ipv4.ip_forward=1
net.ipv4.conf.default.rp_filter=0
net.ipv4.conf.all.rp_filter=0Run:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADEDON’T FORGET TO ENABLE ENS19 INET
sudo ip link set dev ens19 upNetwork config file
network:
ethernets:
ens18:
dhcp4: true
ens19:
dhcp4: false
dhcp6: false
version: 2Use openstack
Import Cirros image (for testing purpose)
wget https://download.cirros-cloud.net/0.6.0/cirros-0.6.0-x86_64-disk.img
openstack image create --container-format bare \
--disk-format qcow2 --file cirros-0.6.0-x86_64-disk.img cirrosImport Ubuntu 22.04 image
wget https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img
openstack image create --container-format bare \
--disk-format qcow2 --file jammy-server-cloudimg-amd64.img ubuntu-22.04Create “default” flavors
openstack flavor create --vcpus 1 --ram 512 --disk 1 m1.tiny && \
openstack flavor create --vcpus 1 --ram 2048 --disk 20 m1.small && \
openstack flavor create --vcpus 2 --ram 4096 --disk 40 m1.medium && \
openstack flavor create --vcpus 4 --ram 8192 --disk 80 m1.large && \
openstack flavor create --vcpus 8 --ram 16384 --disk 160 m1.xlargeCreate security group allowing ssh
openstack security group create test && \
openstack security group rule create --protocol tcp --remote-ip 0.0.0.0/0 --ingress --dst-port 22 testAdvanced configuration
https://docs.openstack.org/kolla-ansible/latest/admin/advanced-configuration.html