Ubuntu 18.04.1 LTS + kolla-ansible 部署 openstack Rocky all-in-one 環境

1. kolla 項目介紹

簡介html

kolla 的使命是爲 openstack 雲平臺提供生產級別的、開箱即用的自動化部署能力。python

kolla 要實現 openetack 部署分爲兩步,第一步是製做 docker 鏡像,第二步是用 ansible 實現編排部署。所以,kolla 項目又被分爲兩個小項目:kolla、kolla-ansible,分別用於實現鏡像製做和編排部署功能。linux

kolla-kubernetes 相似於於 kolla-ansible,篇幅緣由本文不作過多介紹。git

kolla 的優點 github

市面上 openstack 的部署工具和方案不少,kolla 的優點主要得益於容器技術:docker

  • 快速部署,平滑升級,升級影響時間很是短。
  • 升級粒度小。能夠以組件爲單位進行升級,例如升級 nova 組件,使用 kolla-ansible -i ~/kolla/all-in-one upgrade -t nova 命令便可。
  • 只需操做系統與 docker 兼容,從而減小了不少 openstack 安裝包與基礎安裝包的衝突。
  • kolla 項目在社區內的熱度相對較高,社區支持更好。

關於本文實驗bootstrap

本文主要介紹下如何在 Ubuntu 18.04.1 LTS 系統上使用 kolla 部署 opesntack Rocky 版本 all-in-one 環境,其中:ubuntu

  • kolla-ansible 使用源代碼而不使用安裝包的方式。
  • kolla-ansible 運行環境使用 virtualenv 而不是用本地 python 環境。
  • docker 的 regisry 使用公用的 Docker Hub 而不是本身搭建。
  • 本實驗部署的 openstack 組件有 nova、neutron 及部分 neutron 插件、heat、glance、cinder-volume(lvm後端)、horizon。

2. 環境準備

基礎環境後端

  • 操做系統版本:Ubuntu 18.04.1 LTS minimal 安裝(虛擬機)
  • 兩塊網卡,一塊有 IP 地址,另外一塊只需 up 狀態,不須要 IP 地址
  • 系統內核版本:4.15.0-29-generic
  • kolla-absible 版本:kolla-ansible rocky 穩定版
  • openstack 版本:rocky 穩定版

關於網卡,部署all-in-one最少須要兩塊網卡。有 IP 地址的網卡做爲管理網和其餘網絡默認網卡(包括存儲網),沒有 IP 地址的網卡做爲業務網絡網卡;第二塊網卡不需配置 IP 地址,不然會影響虛擬機聯網。安全

virtualenv

爲了與其餘 python 項目隔離,本實驗使用 virtualenv 來存放 kolla 項目。

建立 virtuanenv 並激活:

# 升級 pip
sudo pip install -U pip
# 安裝 venv
sudo pip install virtualenv
sudo virtualenv ~/kolla/virtualenv
sudo source ~/kolla/virtualenv/bin/activate

3. 安裝依賴包

升級包索引

sudo apt-get update

安裝 python 依賴包

sudo apt-get install python-dev libffi-dev gcc libssl-dev python-selinux python-setuptools

4. Ansible

安裝 ansible

sudo apt-get install ansible

配置 ansible

更改 ansible 配置文件 /etc/ansible/ansible.cfg(配置文件不存在則需新建):

cat << EOF > /etc/ansible/ansible.cfg
[defaults]
host_key_checking=False
pipelining=True
forks=100
EOF

 關於 ansible 的配置項及含義,能夠參考 ansible基礎-安裝與配置

5. lvm 配置

建立 loop 設備和 lvm

本實驗環境咱們使用 lvm 做爲 cinder-volume 後端存儲。一種方法是給虛擬機添加一塊硬盤 sdb 並建立 pv 和 vg。另外一種方式是使用本地文件建立 loop 設備而後再建立 pv 和 vg。

第一種方式操做起來比較簡單,這裏介紹下第二種方式:

free_device=$(losetup -f)
fallocate -l 20G /var/lib/cinder_data.img
losetup $free_device /var/lib/cinder_data.img
pvcreate $free_device
vgcreate cinder-volumes $free_device

6. kolla-ansible

下載指定分支的 kolla-ansible 代碼

cd ~/kolla
git clone https://github.com/openstack/kolla-ansible -b stable/rocky

配置 kolla-ansible

安裝依賴:

pip install -r kolla-ansible/requirements.txt

建立 kolla 配置文件並設置權限:

sudo mkdir -p /etc/kolla
sudo chown $USER:$USER /etc/kolla

拷貝 kolla 配置文件模版:

cp -r kolla-ansible/etc/kolla/* /etc/kolla 

修改 kolla 配置文件:

cat << EOF > /etc/kolla/globals.yml
---
enable_iscsid: 'no' #不加會報錯,看起來是stable/rocky分支的bug
kolla_base_distro: "ubuntu"
kolla_install_type: "source" #使用基於源代碼的image
openstack_release: "rocky" #該配置項最好與kolla-ansible分支版本保持一致
kolla_internal_vip_address: "10.211.55.23" #與network_interface配置項網卡ip保持一致
network_interface: "enp0s5"
neutron_external_interface: "enp0s6"
enable_cinder: "yes" #開啓cinder部署開關
enable_cinder_backend_lvm: "yes" #使用lvm做爲cinder-volume後端存儲
enable_haproxy: "no"
glance_enable_rolling_upgrade: "no"
nova_compute_virt_type: "qemu" #使用虛擬機部署時,該配置項必須改成qemu,默認值爲kvm
EOF 

生成密碼文件:

#執行腳本自動生成
cd kolla-ansible/tools ./generate_passwords.py
#檢驗
cat /etc/kolla/passwords.yml

拷貝 ansible 主機清單文件:

cp kolla-ansible/ansible/inventory/* ~/kolla

主機清單(inventory)文件定義了 ansible 的主機組的劃分,若是是 all in one 環境那麼直接使用 all-in-one 文件便可,無需修改。

7. 執行部署

Bootstrap servers

cd kolla-ansible/tools
./kolla-ansible -i ~/kolla/all-in-one bootstrap-servers 

部署前檢查

這裏要添加 ansible_python_interpreter 變量,用於指定 virtualenv 環境位置,不然執行報錯:

./kolla-ansible -i ~/kolla/all-in-one prechecks -e 'ansible_python_interpreter=/root/kolla/virtualenv/bin/python'

執行部署

這步也要指定 virtualenv 環境位置:

./kolla-ansible -i ~/kolla/all-in-one deploy -e 'ansible_python_interpreter=/root/kolla/virtualenv/bin/python'

生成 keystone admin 用戶環境變量文件

./kolla-ansible -i ~/kolla/all-in-one post-deploy
. /etc/kolla/admin-openrc.sh 

啊安裝 openstack client

 

pip install python-openstackclient python-glanceclient python-neutronclient

 

8. 初始化與建立

初始化

初始化腳本會建立 cirros 鏡像、網絡、子網、路由、安全組、規格、配額等虛擬機資源:

. kolla-ansible/tools/init-runonce

建立虛擬機

根據實際環境替換 IMAGE_NAME 變量後執行以下腳本:

cat << EOF > ~/boot.sh
IMAGE_NAME=603672c1-47a9-45dc-92ad-226c2ac00d95
openstack server create --image ${IMAGE_NAME} --flavor m1.tiny --key-name mykey --network demo-net demo1
EOF

9. 參考連接

  • https://docs.openstack.org/kolla-ansible/latest/reference/index.html
  • https://docs.openstack.org/kolla-ansible/latest/user/quickstart.html
  • https://blog.csdn.net/jmilk/article/details/80500234
  • https://blog.csdn.net/moolight_shadow/article/details/51317441
相關文章
相關標籤/搜索