kolla-ansible安装OpenStack

半兽人 发表于: 2023-02-14   最后更新时间: 2023-03-01 17:27:45  
{{totalSubscript}} 订阅, 1,567 游览

本指南介绍了在 裸机服务器虚拟机 上使用Kolla Ansible部署OpenStack的步骤说明。

主机要求

主机必须满足以下最低要求:

  • 2个网络接口
  • 8GB内存
  • 40GB磁盘

关于支持的主机操作系统的细节,请参见matrix

安装依赖

通常情况下,本节中使用系统软件包管理器的命令必须以root权限运行。

一般建议使用虚拟环境来安装Kolla Ansible及其依赖项,以避免与系统包冲突。注意,这与使用虚拟环境进行远程执行是独立的,这在虚拟环境中有所描述。

  1. Debian 或 Ubuntu,更新包的索引。

    sudo apt update
    
  2. 安装Python构建依赖项:

    对于CentOS,Rocky或openEuler,运行:

    sudo dnf install git python3-devel libffi-devel gcc openssl-devel python3-libselinux
    

    Debian 或 Ubuntu,运行:

    sudo apt install git python3-dev libffi-dev gcc libssl-dev
    

使用虚拟环境安装依赖项

  1. 安装虚拟环境的依赖项。

    对 CentOS,Rocky 或 openEuler,你不需要做任何事情。

    对 Debian 或 Ubuntu,运行:

    sudo apt install python3-venv
    
  2. 创建一个虚拟环境并激活它:

    python3 -m venv /path/to/venv
    source /path/to/venv/bin/activate
    

    在运行任何依赖安装在其中的软件包的命令之前,应先激活虚拟环境。

  3. 确保安装了最新版本的pip:

    pip install -U pip
    
  4. Kolla Ansible至少需要Ansible 4,最高支持5:

    pip install 'ansible>=4,<6'
    

安装 Kolla-ansible

  1. 使用pip安装kolla-ansible和它的依赖项。

    如果是虚拟环境:

    pip install git+https://opendev.org/openstack/kolla-ansible@|KOLLA_BRANCH_NAME|
    

    如果不是虚拟环境:

    sudo pip3 install git+https://opendev.org/openstack/kolla-ansible@|KOLLA_BRANCH_NAME|
    
  2. 创建 /etc/kolla 目录:

    sudo mkdir -p /etc/kolla
    sudo chown $USER:$USER /etc/kolla
    
  3. 复制 globals.yml 和 passwords.yml 到 /etc/kolla 目录:

    如果是虚拟环境:

    cp -r /path/to/venv/share/kolla-ansible/etc_examples/kolla/* /etc/kolla
    

    如果不是虚拟环境,则运行:

    cp -r /usr/local/share/kolla-ansible/etc_examples/kolla/* /etc/kolla
    
  4. 复制 all-in-one 和 multinode 清单文件到当前的目录:

    如果是虚拟环境:

    cp /path/to/venv/share/kolla-ansible/ansible/inventory/* .
    

    对于虚拟环境中的一体式方案,在清单的最开始添加以下内容:

     localhost ansible_python_interpreter=python
    

    如果不是虚拟环境,则运行:

    cp /usr/local/share/kolla-ansible/ansible/inventory/* .
    

安装 Ansible Galaxy 要求

安装Ansible Galaxy的依赖(Yoga版本以上)。

kolla-ansible install-deps

配置Ansible

为了获得最佳效果,Ansible的配置应该针对你的环境进行调整。例如,在Ansible配置文件/etc/ansible/ansible.cfg中添加以下选项。

[defaults]
host_key_checking=False
pipelining=True
forks=100

准备初始配置

清单(Inventory)

下一步是准备清单文件。清单是一个Ansible文件,我们在其中指定主机和它们所属的组。用它来定义节点角色和访问凭证。

Kolla Ansible提供了all-in-one(一体机)multinode(多节点)的示例清单文件。它们之间的区别在于,前者是为在本地主机上部署单节点OpenStack准备的。如果你需要使用单独的主机或一个以上的节点,请编辑多节点清单:

  1. 编辑 multinode 的第一部分,例如:

    [control]
    10.0.0.[10:12] ansible_user=ubuntu ansible_password=foobar ansible_become=true
    # Ansible supports syntax like [10:12] - that means 10, 11 and 12.
    # Become clause means "use sudo".
    
    [network:children]
    control
    # when you specify group_name:children, it will use contents of group specified.
    
    [compute]
    10.0.0.[13:14] ansible_user=ubuntu ansible_password=foobar ansible_become=true
    
    [monitoring]
    10.0.0.10
    # This group is for monitoring node.
    # Fill it with one of the controllers' IP address or some others.
    
    [storage:children]
    compute
    
    [deployment]
    localhost       ansible_connection=local become=true
    # use localhost and sudo
    
  2. 检查清单的配置是否正确,运行:

    ansible -i multinode all -m ping
    

注意
分布式的话可能没有预装Python。这将导致 ping 模块错误。要用Ansible快速安装Python,你可以运行:对于Debian或Ubuntu:ansible -i multinode all -m raw -a "apt -y install python3",而对于CentOS、Rocky或openEuler:ansible -i multinode all -m raw -a "dnf -y install python3"

Kolla 密码

在部署中使用的密码存储在/etc/kolla/passwords.yml文件中。该文件中的所有密码都是空白的,必须手动或通过运行随机密码生成器来填写:

运行生成:

kolla-genpwd

Kolla globals.yml

globals.yml是Kolla Ansible的主要配置文件。有几个选项是部署Kolla Ansible所需要的:

  • Image 选项

    用户必须指定将用于部署的图像。在本指南中,将使用Quay.io提供的构建的镜像。要了解更多关于构建机制的信息,请参考构建容器镜像

    Kolla 在容器中提供了多种 Linux 发行版的选择:

    • CentOS Stream (centos)
    • Debian (debian)
    • Rocky (rocky)
    • Ubuntu (ubuntu)

    对于新手,我们推荐使用 Rocky Linux 9 或 Ubuntu 22.04。

    kolla_base_distro: "rocky"
    
  • 网络

    Kolla Ansible需要设置一些网络选项,我们需要设置OpenStack使用的网络接口。

    第一个要设置的接口是"network_interface"。这是多管理型网络的默认接口。

    network_interface: "eth0"
    

    第二个需要的接口是Neutron外部(或公共)网络专用的,可以是vlan或flat,取决于网络的创建方式。这个接口应该是激活的,没有IP地址。如果不是,实例将不能访问外部网络。

    neutron_external_interface: "eth1"
    

    要了解有关网络配置的更多信息,请参阅网络概述

    接下来我们需要为管理流量提供浮动IP。这个IP将由keepalived管理以提供高可用性,需要设置一个不使用的地址。

    kolla_internal_vip_address: "10.1.0.250"
    
  • 启用附加服务

    默认情况下,Kolla Ansible 提供裸金属计算套件,但它确实提供对大量附加服务的支持。要启用它们,请将 enable_* 设置为“yes”。例如,启用块存储服务:

    enable_cinder: "yes"
    

    Kolla 现在支持许多 OpenStack 服务,有一个可用服务列表。有关服务配置的更多信息,请参阅服务参考指南

  • 多个 globals 文件

    对于更精细的控制,现在可以使用多个 yml 文件来启用主的 globals.yml 文件中的任何选项。简单地说,在 /etc/kolla/ 下创建一个名为 globals.d 的目录,并将所有相关的 *.yml 文件放在那里。 kolla-ansible 脚本会自动将所有这些作为参数添加到 ansible-playbook 命令中。

    比如,如果操作员想要在初始部署之后的阶段启用 cinder 及其所有选项,而不篡改现有的 globals.yml 文件。 这可以通过使用一个单独的 cinder.yml 文件来实现,该文件位于 /etc/kolla/globals.d/ 目录下,并在其中添加所有相关选项。

  • 虚拟环境

    建议使用一个虚拟环境在远程主机上执行任务,已经涵盖了虚拟环境

部署

配置完毕后,我们可以进入部署阶段。首先,我们需要设置基本的主机级依赖,如docker。

Kolla Ansible提供了一个playbook,它将以正确的版本安装所有需要的服务。

以下内容假设使用的是multinode清单。如果使用不同的清单,例如all-in-one,请相应地替换-i参数。

对于部署或评估,运行:

  1. 用kolla部署的依赖来引导服务器:

    kolla-ansible -i ./multinode bootstrap-servers
    
  2. 对主机进行部署前检查:

    kolla-ansible -i ./multinode prechecks
    
  3. 最后进行实际的 OpenStack 部署:

    kolla-ansible -i ./multinode deploy
    

当本剧本完成时,OpenStack 应该启动、运行并正常运行! 如果执行过程中出现错误,请参考故障排除指南

使用 OpenStack

  1. 安装 OpenStack CLI 客户端:

    pip install python-openstackclient -c https://releases.openstack.org/constraints/upper/|KOLLA_OPENSTACK_RELEASE|
    
  2. OpenStack 需要一个clouds.yaml文件,其中设置了管理员用户的凭据。要生成此文件:

    运行:

    kolla-ansible post-deploy
    

    该文件将在 /etc/kolla/clouds.yaml 中生成,您可以通过将其复制到 /etc/openstack~/.config/openstac 或设置 OS_CLIENT_CONFIG_FILE 环境变量来使用它。

  3. 根据您安装 Kolla Ansible 的方式,有一个脚本可以创建示例网络、镜像等。

    警告

    可以出于演示目的自由使用以下 init-runonce 脚本,但请注意,不必为了使用云而运行它。根据您的自定义设置,它可能不起作用,或者可能与您要创建的资源冲突。

    运行:

    如果使用虚拟环境:

    /path/to/venv/share/kolla-ansible/init-runonce
    

    不是虚拟环境:

    /usr/local/share/kolla-ansible/init-runonce
    

(完)

REF

https://quay.io/organization/openstack.kolla
https://docs.openstack.org/project-deploy-guide/kolla-ansible/zed/quickstart.html

更新于 2023-03-01

查看OpenStack更多相关的文章或提一个关于OpenStack的问题,也可以与我们一起分享文章