Untuk kebutuhan lab openstack setidaknya memiliki 1 host untuk controller dan 2 host untuk compute baik berupa mesin virtual maupun baremetal untuk spesifikasinya sebagai berikut :
Node Name | Processor | RAM | Root / Volumes | Cinder Volumes | Ip Address |
---|
openstack-controller | 8 Core | 8 GB | 80 GB (sda) | | 10.79.0.10 |
openstack-compute01 | 16 Core | 16 GB | 40 GB (sda) | 100 GB (sdb) | 10.79.0.11 |
openstack-compute02 | 16 Core | 16 GB | 40 GB (sda) | 100 GB (sdb) | 10.79.0.12 |
Lalu untuk kebutuhan jaringan openstack dengan rincian sebagai berikut :
Name | Network | Virtual IP | Interface |
---|
Internal | 10.79.0.0/24 | 10.79.0.254 | ens18 |
Provider | 172.16.0.0/24 | | ens19 |
Semua node menggunakan sistem operasi Ubuntu 20.04 Focal
dengan versi OpenStack Yoga
dengan username setiap node bernama vq
Sesuaikan dengan environment lab anda
Rancangan Topologi#
![image](/assets/images/Topologi-Openstack-Lab.webp)
Persiapan Cluster#
1. Membuat dan mendistribusikan ssh public key#
Eksekusi perintah pada openstack-controller dengan Kolla virtual environment
1
2
3
4
5
| ssh-keygen -t rsa -b 4096 -q -N ""
ssh-copy-id vq@10.79.0.10
ssh-copy-id vq@10.79.0.11
ssh-copy-id vq@10.79.0.12
|
2. Memverifikasi koneksi sesi ssh#
Eksekusi perintah pada openstack-controller dengan Kolla virtual environment
1
| for i in {0..2}; do ssh vq@10.79.0.1$i 'echo $(whoami) $(hostname)'; done
|
3. Memberikan full privileges sudo tanpa memasukan password#
Eksekusi perintah pada openstack-controller dengan Kolla virtual environment, openstack-compute01, dan openstack-compute02
1
| echo 'vq ALL=(ALL) NOPASSWD:ALL' | sudo tee /etc/sudoers.d/vq
|
4. Menambahkan mapping hosts nama node dan persiapan node#
Eksekusi perintah pada openstack-controller dengan Kolla virtual environment, openstack-compute01, dan openstack-compute02
1
2
3
4
5
6
| cat <<EOF | sudo tee -a /etc/hosts
10.79.0.254 vpc.syslog.my.id
10.79.0.10 openstack-controller
10.79.0.11 openstack-compute01
10.79.0.12 openstack-compute02
EOF
|
5. Membuat volume group untuk cinder volumes#
Eksekusi perintah pada openstack-compute01, dan openstack-compute02
1
2
3
4
| sudo pvcreate /dev/sdb
sudo vgcreate cinder-volumes /dev/sdb
sudo vgdisplay cinder-volumes
sudo vgs
|
6. Memasang dependensi yang dibutuhkan oleh kolla-ansible#
Eksekusi perintah pada openstack-controller dengan Kolla virtual environment
1
2
| sudo apt update && sudo apt upgrade -y
sudo apt install -y gcc libffi-dev libssl-dev python3-dev python3-selinux python3-setuptools python3-venv python3-pip net-tools
|
Membuat dan mengaktifkan virtual environment kolla
1
2
| python3 -m venv kolla
source ~/kolla/bin/activate
|
![image](/assets/images/kolla-activate.webp)
Update pip dan install dependensi kolla-ansible
1
2
3
4
| pip install -U pip
pip install 'ansible>=4,<6'
pip install kolla-ansible
kolla-ansible install-deps
|
1
2
3
4
5
| sudo mkdir /etc/kolla
sudo chown $USER:$USER /etc/kolla
cp -r ~/kolla/share/kolla-ansible/etc_examples/kolla/passwords.yml /etc/kolla
cp -r ~/kolla/share/kolla-ansible/etc_examples/kolla/globals.yml /etc/kolla
cp -r ~/kolla/share/kolla-ansible/ansible/inventory/* ~/
|
Catatan: untuk selanjutnya harus selalu menjalankan perintah pada virtual environment kolla yang sudah di aktifkan
7. Konfigurasi Ansible#
Eksekusi perintah pada openstack-controller dengan Kolla virtual environment
1
2
3
4
5
| sudo mkdir /etc/ansible && sudo nano /etc/ansible/ansible.cfg
[defaults]
host_key_checking=False
pipelining=True
forks=100
|
8. Persiapan Menggunakan Kolla-Ansible#
Eksekusi perintah pada openstack-controller dengan Kolla virtual environment
Sesuaikan isi file ~/multinode seperti berikut
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| # These initial groups are the only groups required to be modified. The
# additional groups are for more control of the environment.
[control]
openstack-controller ansible_connection=local
[network]
openstack-controller ansible_connection=local
[compute]
openstack-compute01
openstack-compute02
[storage]
openstack-compute01
openstack-compute02
[monitoring]
openstack-controller ansible_connection=local
[deployment]
localhost ansible_connection=local
## Apart from this, there are no changes below!
|
Sesuaikan isi file /etc/kolla/globals.yaml seperti berikut
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| nano /etc/kolla/globals.yaml
kolla_base_distro: "ubuntu"
kolla_install_type: "source"
openstack_release: "yoga"
kolla_internal_vip_address: "10.79.0.254"
kolla_internal_fqdn: "vpc.syslog.my.id"
network_interface: "ens18"
neutron_external_interface: "ens19"
neutron_plugin_agent: "openvswitch"
enable_openstack_core: "yes"
enable_cinder: "yes"
enable_cinder_backend_lvm: "yes"
enable_neutron_provider_networks: "yes"
enable_neutron_trunk: "yes"
|
Verifikasi hasil konfigurasi globals.yaml
1
| cat /etc/kolla/globals.yml | grep -v "#" | tr -s [:space:]
|
Generate password untuk cluster openstack
Verifikasi hasil generate password
1
| cat /etc/kolla/passwords.yml
|
9. Deployment OpenStack#
Eksekusi perintah pada openstack-controller dengan Kolla virtual environment
1
2
3
4
5
6
7
8
9
10
11
12
| ansible -i ~/multinode all -m ping
# if no error detect, next step
kolla-ansible -i ~/multinode bootstrap-servers
# if no error detect, next step
kolla-ansible -i ~/multinode prechecks
# if no error detect, next step
kolla-ansible -i ~/multinode pull
# if no error detect, next step
kolla-ansible -i ~/multinode deploy
# if no error detect, next step
kolla-ansible -i ~/multinode post-deploy
cp -r /etc/kolla/admin-openrc.sh ~/
|
10. Mengkases Cluster OpenStack#
Eksekusi perintah pada openstack-controller
menonaktifkan kolla virtual environment
![image](/assets/images/kolla-deactivate.webp)
Menggunakan CLI OpenStack client#
1
2
3
| sudo apt install -y python3-openstackclient
source ~/admin-openrc.sh
openstack compute service list && openstack service list
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| +----+----------------+----------------+----------+---------+-------+----------------------------+
| ID | Binary | Host | Zone | Status | State | Updated At |
+----+----------------+----------------+----------+---------+-------+----------------------------+
| 1 | nova-scheduler | openstack-controller | internal | enabled | up | 2022-11-02T06:11:04.000000 |
| 1 | nova-conductor | openstack-controller | internal | enabled | up | 2022-11-02T06:11:04.000000 |
| 5 | nova-compute | openstack-compute01 | nova | enabled | up | 2022-11-02T06:11:11.000000 |
| 6 | nova-compute | openstack-compute02 | nova | enabled | up | 2022-11-02T06:11:12.000000 |
+----+----------------+----------------+----------+---------+-------+----------------------------+
+----------------------------------+-------------+----------------+
| ID | Name | Type |
+----------------------------------+-------------+----------------+
| 14c4d8549cb3412db1a9cd15918a26e2 | cinderv3 | volumev3 |
| 1c68696f28124cebad86c51aeed4c659 | heat-cfn | cloudformation |
| 46324c57d2b244188531c7eccaa21239 | heat | orchestration |
| 5ae2c6cc726c475bbeca0da99a20de36 | nova_legacy | compute_legacy |
| a6c1793399ea43f6a4dc138e81633a55 | glance | image |
| c694e26fb0b84cbb8e9e9ae7ebb7fd40 | nova | compute |
| d99e29796266455c85d9a0833cb62d14 | placement | placement |
| eda384c5f3ba4132a9f8dcbfd76f250d | keystone | identity |
| f6d629464f20413182ceed7b1b3cd72a | neutron | network |
+----------------------------------+-------------+----------------+
|
Menggunakan GUI OpenStack#
Melihat kredensial username dan password pada file admin-openrc.sh
![image](/assets/images/openstack-lab-2.webp)
Selanjutnya untuk tahap mengoperasikan openstack via CLI
Sumber Referensi#