Openstack Kolla là Project hay công cụ sử dụng để triển khai, vận hành Openstack. Kolla được phát hành từ phiên bản Kilo và chính thức trở thành Project Openstack tại phiên bản Liberty.
Với ý tưởng của Project Kolla là triển khai Openstack trong môi trường Container, tự động triển khai Openstack bằng Kolla Ansible. Qua đó chỉ với 1 vài thao tác, chúng ta đã có môi trường Openstack để sử dụng. Hơn nữa, Project Kolla cũng cung cấp sẵn các giải pháp về giám sát, HA, Rolling Upgrades … cho Openstack
Yêu cầu
Lưu ý trước khi bắt đầu, bạn có thể cần một số hiểu biết nhất định về Ansible cũng như Docker.
Chuẩn bị máy ảo với hệ điều hành CentOS 7 với cấu hình:
- CPU: 4 Core
- RAM: 8 GB
- Disk: 2 ổ
- OS (vda): 100 GB
- Data VM (vdb): 50 GB
- Network: 2 interface
- Dải MNGT + API + Internal Network: 10.10.10.0/24
- Dải Provider hay External Network: 10.10.11.0/24
Trong bài, VM của tôi sẽ có IP:
- ETH0 – 10.10.10.85
- ETH1 – 10.10.11.85
Cài đặt
Phần 1. Chuẩn bị
Đặt hostname
hostnamectl set-hostname opsaio85
Update hệ điều hành
yum install -y epel-release
yum update -y
Cấu hình Network
echo "Setup IP eth0"
nmcli c modify eth0 ipv4.addresses 10.10.10.85/24
nmcli c modify eth0 ipv4.gateway 10.10.10.1
nmcli c modify eth0 ipv4.dns 8.8.8.8
nmcli c modify eth0 ipv4.method manual
nmcli con mod eth0 connection.autoconnect yes
echo "Setup IP eth1"
nmcli c modify eth1 ipv4.addresses 10.10.11.85/24
nmcli c modify eth1 ipv4.method manual
nmcli con mod eth1 connection.autoconnect yes
Tắt Firewall, SELinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
systemctl stop firewalld
systemctl disable firewalld
Cấu hình đồng bộ thời gian
timedatectl set-timezone Asia/Ho_Chi_Minh
yum -y install chrony
sed -i 's/server 0.centos.pool.ntp.org iburst/ \
server 1.vn.pool.ntp.org iburst \
server 0.asia.pool.ntp.org iburst \
server 3.asia.pool.ntp.org iburst/g' /etc/chrony.conf
sed -i 's/server 1.centos.pool.ntp.org iburst/#/g' /etc/chrony.conf
sed -i 's/server 2.centos.pool.ntp.org iburst/#/g' /etc/chrony.conf
sed -i 's/server 3.centos.pool.ntp.org iburst/#/g' /etc/chrony.conf
systemctl enable chronyd.service
systemctl restart chronyd.service
chronyc sources
Khởi động lại
init 6
Lưu ý: Tạo bước này các bạn nên snapshot lại VM
Phần 2. Cài đặt Kolla Ansible
Cài đặt các gói hỗ trợ
yum install -y vim git byobu
Cài đặt môi trường Python
yum install -y python-devel libffi-devel gcc openssl-devel libselinux-python
curl -Lo- https://bootstrap.pypa.io/get-pip.py | python
pip install -U pip
Cài đặt Ansible
pip install ansible
mkdir -p /etc/ansible
txt="[defaults]\nhost_key_checking=False\npipelining=True\nforks=100"
echo -e $txt >> /etc/ansible/ansible.cfg
Cài đặt Kolla Ansible
pip install "kolla-ansible==9.0.*"
Lưu ý:
- Phiên bản kolla-ansible được phát triển dựa trên các phiên bản lớn Openstack
- Openstack Queen – Kolla Ansible 7.x
- Openstack Rocky – Kolla Ansible 8.0.x
- Openstack Stein – Kolla Ansible 8.1.x
- Openstack Train – Kolla Ansible 9.0.x
- Để cài Openstack Train, chúng ta phải dùng phiển bản Kolla Ansible 9.0.x
Cấu hình Kolla Ansible mặc định
cp /usr/share/kolla-ansible/etc_examples/kolla/* /etc/kolla/
Thiết lập File Inventory Kolla Ansible
cp /usr/share/kolla-ansible/ansible/inventory/* .
Thiết lập Keypair
ssh-keygen
Lưu ý: Nhấn ENTER, sinh Keypair mặc định
Chuyển key
ssh-copy-id root@opsaio85
Lưu ý: Tại bước này bạn cần nhập mật khẩu SSH của Node
Kiểm tra lại
ansible -i all-in-one all -m ping
Kết quả mong muốn
[root@opsaio85 ~]# ansible -i all-in-one all -m ping
localhost | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
Phần 3. Cài đặt Openstack Train bằng Kolla Ansible
Thiết lập phần vùng LVM dành cho Cinder
pvcreate /dev/vdb
vgcreate cinder-volumes /dev/vdb
Tạo File chứa mật khẩu mặc định
kolla-genpwd
Lưu ý:
- Thao tác sẽ sinh ra file /etc/kolla/passwords.yml.
- File passwords.yml sẽ chứa mật khẩu các dịch vụ thuộc Openstack (Nova, Cinder, Neutron, Keystone, Glance …..)
Cấu hình triển khai Openstack
cp /etc/kolla/globals.yml /etc/kolla/globals.yml.bak
cat << EOF > /etc/kolla/globals.yml
---
kolla_base_distro: "centos"
kolla_install_type: "source"
openstack_release: "train"
kolla_internal_vip_address: 10.10.10.85
network_interface: eth0
neutron_external_interface: eth1
nova_compute_virt_type: "qemu"
enable_haproxy: "no"
enable_cinder: "yes"
enable_cinder_backup: "no"
enable_cinder_backend_lvm: "yes"
EOF
Lưu ý:
- kolla_install_type: Mã nguồn sử dụng khi triển khai Openstack, có 2 loại:
- Cài từ Source Code: source
- Cài từ File binary: binary
- openstack_release: Phiên bản cài đặt
- network_interface: Interface dải nội bộ dùng cho MNGT, API .. tôi chọn interface eth0 ứng với dải 10.10.10.0/24
- kolla_internal_vip_address: Địa chỉ dải nội bộ dành cho MNGT, API, .. Theo quy hoạch ban đầu, tôi sẽ chọn dài 10.10.10.85
- neutron_external_interface: Interface dải Provider cấp IP cho VM Openstack. Ở đây tôi sử dụng interface eth1 ứng với dải 10.10.11.0/24
- enable_haproxy: Nếu triển khai Openstack All In One, bạn vui lòng thiết lập là NO.
- enable_cinder: Trong bài tôi có sử dụng Cinder LVM làm share storage cho Openstack nên thiết lập giá trị này bằng True
- enable_cinder_backend_lvm: Đặt True nếu sử dụng Backend LVM cho Cinder
- enable_cinder_backup: Trong bài tôi không sử dụng tính năng Backup Cinder nên thiết lập giá trị bằng False
- nova_compute_virt_type: Trong bài tôi sử dụng VM ảo hóa để cài đặt Openstack, nên tại đây thiết lập giá trị bằng qemu
Khởi tạo môi trường dành cho Openstack Kolla
kolla-ansible -i all-in-one bootstrap-servers
Kết quả mong muốn
PLAY RECAP **************************************************************************************
localhost : ok=40 changed=20 unreachable=0 failed=0 skipped=32 rescued=0 ignored=0
Kiểm tra thiết lập Kolla Ansible
kolla-ansible -i all-in-one prechecks
Kết quả mong muốn
PLAY RECAP **************************************************************************************
localhost : ok=75 changed=0 unreachable=0 failed=0 skipped=72 rescued=0 ignored=0
Tải các Image Openstack
kolla-ansible -i all-in-one pull
Kết quả mong muốn
PLAY RECAP **************************************************************************************
localhost : ok=38 changed=16 unreachable=0 failed=0 skipped=51 rescued=0 ignored=0
Cài đặt Openstack
kolla-ansible -i all-in-one deploy
Kết quả mong muốn
PLAY RECAP **************************************************************************************
localhost : ok=365 changed=208 unreachable=0 failed=0 skipped=168 rescued=0 ignored=0
Thiết lập File Environment Openstack
kolla-ansible -i all-in-one post-deploy
Kết quả mong muốn
PLAY RECAP **************************************************************************************
localhost : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Phần 4. Cài đặt Openstack Client
Cài đặt các gói cần thiết để tạo virtualenv
pip install virtualenv
Tạo Virtualenv
virtualenv openstack
Truy cập môi trường và cài đặt gói Openstack Client
. openstack/bin/activate
pip install python-openstackclient python-glanceclient python-neutronclient
source /etc/kolla/admin-openrc.sh
Kiểm tra dịch vụ
openstack token issue
Kết quả mong muốn
+------------+-------------------------------------+
| Field | Value |
+------------+-------------------------------------+
| expires | 2020-03-15T17:00:16+0000 |
| id | gAAAAABebQ2gB8LuORAzc6pT8S4KSsxxxx |
| project_id | 944c2b3151b4483d9b3557e4ce084366 |
| user_id | 76c4fbd02267439a887731f175b99895 |
+------------+-------------------------------------+
Tới đây bạn đã cài Openstack Train thành công
Phần 5. Đăng nhập vào Horizon
Lấy mật khẩu tài khoản Admin
cat /etc/kolla/passwords.yml | grep keystone_admin
Kết quả
keystone_admin_password: A7GHier4EpzEXE0Fm2aLpU3jvZ6ulOkINwlUETpI
Tới đây, mật khẩu đăng nhập vào Horizon sẽ là:
- admin / A7GHier4EpzEXE0Fm2aLpU3jvZ6ulOkINwlUETpI
Truy cập địa chỉ: http://10.10.10.85/auth/login/?next=/. Nhập các thông tin trên
Sau khi thao tác xong, chọn Sign In
Tới đây tôi đã hướng dẫn xong các bạn cài đặt Openstack Train bằng Kolla Ansibe. Về cách sử dụng Openstack Train cơ bản, tôi sẽ trình bày trong bài tiếp theo của chuỗi bài viết. Hẹn gặp lại các bạn!
Leave a Reply