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


    1. kolla 项目介绍

    简介

    kolla 的使命是为 openstack 云平台提供生产级别的、开箱即用的自动化部署能力。

    kolla 要实现 openetack 部署分为两步,第一步是制作 docker 镜像,第二步是用 ansible 实现编排部署。因此,kolla 项目又被分为两个小项目:kolla、kolla-ansible,分别用于实现镜像制作和编排部署功能。

    kolla-kubernetes 类似于于 kolla-ansible,篇幅原因本文不做过多介绍。

    kolla 的优势 

    市面上 openstack 的部署工具和方案很多,kolla 的优势主要得益于容器技术:

    • 快速部署,平滑升级,升级影响时间非常短。
    • 升级粒度小。可以以组件为单位进行升级,例如升级 nova 组件,使用 kolla-ansible -i ~/kolla/all-in-one upgrade -t nova 命令即可。
    • 只需操作系统与 docker 兼容,从而减少了很多 openstack 安装包与基础安装包的冲突。
    • kolla 项目在社区内的热度相对较高,社区支持更好。

    关于本文实验

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

    • 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
  • 相关阅读:
    loj#6433. 「PKUSC2018」最大前缀和(状压dp)
    PKUWC2019游记
    10. Regular Expression Matching
    9. Palindrome Number
    8. String to Integer (atoi)
    7. Reverse Integer
    6. ZigZag Conversion
    5. Longest Palindromic Substring
    4. Median of Two Sorted Arrays
    3. Longest Substring Without Repeating Characters
  • 原文地址:https://www.cnblogs.com/mauricewei/p/10697233.html
Copyright © 2020-2023  润新知