Từ Code đến System

Openstack

Openstack Kolla [Phần 1] Hướng dẫn cài đặt Openstack Train all-in-one bằng Kolla Ansible

kolla

Kết quả hình ảnh cho openstack kolla

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

Giao diện Horizon

Sau khi thao tác xong, chọn Sign In

Giao diện tổng quan

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!

Nguồn

https://docs.openstack.org/kolla-ansible/latest/

https://github.com/openstack/kolla-ansible

Leave a Reply