zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    docker十一:docker-DockerFile案例-CMD、ENTRYPOINT、ONBUILD
    查看JVM使用的什么垃圾收集器
    Druid 加载 Kafka 流数据的性能配置参数 TuningConfig
    NPM 和 NVM
    Windows 中 Node.js 中 nvm 的安装配置和使用
    Nvm 安装新的 nodejs 版本
    Druid 加载 Kafka 流数据配置可以读取和处理的流中数据格式
    Druid 加载 Kafka 流数据 KafkaSupervisorIOConfig 配置信息表
    Java 面试都只是背答案不
    有什么理由将代码保存为 GBK 编码
  • 原文地址:https://www.cnblogs.com/mauricewei/p/10697233.html
Copyright © 2011-2022 走看看