Table of contents
Disini saya akan membangun infrastruktur cloud OpenStack diatas cloud lainnya yaitu azure, mungkin agak aneh juga tapi tujuan saya disini lebih ke belajar OpenStack dikarenakan hardware laptop saya tidak memungkinkan untuk membangun OpenStack.
Environment
- Standard D4s_v3 (4 vcpus, 16 GiB memory)
- Disk root 60GB
- 1 network interface
- OS : Ubuntu 20.04 LTS (Focal fossa)
Langkah-langkah
- Pertama instalasi Azure CLI kemudian login/autentikasi akun
az login
- Membuat VM
apabila belum ada public key bisa buat terlebih dahulu dengan perintahaz vm create ` --name openstack-controller ` --resource-group "openstack" ` --subscription "Azure subscription 1" ` --image Canonical:0001-com-ubuntu-server-focal:20_04-lts-gen2:latest ` --location westeurope ` --admin-username rozaqi ` --ssh-key-values ~/.ssh/id_rsa.pub ` --nsg-rule SSH ` --os-disk-size-gb 60 ` --size Standard_D4s_v3
ssh-keygen
- akses VM melalui IP public yang sudah didapat
ssh user@IP-Public
- Ganti localhost dengan hostname pada file /etc/hosts
sudo tee /etc/hosts << EOT $(hostname -i) $(hostname) EOT
- Buat dummy interface yang nantinya akan digunakan ovs sebagai external bridge port sehingga tidak perlu menambahkan nic tambahan
sudo ip tuntap add mode tap br_ex_port sudo ip link set dev br_ex_port up
- Update VM
sudo apt update
- Install paket yang dibutuhkan untuk kolla-ansible
sudo apt install -y python3-dev libffi-dev gcc libssl-dev python3-venv net-tools
- Disini saya menggunakan cinder nfs sebagai backend, install dan konfigurasi nfs
sudo apt install -y nfs-kernel-server sudo mkdir /kolla_nfs echo "/kolla_nfs IP(rw,sync,no_root_squash)" | sudo tee -a /etc/exports echo "IP:/kolla_nfs" | sudo tee -a /etc/kolla/config/nfs_shares sudo systemctl restart nfs-kernel-server # Pastikan tidak terjadi error
- Buat direktori OpenStack
mkdir kolla && cd kolla
- Buat environment dan aktifkan
python3 -m venv rozaqi source rozaqi/bin/activate
- Install ansible dan kolla-ansible
pip install -U pip pip install wheel pip install 'ansible<2.10' kolla-ansible==10.3.0
- Salin file konfigurasi kolla
sudo mkdir -p /etc/kolla/config sudo cp -r rozaqi/share/kolla-ansible/etc_examples/kolla/* /etc/kolla sudo chown -R $USER:$USER /etc/kolla cp rozaqi/share/kolla-ansible/ansible/inventory/* . kolla-genpwd
- Uji koneksi ansible hosts
ansible -i all-in-one all -m ping
- Konfigurasi globals pada kolla
kolla_base_distro: "ubuntu" kolla_install_type: "source" openstack_release: "ussuri" kolla_internal_vip_address: "10.0.0.40" network_interface: "eth0" neutron_external_interface: "br_ex_port" enable_cinder: "yes" enable_cinder_backend_nfs: "yes" enable_neutron_provider_networks: "yes"
- Deploy OpenStack
kolla-ansible -i ./all-in-one bootstrap-servers kolla-ansible -i ./all-in-one prechecks pip install jinja2==3.0.3 # downgrade jinja2 ke versi 3.0.3 agar tidak terjadi error saat deploy kolla-ansible -i ./all-in-one deploy
- Install OpenStack CLI
pip3 install python-openstackclient python-barbicanclient python-heatclient python-octaviaclient
- Generate credential OpenStack yang nantinya akan digunakan untuk autentikasi
kolla-ansible post-deploy . /etc/kolla/admin-openrc.sh
- Set external network, range, dan gateway sesuaikan dengan environment
export EXT_NET_CIDR='10.0.3.0/24' export EXT_NET_RANGE='start=10.0.3.11,end=10.0.3.199' export EXT_NET_GATEWAY='10.0.3.1' ./rozaqi/share/kolla-ansible/init-runonce
- Disini saya melakukan pengetesan dengan membuat beberapa instance
- Izinkan NAT agar instance dapat mengakses internet dan konfigurasi iptables agar FIP instance OpenStack dapat diakses melalui Node Controller
sudo ifconfig br-ex $EXT_NET_GATEWAY netmask 255.255.255.0 up sudo iptables -t nat -A POSTROUTING -s $EXT_NET_CIDR -o eth0 -j MASQUERADE
- Akses instance kemudian coba ping antar instance dan tes internet
Tampilan Horizon dashboard
OpenStack berjalan dengan baik, disini saya melakukan bermacam-macam pengujian dan tidak terdapat masalah.