Openstack: Kolla Ansible All-in-One Openstack Yoga (latest)
Dalam artikel kali ini saya ingin berbagi sebuah ilmu baru yang baru saja saya dapatkan yaitu melakukan instalasi Kolla Ansible All in One Openstack Yoga (latest) karena saya lihat untuk artikel terkait Deployment Kolla Ansible Bahasa Indonesia masih kurang lengkap.
Sebelum melanjutkan pembahasan, silakan dapat melihat terlebih dahulu posting kami sebelumnya:
- Openstack: Definisi dan Arsitektur
- Mengenal Apa Itu Kolla Ansible
- Cloud Computing: Pengenalan
- Cloud Computing: Jenis - Jenis Cloud
Requirement
Kali ini kami akan menggunakan spesifikasi mesin dan os seperti berikut, silakan dapat diikuti atau dapat disesuaikan dengan kebutuhan Anda:
- 8 CPU
- 8 GB RAM
- 100 GB Disk
- Ubuntu 20.04
- 2 Network Interface
Untuk konfigurasi dan topologi network lebih jelasnya ada pada gambar dibawah:
Dari topologi diatas dapat dilihat jika kita membutuhkan minimal 2 network interface yang nantinya akan digunakan sebagai:
1. Management Network
Interface: ens224 IP: 10.65.65.2/24 VIP: 10.65.65.254/24 Gw; 10.65.65.1/24
2. External Network
Interface: ens192 IP: kosongkan Bridge: 10.25.25.1/24
Management Network digunakan sebagai media komunikasi antar service yang menjalankan openstack, sedangkan External Network digunakan service neutron untuk berkomunikasi antara network internal (private) pada instances dan host (internet/publik), untuk interface ini diharuskan berstatus aktif (up) dan tidak dialokasikan IP pada interfacenya.
Konfigurasi network
Saya menyarankan untuk menggunakan ip statis pada setiap interface untuk menghindari perubahan IP address / routing pada saat host restart.
network manager saya menggunakan netplan, berikut adalah konfigurasi interfacenya:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
vi /etc/netplan/01-iface.yaml
...
# This is the network config written by 'subiquity'
network:
ethernets:
ens224:
dhcp4: false
addresses: [10.65.65.2/24]
nameservers:
addresses: [1.1.1.1,1.0.0.1]
ens192: {}
version: 2
...
netplan apply
Instalasi dependensi
Pada artikel ini saya akan menggunakan media virtual environment yang disediakan python, adapun dependensi yang perlu diinstall adalah berikut:
Update paket manager
1
sudo apt update
Install dependensi python3-venv
1
sudo apt install python3-venv
Buat sebuah virtual environment lalu aktifkan untuk mulai menggunakannya:
Buat folder baru pada direktori home user denga nama deploy, bisa disesuaikan dengan selera Anda :)
Anda harus mengaktifkan virtual environment dahulu sebelum memulai menggunakan perintah python
1
2
3
mkdir deploy
python3 -m venv /home/user/deploy
source /home/user/deploy/bin/activate
Upgrade versi pip
Pastikan virtual environment sudah aktif sebelum menjalankan command ini:
1
pip install -U pip
Install paket ansible
Kolla ansible membutuhkan paket ansible minimal versi 4 dan mendukung hingga versi 5 keatas.
Pastikan virtual environment sudah aktif sebelum menjalankan command ini:
1
pip install 'ansible>=4,<6'
Install paket docker
Pastikan virtual environment sudah aktif sebelum menjalankan command ini:
1
pip install docker
Install Kolla-ansible
Install kolla-ansible beserta dependensinya menggunakan python-pip
Pastikan virtual environment sudah aktif sebelum menjalankan command ini:
1
pip install git+https://opendev.org/openstack/kolla-ansible@master
Buat directory /etc/kolla
1
2
sudo mkdir -p /etc/kolla
sudo chown $USER:$USER /etc/kolla
Salin file global.yml dan password.yml ke directory /etc/kolla
1
cp -r /home/user/deploy/share/kolla-ansible/etc_examples/kolla/* /etc/kolla
Salin file konfigurasi all-in-one
1
cp /path/to/venv/share/kolla-ansible/ansible/inventory/all-in-one /home/user/
Tambahkan python interpreter pada konfigurasi all-in-one
Pastikan virtual environment sudah aktif sebelum menjalankan command ini:
1
source /home/user/deploy/bin/activate
Cari lokasi binary python:
1
2
which python
/home/user/deploy/bin/python
Tambahkan interpreter sesuai lokasi binary python
1
2
3
vi all-in-one
...
localhost ansible_python_interpreter=/home/user/deploy/bin/python
Install Ansible Galaxy requirements
Pastikan virtual environment sudah aktif sebelum menjalankan command ini:
1
kolla-ansible install-deps
Konfigurasi Awal
Generate Password
Password yang digunakan oleh kolla ansible disimpan di direktori /etc/kolla/passwords.yml
Pastikan virtual environment sudah aktif sebelum menjalankan command ini:
1
kolla-genpwd
Konfigurasi global.yml
Selanjutnya silakan melakukan konfigurasi deployment pada file global.yml, berikut adalah variable yang perlu diperhatikan:
1
2
3
4
5
6
7
8
9
10
vi /etc/kolla/global.yml
...
kolla_base_distro: "ubuntu"
openstack_release: "master"
kolla_internal_vip_address: "10.65.65.254"
network_interface: "ens224"
neutron_external_interface: "ens192"
neutron_plugin_agent: "openvswitch"
enable_neutron_provider_networks: "yes"
nova_compute_virt_type: "kvm"
Simpan konfigurasi dan lanjut ke deployment !
Deployment
Kolla Ansible sudah menyediakan playbook list yang akan menginstal semua service yang sudah di set pada konfigurasi sebelumnya.
Pastikan virtual environment sudah aktif sebelum menjalankan command ini:
- Lakukan bootstraping pada host menggunakan dependensi kolla ansible:
1
kolla-ansible -i all-in-one bootstrap-servers
- Lakukan pre-checks konfigurasi
1
kolla-ansible -i all-in-one prechecks
- Jika dari hasil check sudah tidak ada error, selanjutnya deploy server
1
kolla-ansible -i all-in-one deploy
Biasanya proses deployment akan membutuhkan waktu yang agak lama, pastikan saja kalian sudah menjalankan screen bila menggunakan remote SSH.
Jika deployment berhasil output akhirnya kurang lebih seperti berikut:
1
2
3
...
PLAY RECAP *****************************************************************************************************************************************************************
localhost : ok=366 changed=72 unreachable=0 **failed=0** skipped=245 rescued=0 ignored=0
List Running OpenStack Docker Containers
Untuk mengecek service docker yang berjalan silakan menggunakan command ini:
1
docker ps
OpenStack Post Deployment
Pastikan virtual environment sudah aktif sebelum menjalankan command ini:
Install Openstack Client
1
pip install python-openstackclient python-neutronclient python-glanceclient
Generate AdminRC
1
kolla-ansible post-deploy
Gunakan AdminRC
1
source /etc/kolla/admin-openrc.sh
Jalankan script untuk inisiasi awal
Secara default kolla ansible sudah menyiapkan script inisiasi awal yang digunakan untuk create network demo didalam openstack.
1
2
3
4
5
6
7
vim /home/user/deploy/share/kolla-ansible/init-runonce
...
# This EXT_NET_CIDR is your public network,that you want to connect to the internet via.
ENABLE_EXT_NET=${ENABLE_EXT_NET:-1}
EXT_NET_CIDR=${EXT_NET_CIDR:-'10.25.25.0/24'}
EXT_NET_RANGE=${EXT_NET_RANGE:-'start=10.25.25.4,end=10.25.25.253'}
EXT_NET_GATEWAY=${EXT_NET_GATEWAY:-'10.25.25.1'}
Eksekusi script
1
/home/user/deploy/share/kolla-ansible/init-runonce
Aktifkan ipv4 forwarding
1
2
3
4
5
6
7
8
9
10
11
12
13
14
vi /etc/sysctl.conf
...
net.ipv4.ip_forward=1
net.ipv4.ip_nonlocal_bind=1
net.ipv6.ip_nonlocal_bind=1
net.unix.max_dgram_qlen=128
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.neigh.default.gc_thresh1=128
net.ipv4.neigh.default.gc_thresh2=28672
net.ipv4.neigh.default.gc_thresh3=32768
net.ipv6.neigh.default.gc_thresh1=128
net.ipv6.neigh.default.gc_thresh2=28672
net.ipv6.neigh.default.gc_thresh3=32768
1
sysctl -p
Atur interface bridge
Jalankan perintah berikut ini :
1
2
3
4
5
6
7
8
9
10
export ENABLE_EXT_NET=${ENABLE_EXT_NET:-1}
export EXT_NET_CIDR=${EXT_NET_CIDR:-'10.25.25.0/24'}
export EXT_NET_RANGE=${EXT_NET_RANGE:-'start=10.25.25.3,end=10.25.25.253'}
export EXT_NET_GATEWAY=${EXT_NET_GATEWAY:-'10.25.25.1'}
## Akses internet ke instances
sudo ifconfig br-ex $EXT_NET_GATEWAY netmask 255.255.255.0 up
sudo iptables -t nat -A POSTROUTING -s $EXT_NET_CIDR -o ens224 -j MASQUERADE
sudo iptables -A FORWARD -o ens224 -i br-ex -j ACCEPT
sudo iptables -A FORWARD -i ens224 -o br-ex -j ACCEPT
Akses dashboard dan uji konektifitas instance
Dashboard dapat diakses menggunakan Virtual IP yang sudah diset sebelumnya yaitu : http://10.65.65.254
Password dapat dilihat menggunakan command berikut ini:
1
grep keystone_admin_password /etc/kolla/passwords.yml
Untuk pengujian konektifitas instance kalian bisa melihat panduan ini ya :
Troubleshoot
Ketika host mengalami restart
1
2
3
4
5
6
7
8
export EXT_NET_CIDR='10.25.25.0/24'
export EXT_NET_RANGE='start=10.25.25.3,end=10.25.25.253'
export EXT_NET_GATEWAY='10.25.25.1'
sudo ifconfig br-ex $EXT_NET_GATEWAY netmask 255.255.255.0 up
sudo iptables -t nat -A POSTROUTING -s $EXT_NET_CIDR -o ens224 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
sudo iptables -A FORWARD -o ens224 -i br-ex -j ACCEPT
sudo iptables -A FORWARD -i ens224 -o br-ex -j ACCEPT
Kesimpulan
Saat ini saya baru menemukan cara untuk melakukan set temporary networking pada bridge network external yang mana ketika host restart konfigurasi networknya akan hilang.
Konfigurasi kolla ansible memang sedikit rumit dan memerlukan pemahaman lebih, dan tentunya perlu melakukan trial and error, semoga dengan adanya panduan ini dapat membantu rekan rekan sekalian yang ingin belajar tentang openstack.
Sampai jumpa di artikel selanjutnya
Referensi: