Leon Sastra
Leon Sastra Seorang pemuda yang sangat tertarik untuk mempelajari dunia IT terutama bidang Cloud Computing Sys/Dev/Ops. Bio lengkap saya dapat dilihat pada https://leonsastra.my.id/

Openstack: Kolla Ansible All-in-One Openstack Yoga (latest)


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:

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

enter image description here 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:

comments powered by Disqus