目录

使用kolla-ansible单点部署openstack云平台

使用kolla-ansible单点部署openstack云平台


项目三: 云基础架构平台部署

【学习目标】

【知识目标】

  1. 学习 OpenStack 的多种部署方式。

  2. 学习 Kolla-ansible 概念。

  3. 学习 Ansible 概念。

【技能目标】

  1. 掌握 Kolla-ansible 部署模式搭建云平台的技能。

  2. 具备 OpenStack 云平台部署的能力。

  3. 掌握云平台扩容的方法。

【素养目标】

  1. 激发创新思维与探索精神,促进科学态度的形成。

  2. 培育诚信为本的道德品质,树立忠诚可靠的行为准则。

  3. 塑造精益求精的工作态度,追求严谨细致的职业风范。

【项目实施】

任务 3.1 云基础环境构建

在本项目实践中,编者将逐步演示如何利用 Kolla-Ansible 工具从零开始搭

建单节点 OpenStack 环境,为实际私有云平台建设提供实践参考。

3.1.1 规划节点

单节点部署 OpenStack 云平台,各节点主机名和 IP 地规划见表 3-1。

表 3-1 各节点主机名和 IP 地址规划列表(单节点部署模式下)

IP192.168.100.10192.168.143.129192.168.104.200
网卡仅主机Nat桥接
作用管理网络数据网络外部网络

3.1.2 环境准备

在物理机上申请一台安装 openEuler-22.09 操作系统的虚拟机作为 OpenStack all-in-one

节点,处理器处勾选“虚拟化 IntelVT-x/EPT 或 AMD-V/RVI(V)”。 all-in-one 节点类型为

8

vCPU 12 GB 内存、 100 GB 系统硬盘 。需要给虚拟机设置三个网络接口,网络接口 1 设置为 外部网络 ,其网卡 使用 NAT 模式 ,主要作为该节点的 数据网络 ,在集群部署完成后创建的云主机便使用的是网络接口 1 的网卡,网络接口 2 设置为 内部网络 ,其网卡使用 仅主机模式 ,作为 该节点的通信和管理使用 ;网络接口3 设置为 外部网络, 其网卡使用 桥接模式, 为本节点提供下包等等服务

https://i-blog.csdnimg.cn/direct/118d84985c4e4a959a5747f5c6379f62.png

3.1.3 系统基本环境设置

1. 修改主机名

[root@localhost ~]# hostnamectl set-hostname controller

[root@localhost ~]#  bash

[root@controller ~]#

2. 更新系统软件包

配置华为源

参考华为官方镜像网站:

sed -i ’s|http://repo.openeuler.org/| |g’ /etc/yum.repos.d/openEuler.repo

all-in-one 节点更新系统软件包,以获得最新的功能支持。

[root@controller ~]# dnf -y update && dnf -y upgrade

[root@controller ~]# reboot

修改网卡地址

按照规划节点的

IP

规划,配置

all-in-one

节点的静态

IP

地址,修改以下示例配置中的

参数。

[root@localhost ~]# ip a

这里由于是做完写的文档,后续nat网卡会被neutron组件服务占用,所以这里没有ip,正常是有的 https://i-blog.csdnimg.cn/direct/9656729f49194bc3a9bdcd003a9e0c1a.png

[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens160 https://i-blog.csdnimg.cn/direct/5b3f2550290147cebb9c3af32e400eb2.png

[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens224 https://i-blog.csdnimg.cn/direct/e7f9494a137e4b9197620a9f1a06bff6.png

[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens256 https://i-blog.csdnimg.cn/direct/a47cbe32623842388754b219cdcf9d14.png

载入网卡配置并启动相应的网卡。

[root@controller ~]# nmcli c reload

[root@controller ~]# nmcli c up ens160

[root@controller ~]# nmcli c up ens224

[root@controller ~]# nmcli c up ens256

3.1.4 安装 Ansible Kolla-ansible

为了可以使用

pip3

安装和管理

Python3

软件包,安装

pip3

[root@controller ~]# dnf -y install python3-pip

使用镜像源来加速

pip

安装包的下载速度。

[root@controller ~]# mkdir .pip

[root@controller ~]# cat « EFO > .pip/pip.conf

[global]

index-url =

[install]

trusted-host=pypi.tuna.tsinghua.edu.cn

EFO https://i-blog.csdnimg.cn/direct/f85a62b65e83430a84c07e673ef129b3.png

更新

Python3

中的

pip

工具到最新版本,保证

pip

工具的可用性和安全性。

[root@controller ~]#  pip3 install –ignore-installed –upgrade pip

使用以下命令安装

Ansible

,并查看所安装的版本号。

[root@controller ~]#  pip3 install -U ‘ansible>=4,<6’

[root@controller ~]#  ansible –version

Ansible的版本会直接影响后续安装kolla-ansible的版本 https://i-blog.csdnimg.cn/direct/9f77706bdf4b452d85aeca316d2bbc19.png

安装

Kolla-ansible

Kolla-ansible

环境必需的依赖项。

[root@controller ~]# dnf -y install git python3-devel libffi-devel gcc openssl-devel python3-libselinux

[root@controller ~]# dnf -y install openstack-kolla-ansible

[root@controller ~]# kolla-ansible –version

14.2.0 https://i-blog.csdnimg.cn/direct/243f653ef0a8480084253c6aa8088b19.png

创建

Kolla-ansible

配置文件目录。

[root@controller ~]# mkdir -p /etc/kolla/{globals.d,config}

kolla目录所有者和所属组均设置为root用户

[root@controller ~]# chown $USER:$USER /etc/kolla

inventory

文件复制到

/etc/ansible

目录。

[root@controller ~]# mkdir /etc/ansible

[root@controller ~]# cp /usr/share/kolla-ansible/ansible/inventory/* /etc/ansible

随着

Kolla-ansible

版本的更迭,

Yoga

版本已经被删除,这里 直接使用master版本即可

执行以下命令进行修改。

[root@localhost ~]# cd /usr/share/kolla-ansible

[root@localhost kolla-ansible]# ls

ansible  requirements.yml  setup.cfg

此文件用于拉取ansible-collection-kolla仓库,以下载python依赖以及ansible依赖

[root@localhost kolla-ansible]# vi requirements.yml

[root@localhost kolla-ansible]# cat requirements.yml


collections:

  • name:

type: git

version: master

安装 Ansible Galaxy 的依赖项,

[root@controller ~]# pip3 install cryptography==38.0.4

[root@controller ~]# kolla-ansible install-deps

3.1.5 Ansible 运行配置优化

在使用

Kolla-ansible

部署

OpenStack

时,它会执行大量的命令和任务,因此对

Ansible

进行调优可以加快执行速度,具体的优化如下。

[root@controller ~]# cat /etc/ansible/ansible.cfg

[defaults]

#SSH

服务关闭密钥检测

host_key_checking=False

如果不使用

sudo

,建议开启

pipelining=True

执行任务的并发数

forks=100

timeout=800

禁用警告

devel_warning = False

deprecation_warnings=False

显示每个任务花费的时间

callback_whitelist = profile_tasks

25

记录

Ansible

的输出,相对路径表示

log_path= wxic_cloud.log

主机清单文件

,

相对路径表示

inventory = yoga_all-in-one

命令执行环境,也可更改为

/bin/bash

executable = /bin/sh

remote_port = 22

remote_user = root

默认输出的详细程度

可选值

0

1

2

3

4

值越高输出越详细

verbosity = 0

show_custom_stats = True

interpreter_python = auto_legacy_silent

[colors]

成功的任务绿色显示

ok = green

跳过的任务使用亮灰色显示

skip = bright gray

警告使用亮紫色显示

warn = bright purple

[privilege_escalation]

become_user = root

[galaxy]

display_progress = True

修改好以后,可以使用

ansible-config view

命令查看。

[root@controller ~]# ansible-config view

[defaults]

#SSH

服务关闭密钥检测

host_key_checking=False

… … … https://i-blog.csdnimg.cn/direct/e465d489b76e4dc7ba6c1091e9129ab4.png

3.1.6 Kolla-ansible 环境初始配置

修改主机清单文件

进入

/etc/ansible

目录,将提供的主机清单

all-in-one

文件过滤掉注释和空行,覆盖到

yoga_all-in-one

文件。

[root@controller ~]# cd /etc/ansible/

[root@controller ansible]# awk ‘!/^#/ && !/^$/’ all-in-one > yoga_all-in-one

检查主机清单文件是否配置正确

使用以下命令测试主机能否连通。

[root@controller ~]# ansible -m ping all

localhost | SUCCESS => {

“ansible_facts”: {

“discovered_interpreter_python”: “/usr/bin/python3.10”

},

“changed”: false,

“ping”: “pong”

} https://i-blog.csdnimg.cn/direct/3e58c00bb850495896bcf05ea297d008.png

配置

OpenStack

各服务组件的密码

在使用

Kolla-ansible

部署

OpenStack Yoga

平台时 ,各个服务 组件的密码 存储在

/etc/kolla/passwords.yml

文件中,此文件默认所有的密码是空白的,必须手动或者通过运行

随机密码生成器来填写,在部署时建议使用随机密码生成器来生成各个服务的密码,命令

如下。

[root@controller ~]# kolla-genpwd

修改

Horizon

界面登录密码为

wxic@2024

[root@controller ~]# sed -i ’s/keystone_admin_password: .*/keystone_admin_password: wxic@2024/g’ /etc/kolla/passwords.yml

验证修改结果

[root@controller ~]# grep keystone_admin /etc/kolla/passwords.yml

keystone_admin_password: wxic@2024 https://i-blog.csdnimg.cn/direct/74e93093ba024ddc9f9e251f91eb0cbf.png

编辑

globals.yml

文件

本次部署

all-in-one

时只安装了

OpenStack

的核心组件,在

globals.yml

指定参数

enable_openstack_core: “yes”

,安装

Glance

Keystone

Neutron

Nova

Heat

Horizon

务,其中要注意一个选项是

kolla_internal_vip_address

的地址,因为本次

Haproxy

keepalived

都未启用,故该地址为

ens224

网卡的地址(本次部署使用

192.168.100.10

),部

署完成后使用该地址登录

Horizon

[root@controller ~]# cd /etc/kolla/

[root@controller ~]#/etc/kolla# cp globals.yml{,_bak}

[root@controller ~]#vi /etc/kolla/globals.yml


docker_kernel_memory: 0

docker_registry: “quay.nju.edu.cn”

kolla_base_distro: “ubuntu”

kolla_install_type: “source”

openstack_release: “yoga”

kolla_internal_vip_address: “192.168.100.10”

kolla_sysctl_conf_path: /etc/sysctl.conf

docker_client_timeout: 120

network_interface: “ens224”

network_address_family: “ipv4”

neutron_external_interface: “ens160”

neutron_plugin_agent: “openvswitch”

neutron_ipam_driver: “internal”

openstack_region_name: “RegionWxic”

openstack_logging_debug: “False”

enable_openstack_core: “yes”

glance_backend_file: “yes”

nova_compute_virt_type: “kvm”

nova_console: “novnc”

enable_haproxy: “no”

enable_keepalived: “no” https://i-blog.csdnimg.cn/direct/ffe873cb8de644af89794938d51e79b3.png

/etc/kolla/config/

目录自定义

Neutron

服务的一些配置,这将在部署集群时使用自定

义的配置覆盖掉默认的配置。

[root@controller ~]# cd /etc/kolla/config/

[root@controller config]# mkdir neutron

[root@controller config]# cat « MXD > neutron/dhcp_agent.ini

[DEFAULT]

dnsmasq_dns_servers = 8.8.8.8,223.6.6.6,119.29.29.29

MXD

[root@controller config]# cat « MXD > neutron/ml2_conf.ini

[ml2]

tenant_network_types = flat,vxlan,vlan

[ml2_type_vlan]

network_vlan_ranges = provider:10:1000

[ml2_type_flat]

flat_networks = provider

MXD

[root@controller config]# cat « MXD > neutron/openvswitch_agent.ini

[securitygroup]

firewall_driver = openvswitch

[ovs]

bridge_mappings = provider:br-ex

MXD https://i-blog.csdnimg.cn/direct/92f953b8c3804e1fbb8112006e6e3bec.png

3.1.7 部署集群环境

all-in-one

节点安装

OpenStack CLI

客户端。

[root@controller ~]# dnf -y install python3-openstackclient

为了使部署的

all-in-one

节点网络路由正常工作,需要在

Linux

系统中启用

IP

转发功能,

修改所有节点的

/etc/sysctl.conf

文件,并配置在系统启动时自动加载

br_netfilter

模块,具体

操作如下。

将这三项添加到/etc/sysctl.conf中,有则修改,无则添加

net.ipv4.ip_forward=1

net.bridge.bridge-nf-call-ip6tables=1

net.bridge.bridge-nf-call-iptables=1

临时加载模块,重启后失效

[root@controller ~]# modprobe br_netfilter

重新加载配置

[root@controller ~]# sysctl -p /etc/sysctl.conf https://i-blog.csdnimg.cn/direct/5311a56af05541f49d34e40fcda20b58.png

创建

yoga.service

文件,设置系统开机自动加载

br_netfilter

模块

[root@controller ~]# cat « MXD > /usr/lib/systemd/system/yoga.service

[Unit]

Description=Load br_netfilter and sysctl settings for OpenStack

[Service]

Type=oneshot

RemainAfterExit=yes

ExecStart=/sbin/modprobe br_netfilter

ExecStart=/usr/sbin/sysctl -p

[Install]

WantedBy=multi-user.target

MXD

[root@controller ~]# systemctl enable –now yoga.service

Created symlink /etc/systemd/system/multi-user.target.wants/yoga.service →

/lib/systemd/system/yoga.service.

all-in-one

节点使用命令安装

OpenStack

集群所需要的基础依赖项和修改一些配置文

件,如安装

Docker

和修改 Hosts 文件等。 https://i-blog.csdnimg.cn/direct/a0a4c5d38daf4ee188236deb9eb1476c.png

[root@controller ~]# kolla-ansible bootstrap-servers

https://i-blog.csdnimg.cn/direct/ff86970674bb4c6fbcba193c364e9ee6.png

执行结果和用时(单节点部署模式下使用命令安装基础依赖项和配置文件)

解决执行命令报错,未安装docker 的问题

  1. 思考为什仫会失败呢

查看/etc/yum.repo

[root@controller ~]# ls /etc/yum.repos.d/

backup.repo  docker.repo

发现已经配置了docker 的源,尝试手动部署发现docker 用不了

猜测应该是kolla-ansible 默认配置的docker 不适配欧拉系统

配置centos7 的docker源

[root@controller ~]# vi $HOME/.ansible/collections/ansible_collections/openstack/kolla/roles/docker/tasks/repo-RedHat.yml


  • name: Ensure yum repos directory exists

file:

path: /etc/yum.repos.d/

state: directory

recurse: true

become: true

  • name: Enable docker yum repository

yum_repository:

name: docker

description: Docker main Repository

baseurl: "

"

gpgcheck: "

true

"

gpgkey: "

"

NOTE(yoctozepto): required to install containerd.io due to runc being a

modular package in CentOS 8 see:

https://

bugzilla.redhat.com/show_bug.cgi?id=1734081

module_hotfixes: true

become: true

  • name: Install docker rpm gpg key

rpm_key:

state: present

key: “{ { docker_yum_gpgkey }}”

become: true

when: docker_yum_gpgcheck | bool

rm -rf /etc/yum.repos.d/docker.repo

再次尝试部署

[root@controller ~]# kolla-ansible bootstrap-servers

查看docker信息 https://i-blog.csdnimg.cn/direct/aa74732ee4f648f7a3fc8a171356d791.png

Docker

默认的镜像拉取地址在国外,在国内拉取镜像速度就比较慢,可以修改国内镜

像地址来加速镜像的拉取,编辑

all-in-one

节点

/etc/docker/daemon.json

文件,添加

registry-

mirrors

部分的内容,下面给出

all-in-one

节点修改的示例。

[root@controller ~]# cat /etc/docker/daemon.json

{

“bridge”: “none”,

“default-ulimits”: {

“nofile”: {

“hard”: 1048576,

“name”: “nofile”,

“soft”: 1048576

}

},

“ip-forward”: false,

“iptables”: false,

“registry-mirrors”: [

“ ”,

“ ”,

“ ”,

“ ”,

“ ”,

“ ”,

“ ”,

“ ”,

“ ”,

“ ”,

“ ”,

“ ”,

“ ”,

“ ”,

“ ”,

“ ”,

“ ”,

“ ”,

“ ”,

“ ”

]

}

[root@controller ~]# systemctl daemon-reload

[root@controller ~]# systemctl restart docker https://i-blog.csdnimg.cn/direct/39e53455f4c44f1487d7a17d69079805.png

all-in-one

节点进行部署前检查,

openEuler22.09

系统执行过程中如果出现

“openEuler

release NA version 22.09 is not supported. Supported releases are: 20.03”

提示,不必理会继续接

下来的操作,不会影响后面的部署。

[root@controller ~]# kolla-ansible prechecks https://i-blog.csdnimg.cn/direct/9cdd3ac2ac1a44259b452e3c7efdfc51.png

all-in-one

节点使用以下命令下载

OpenStack

集群

all-in-one

节点所需要的全部镜像,

执行结果和用时如图

3-4

所示。

[root@controller ~]# docker pull 99cloud/skyline:latest

[root@controller ~]# kolla-ansible pull https://i-blog.csdnimg.cn/direct/24d609f1010248b38848f61b6539dcec.png

https://i-blog.csdnimg.cn/direct/23ce4936e62649c48e7e8e3ab8c03921.png

all-in-one

节点执行以下命令部署

OpenStack

集群,

[root@controller ~]# kolla-ansible deploy

https://i-blog.csdnimg.cn/direct/ec04f17cc42e444bbe532c5f37de0cf7.png

执行结果和用时(单节点部署模式下部署

OpenStack

集群)

上述步骤完成后,

OpenStack

集群部署结束,所有的服务已经启动并正常运行,输入

globals.yml

文件中定义的

kolla_internal_vip_address

地址在浏览器登录

Horizon

界面,用户

名为

admin

,密码为

passwords.yml

文件中

keystone_admin_password

的值

wxic@2024

,单

节点部署模式下的 Horizon 登录和概览界面 https://i-blog.csdnimg.cn/direct/8b343ce750bb4802b054a1b8b47587e8.png https://i-blog.csdnimg.cn/direct/a79b520fbba74453b87d949a50b2bcde.png

Horizon

概览界面(单节点部署模式)

3.1.8 OpenStackCLI 客户端设置

OpenStack

集群部署完成 后,客户端执行命令则需要 生成

clouds.yaml

admin-

openrc.sh

文件,这些是管理员(

admin

)用户的凭据,执行以下命令,执行结果和用时如

3-8

所示。

3334

[root@controller ~]# kolla-ansible post-deploy https://i-blog.csdnimg.cn/direct/dcb0da63192c4df59e8991cc2ea54494.png

执行以下命令,将生成的文件移动到

/etc/openstack

目录下,并在

/etc/profile.d/

目录编写

/openstack-yoga.sh

脚本。

[root@controller ~]# mkdir /etc/openstack

[root@controller ~]# mv /etc/kolla/admin-openrc.sh /etc/openstack/

[root@controller ~]# cat « MXD > /etc/profile.d/openstack-yoga.sh

#!/usr/bin/env bash

source /etc/openstack/admin-openrc.sh

MXD

重启终端后便可以正常使用

openstack

命令

[root@controller ~]# logout

使用

OpenStack

相关命令验证客户端是否可以正常使用和服务是否正常启动,

[root@controller ~]# openstack service list https://i-blog.csdnimg.cn/direct/df8ad5a07eae4de798b358a488cb9fa3.png

[root@controller ~]# openstack compute service list https://i-blog.csdnimg.cn/direct/a24d180a497e488b93da378fc2ece06e.png

[root@controller ~]# openstack network agent list https://i-blog.csdnimg.cn/direct/95d281f6049d4142a689e49bc3cff15c.png

可以发现,所有命令都可以正常使用,并且服务状态正常,下面查看本次部署

OpenStack

版本的详细信息,包括各个组件的版本号,如下所示。

[root@controller ~]# openstack version show https://i-blog.csdnimg.cn/direct/1bf89760fbc74f62bb1c83f905800726.png

3.1.9 安装 Skyline 服务

Skyline

是新一代的

OpenStack

管理界面,由九州云于

2021

9

月捐献给

OpenStack

区。同年

12

月末,

Skyline

孵化完成,成为

OpenStack

正式项目。

2022

年,

Skyline

开发团

队完成了

OpenStack

的代码重构,并增加了对

Octavia

Manila

Swift

Barbican

Zun

Trove

等社区模块的支持。

Skyline

团队也通过企业微信群与社区开发者、社区用户进行了

很多轮的互动讨论。

2022

10

5

日,

Skyline

第一个正式版本随

OpenStack Yoga

正式发

布。

Skyline

不仅提供了

OpenStack

基础服务(如计算、存储、网络的操作界面),也支持

许多增值服务(如文件存储、对象存储、负载均衡、数据库等服务)。一旦完成部署,

Skyline

不依赖任何插件就能迅速调用各种云服务接口,满足企业级的生产需求。云上的虚

拟机、容器、

K8s

集群、

RDS

Relational Database Service

,关系数据库服务)数据库、负

载均衡等各种资源,都能在

Skyline

的平台上完成全生命周期管理。

Skyline 1.0.0

版本已完成表

3-2

中组件的对接,并支持完整的图形化操作界面。

3-2 Skyline 1.0.0

组件说明

https://i-blog.csdnimg.cn/direct/706112d715b448d78baa22baaff6561b.png

创建

Skyline

服务的数据库

MariaDB

容器中创建

Skyline

服务的数据库并赋予远程访问权限,命令及执行结果

如下所示。

查询数据库登录密码

38

[root@controller ~]# grep ^database /etc/kolla/passwords.yml https://i-blog.csdnimg.cn/direct/e3ed541394de49a1bda4fc246e71e5a8.png

查询运行数据库服务的容器

ID

[root@controller ~]#  docker container ls -f name=mariadb –format=’{ {.ID}}’

24200bbea954

进入数据库容器创建

S

kyline

服务的数据库并赋予远程访问权限

[root@controller ~]# docker exec -it 24200bbea954 sh

(mariadb)[mysql@controller /]$ mysql -uroot -p3HxaoYzygz9p3zOKQeFlClBBKUzbu6hskgPXnHU7

Welcome to the MariaDB monitor. Commands end with ; or \g.

Your MariaDB connection id is 30361

Server version: 10.6.11-MariaDB-1:10.6.11+maria~deb11-log mariadb.org binary

distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

MariaDB [(none)]> CREATE DATABASE skyline DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci

Query OK, 1 row affected (0.004 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON skyline. * TO’skyline’@’localhost’ IDENTIFIED BY ‘mariadb_yoga’;

Query OK, 0 rows affected (0.006 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON skyline. * TO ‘skyline’@’ %’ IDENTIFIED BY ‘mariadb_yoga’;

Query OK, 0 rows affected (0.005 sec)

MariaDB [(none)]> flush privileges;

Query OK, 0 rows affected (0.005 sec) https://i-blog.csdnimg.cn/direct/857a308675264bda9dbc253447da77df.png

创建

Skyline

用户并添加

admin

角色

创建

Skyline

服务的新用户

skyline

,密码为

wxic@yoga

,在默认域

default

中创建,并

Skyline

用户分配

admin

角色。

[root@controller ~]# openstack user create –domain default –password wxic@yoga

skyline https://i-blog.csdnimg.cn/direct/0b327294c47846d8ab74d5ae31ee35df.png

[root@controller ~]# openstack role add –project service –user skyline admin

修改

Skyline

服务配置文件

创建

Skyline

服务需要的配置文件目录和日志文件目录。

[root@controller ~]# mkdir -p /etc/skyline /var/log/skyline /var/lib/skyline /var/log/nginx

/etc/skyline

目 录 创 建 并 修 改

skyline.yaml

配 置 文 件 , 该 示 例 文 件 最 新 版 可 在

OpenStack

官方帮助文档的

settings

界面找到,修改

skyline.yaml

配置文件中的如下几项内

容。

database_url

:定义数据库名称和远程连接地址。

debug

:是否启用

debug

功能。建议不启用,启用之后会产生大量的日志文件,非开

发人员没有必要启用。

log_dir

:定义日志存放目录(上面步骤中创建的

/var/log/skyline

目录)。

keystone_url

Keystone

服务的认证地址。

default_region

:集群区域名。

system_user_password

:已创建的

Skyline

用户的密码。

查询

keystone

内部服务端点地址

[root@controller ~]# openstack endpoint list –interface internal \

–service keystone -f value -c URL https://i-blog.csdnimg.cn/direct/1f9cec3408b6404b85aa59d8e7e1c89f.png

创建配置文件

skyline.yam

l

[root@controller ~]# vi /etc/skyline/skyline.yaml

default:

access_token_expire: 3600

access_token_renew: 1800

cors_allow_origins: []

MySQL

连接地址及密码

database_url: mysql://skyline:mariadb_ :3306/skyline

debug: false

log_dir: /var/log/skyline

log_file: skyline_wxic.log

prometheus_basic_auth_password: ‘wxic@yoga’

prometheus_basic_auth_user: '’

prometheus_enable_basic_auth: false

prometheus_endpoint: http://192.168.233.100:9091

secret_key: aCtmgbcUqYUy_HNVg5BDXCaeJgJQzHJXwqbXr0Nmb2o

session_name: session

ssl_enabled: true

openstack:

base_domains:

  • heat_user_domain

修改默认区域

default_region: RegionWxic

enforce_new_defaults: true

extension_mapping:

floating-ip-port-forwarding: neutron_port_forwarding

fwaas_v2: neutron_firewall

qos: neutron_qos

vpnaas: neutron_vpn

interface_type: public

keystone

认证地址

keystone_url: http://192.168.233.100:5000/v3/

nginx_prefix: /api/openstack

reclaim_instance_interval: 604800

service_mapping:

baremetal: ironic

compute: nova

container: zun

container-infra: magnum

database: trove

identity: keystone

image: glance

key-manager: barbican

load-balancer: octavia

network: neutron

object-store: swift

orchestration: heat

placement: placement

sharev2: manilav2

volumev3: cinder

sso_enabled: false

sso_protocols:

  • openid

修改 region 名

sso_region: RegionWxic

system_admin_roles:

  • admin

  • system_admin

system_project: service

system_project_domain: Default

system_reader_roles:

  • system_reader

system_user_domain: Default

system_user_name: skyline

skyline

用户密码

system_user_password: ‘wxic@yoga’

setting:

base_settings:

  • flavor_families

  • gpu_models

  • usb_models

flavor_families:

  • architecture: x86_architecture

categories:

  • name: general_purpose

properties: []

  • name: compute_optimized

properties: []

  • name: memory_optimized

properties: []

  • name: high_clock_speed

properties: []

  • architecture: heterogeneous_computing

categories:

  • name: compute_optimized_type_with_gpu

properties: []

  • name: visualization_compute_optimized_type_with_gpu

properties: []

gpu_models:

  • nvidia_t4

usb_models:

  • usb_c

运行

Skyline

服务

运行初始化引导容器生成数据库

Skyline

的表结构,并查看日志以验证数据库是否正常

连接和表结构的创建。

[root@controller ~]# docker run -d –name skyline_bootstrap \

-e KOLLA_BOOTSTRAP="" \

-v /etc/skyline/skyline.yaml:/etc/skyline/skyline.yaml \

-v /var/log:/var/log \

–net=host 99cloud/skyline:latest

查看 skyline_bootstrap 容器的日志

[root@controller ~]# docker logs -f skyline_bootstrap

1. 日志报错解决

这里我出现了报错

sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (1045, “Access denied for user ‘skyline’@‘controller’ (using password: YES)”)

(Background on this error at: )

make: *** [Makefile:119: db_sync] Error 1

这里凡是接触过数据库的应该可以看出是数据库没有连上

先进行测试为什仫没有连上

进入mysql容器

[root@controller ~]# docker  exec -it –name mariadb 24200bbea954 https://i-blog.csdnimg.cn/direct/c7e80cc14cec410ba0d3d500a29e0ea6.png

然后进行远程连接测试

(mariadb)[mysql@controller /]$ mysql -h 192.168.100.10 -u skyline -p

Enter password:

ERROR 1045 (28000): Access denied for user ’luo’@‘controller’ (using password: YES)

可以看到没有成功,当时我就在想会不会权限没给到skyline用户

登录root查询权限

MariaDB [(none)]> SHOW GRANTS FOR ‘skyline’@’%’;

ERROR 1141 (42000): There is no such grant defined for user ‘skyline’ on host ‘%’

发现他没有权限,于是设权限允许所有主机连接,不再像前面那样只允许本地主机连接

CREATE USER ‘skyline’@’%’ IDENTIFIED BY ‘mariadb_yoga’;

GRANT ALL PRIVILEGES ON . TO ‘skyline’@’%’;

再次查询

SHOW GRANTS FOR ‘skyline’@’%’; https://i-blog.csdnimg.cn/direct/f90369d103974ddd967a56392e41b0ab.png

可以看到已经具有所有权限

再次查看 skyline_bootstrap 容器的日志

[root@controller ~]# docker logs -f skyline_bootstrap https://i-blog.csdnimg.cn/direct/442feae8dae54cc5b8fece52aedb416b.png

skyline_bootstrap容器的作用是生成 Skyline 服务的数据库的表结构,经查询,生成了alembic_version、revoked_token、settings 三张表结构,查询结果如下所示。

show tables;

https://i-blog.csdnimg.cn/direct/971d4a89c6dc455298bf561428afe2e8.png

describe alembic_version;

https://i-blog.csdnimg.cn/direct/d7594b9f2a02475e962163e06ec67871.png

describe revoked_token;

https://i-blog.csdnimg.cn/direct/d08b21adc9d94a5893c4bb6a912a4190.png

describe settings;

https://i-blog.csdnimg.cn/direct/c28425116c224610aa08636a23af5264.png

表结构创建成功后,删除数据库初始化引导容器 skyline_bootstrap。

[root@controller ~]# docker rm -f skyline_bootstrap skyline_bootstrap

运行 skyline-apiserver 服务容器 skyline,设置重启策略为 always,并挂载配置文件和日志目录的数据卷,将容器的网络连接设置为主机的网络。

[root@controller ~]# docker run -d –name skyline –restart=always \

-v /etc/skyline/skyline.yaml:/etc/skyline/skyline.yaml \

-v /var/log:/var/log \

-e LISTEN_ADDRESS=192.168.100.10:9942 \

–net=host 99cloud/skyline:latest

查询容器运行日志

[root@controller ~]# docker logs -f skyline https://i-blog.csdnimg.cn/direct/863bb45da1084a8195d7a3d9fdd36681.png

Skyline 服务组件安装结束,在浏览器访问 http://192.168.100.10:9942 地址便可以看到如图 3-9 所示的 Skyline 登录界面,输入用户名和密码登录后,可看到如图3-10 所示的Skyline 首页界面。

这里可以使用 admin管理员登录 也可使用 skyline用户登录

https://i-blog.csdnimg.cn/direct/e7aba26198c84c57bbb05729b95f1cf2.png

https://i-blog.csdnimg.cn/direct/2a904eab4b194f61b489feb619620055.png