首页
kolla ansible 部署带有designate dns服务的openstack环境

环境信息

  1. 操作系统:20.04.3 LTS (Focal Fossa)

安装openstack

  1. 安装Python编译依赖

    sudo apt install git python3-dev libffi-dev gcc libssl-dev
    
  2. 安装virtual environment

    sudo apt install python3-venv
    
  3. 创建虚拟环境

    mkdir -p /opt/venv
    python3 -m venv /opt/venv
    source /opt/venv/bin/activate
    
  4. 升级pip

    pip install -U pip
    
  5. 安装snsible

    pip install 'ansible-core>=2.15,<2.16.99'
    

安装Kolla-ansible

  1. 安装软件包

    pip install git+https://opendev.org/openstack/kolla-ansible@master
    
  2. 创建/etc/kolla目录

    sudo mkdir -p /etc/kolla
    sudo chown $USER:$USER /etc/kolla
    
  3. Copy globals.yml and passwords.yml to /etc/kolla directory.

    cp -r /opt/venv/share/kolla-ansible/etc_examples/kolla/* /etc/kolla
    
  4. Copy all-in-one inventory file to the current directory.

    cp /opt/venv/share/kolla-ansible/ansible/inventory/all-in-one .
    

安装依赖

kolla-ansible install-deps

准备配置信息

  1. 生成密码

    kolla-genpwd
    
  2. 修改globals.yml

    globals.yml是Kolla Ansible的主要配置文件,默认存储在/etc/kolla/globals.yml文件中。部署Kolla Ansible需要设置一些选项:

    • 镜像选项

      用户必须指定将用于部署的镜像。

      Kolla提供了几种Linux发行版的容器:

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

      这里我们使用ubuntu。

      kolla_base_distro: "ubuntu"
      
    • AArch64选项

      Kolla提供了适用于x86-64和aarch64架构的镜像。它们不是“multiarch”,因此aarch64的用户需要定义“openstack_tag_suffix”设置:

      openstack_tag_suffix: "-aarch64"
      

      这样就会使用为aarch64架构构建的镜像。

    • 存储

      这里我们使用lvm存储后端。

      可以使用裸盘或者可以采用Das、iscsi-san、fc-san等方式经存储映射到宿主机本地,然后在进行如下操作

      (a)创建LVM 物理卷 /dev/sdb

      pvcreate /dev/sdb
      

      (b)创建 LVM 卷组 cinder-volumes

      vgcreate cinder-volumes /dev/sdb
      

      (c)修改配置文件globals.yml

      enable_cinder: "yes"
      enable_cinder_backend_iscsi: "yes"
      enable_cinder_backend_lvm:: "yes"
      cinder_volume_group: "cinder-volumes" # 此处创建的vg名称
      
    • 网络

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

      首先要设置的接口是“network_interface”。这是管理类型网络的默认接口。

      network_interface: "eth0"
      

      第二个所需的接口专用于Neutron外部(或公共)网络,可以是vlan或flat,取决于网络是如何创建的。此接口应处于活动状态但不带IP地址。如果没有,则实例将无法访问外部网络。

      neutron_external_interface: "eth1"
      

      接下来,我们需要为管理流量提供浮动IP。此IP将由keepalived管理,以提供高可用性,并且应设置为未使用的管理网络中的地址,该网络连接到我们的network_interface。如果要使用现有的OpenStack安装进行部署,请确保配置了您的虚拟机的IP地址。

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

      默认情况下,Kolla Ansible提供一个基本的计算套件,但它确实支持大量的附加服务。要启用它们,请将enable_*设置为“yes”。

      这里我们需要启用designate相关服务

      enable_designate: "yes"
      enable_horizon_designate: "{{ enable_designate | bool }}"
      

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

执行安装部署

  1. 初始化服务器:

    kolla-ansible -i ./all-in-one bootstrap-servers
    
  2. 检查服务器:

    kolla-ansible -i ./all-in-one prechecks
    
  3. 执行安装部署:

    kolla-ansible -i ./all-in-one deploy
    

使用命令行 OpenStack

  1. 安装 OpenStack CLI client:

    pip install python-openstackclient -c https://releases.openstack.org/constraints/upper/master
    
  2. 生成命令行需要的认证信息:

    kolla-ansible post-deploy
    

验证

$ source /opt/venv/bin/activate
$ source /etc/kolla/admin-openrc.sh
$ openstack zone create --email [email protected] test.org.
$ neutron net-create dns-net --dns-domain test.org.
$ neutron subnet-create --name dns-subnet dns-net 10.0.66.0/24
$ nova boot --image cirros --flavor mini --nic net-name=dns-net vm5

问题:

  1. neutron 如果使用linuxbridge插件,那么需要增加特殊配置:
[experimental]
linuxbridge = true
  1. cinder对接lvm后端存储

可以使用裸盘或者可以采用Das、iscsi-san、fc-san等方式经存储映射到宿主机本地,然后在进行如下操作

(a)创建LVM 物理卷 /dev/sdb

pvcreate /dev/sdb

(b)创建 LVM 卷组 cinder-volumes

vgcreate cinder-volumes /dev/sdb

(c)修改配置文件

vi /etc/kola/globals.yml

enable_cinder: "yes"
enable_cinder_backend_iscsi: "yes"
enable_cinder_backend_lvm:: "yes"
cinder_volume_group: "cinder-volumes" # 此处创建的vg名称
  1. 缺少命令行
pip3 install python-designateclient
apt install python3-designate

参考:

https://docs.openstack.org/kolla-ansible/latest/user/quickstart.html