Kolla-ansible部署OpenStack Train实践

2023-05-16

Kolla-ansible部署OpenStack Train实践

  • 前言
    • 系统环境设置
    • 安装pip和docker
    • 安装ansible
    • 安装kolla-ansible
    • 配置文件修改
      • 执行部署
    • 登录openstack
    • 写在最后
    • 部署过程中遇到的问题总结

前言

最近为了把几台国产化服务器利用起来,通过手动部署,大部分组件部署完成后发现neutron运行异常,linuxbridge无法自动创建网桥,排查了很久没有结果。无奈之下只能重装系统,重新来过。但是手动部署太费时间了,于是想通过devstack和packstack来部署,部署的时候还是重重的报错,而且很多配置都不可控。后来想想随着容器技术的应用越来越广泛,还是觉得研究使用docker部署方式,同时也可以借此机会再深入学习下docker。
花费了几天时间琢磨了下Kolla-ansible,以官方文档为主,但是官方文档还是有很多未提及的点,导致部署一直进行不下去。结合网上的各路大神的博客进行了反复验证,在虚拟机上测试成功后,开始在物理机上进行部署。最终成功部署完成。通过部署深入了解到kolla部署的配置原理。

系统环境设置

部署前最好能够熟悉下ansible和docker的相关技术及操作。本次部署的环境使用python2和docekr最新版本。官方文档部署的分了python虚拟环境和不同linux发行版本的操作命令,要自己看,不用重复执行,否则可能会把部署环境搞乱了。

1、安装一些基础的包

yum install python-devel libffi-devel gcc openssl-devel libselinux-python git wget

2、关闭系统安全设置

#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
#关闭网络管理组件
systemctl stop NetworkManager
systemctl disable NetworkManager
#关闭selinux
setenforce 0
vi /etc/selinux/config(修改为disabled)

安装pip和docker

1、pip是python的包管理器,ansible是基于python开发的,因此需要安装pip,安装相应的python包,默认系统都不带pip。

#下载pip
wget https://bootstrap.pypa.io/pip/2.7/get-pip.py --no-check-certificate
#安装pip
python get-pip.py 
#更新其他包
pip install -U setuptools

2、安装docker,docker是本次部署的关键,因此需要安装docker。

#添加软件仓库
yum -y install yum-utils
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache
#安装docker-ce不是docker
yum -y install docker-ce
#启动服务
systemctl enable docker
systemctl start docker
#修改docker镜像的源,也可以可以登录阿里云去申请加速域名。
sudo tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["http://hub-mirror.c.163.com"]
     }
    EOF	
systemctl daemon-reload
service docker restart

安装ansible

kolla-ansible部署是需要使用ansible,它是一款自动化的工具,是基于python开发。因此ansible是必须部署。

#获取epel的yum文件,否则ansible可能找不到包
yum install epel-release -y  
#安装ansible
yum install ansible  

安装kolla-ansible

#试过很多次都要先安装这个报告
pip install pbr
#开始安装kolla-ansible,要带上--ignore-installed PyYAML,否则可能会报错
pip install kolla-ansible --ignore-installed PyYAML
#创建kolla的文件夹,后续部署的时候很多openstack的配置文件都会在这
mkdir -p /etc/kolla
chown $USER:$USER /etc/kolla
#复制ansible的部署配置文件
cp /usr/share/kolla-ansible/ansible/inventory/* .
#负责gloable.yml和password.yml到目录
cp -r /usr/share/kolla-ansible/etc_examples/kolla/* /etc/kolla

配置文件修改

1、生成password.yml的密码,所有openstack组件的密码自动创建,后续组件都会使用此密码文件

kolla-genpwd

2、修改ansible的配置文件,不清楚具体作用,但是都是必做的。

vi /etc/ansible/ansible.cfg
[defaults]
host_key_checking=False
pipelining=True
forks=100

3、global.yml设置

#设置基于的发行版本
kolla_base_distro: "centos"
#设置使用的包类型
kolla_install_type: "binary"
#设置需要部署的openstack版本
openstack_release: "train"
openstack_tag_suffix: ""
#设置高可用的HA虚拟IP,如果不用HA可以直接设置控制节点的管理ip
kolla_internal_vip_address: "XXXX"
#设置管理网络网卡
network_interface: "eth0"
#设置业务网络网卡
neutron_external_interface: "eth1"
#设置虚拟交换机类型
neutron_plugin_agent: "linuxbridge"
#开启cinder功能
enable_cinder: "yes"
enable_cinder_backend_lvm: "yes"

4、cinder的配置准备,官方文档未说明的点,需要提前创建好cinder使用的vgs

pvcreate /dev/sdb
vgcreate cinder-volumes /dev/sdb

执行部署

所有的部署完成后下面就是开始进行部署,这里涉及到2个配置文件要进行设置。安装kolla-ansible的时候复制过2个文件里面分别是all-in-one和multinode,部署有2中模式,如果是all-in-one就不用修改这个all-in-one的文件,如果是多节点部署,请编辑multinode文件。

文件配置比较简单,主要是配置下需要部署节点的ssh登陆的账号密码即可。部署的时候ansible会进行ssh到节点进行自动化容器部署。

[control]
# 设置控制节点的登陆方式,可以设置ip或者域名
10.10.16.11 ansible_user=root ansible_password=rootpassword ansible_become=true

[network]
#网络节点的
10.10.16.11 ansible_user=root ansible_password=rootpassword ansible_become=true

[compute]
#计算节点
10.10.16.11 ansible_user=root ansible_password=rootpassword ansible_become=true
10.10.16.12 ansible_user=root ansible_password=rootpassword ansible_become=true


[monitoring]
#监控节点,默认和控制节点放一起
10.10.16.11 ansible_user=root ansible_password=rootpassword ansible_become=true


[storage]
#存储节点
10.10.16.11 ansible_user=root ansible_password=rootpassword ansible_become=true
10.10.16.12 ansible_user=root ansible_password=rootpassword ansible_become=true

[deployment]
localhost       ansible_connection=local
.

开始进行部署,执行命令需要在ansible的all-in-one和multinode的文件所在目录执行,否则命令要修改下路径。

#检查依赖关系
kolla-ansible -i ./multinode bootstrap-servers
#检查环境配置
kolla-ansible -i ./multinode prechecks
#拉去openstack镜像
kolla-ansible -i ./multinode  pull
#部署
kolla-ansible -i ./multinode  deploy
#生成环境变量文件,openstack命令行客户端使用
kolla-ansible post-deploy

登录openstack

使用控制节点的ip或在vip地址登录。密码可以在password.yml
在这里插入图片描述

在这里插入图片描述

写在最后

通过kolla-ansible的部署的确非常的方便,而且成功率比较高,对环境的要求也在降低,便捷性在不断提升。现在很多商业化的openstack版本基本上都在采用容器化的方式部署组件。但是其中还是有很多的参数还没琢磨透传,后续再慢慢研究。

部署过程中遇到的问题总结

1、docker版本检查不通过。
虽然检查没过,但是执行多节点部署的时候没有影响,研究了好久这个报错,发现在虚拟机环境不存在这个问题,而且安装网络说法python中docker的模块也是最新的,卸载了python-docker-py的包。

TASK [prechecks : Checking docker SDK version] *****************************************************
fatal: [localhost]: FAILED! => {“changed”: false, “cmd”: [“/usr/bin/python”, “-c”, “import docker; print(docker.version)”], “delta”: “0:00:00.014275”, “end”: “2022-05-05 10:26:25.698022”, “failed_when_result”: true, “msg”: “non-zero return code”, “rc”: 1, “start”: “2022-05-05 10:26:25.683747”, “stderr”: “Traceback (most recent call last):\n File “”, line 1, in \nImportError: No module named docker”, “stderr_lines”: [“Traceback (most recent call last):”, " File “”, line 1, in ", “ImportError: No module named docker”], “stdout”: “”, “stdout_lines”: []}

2、有兄弟反馈安装过程中ha配置检查不过去,原因是未启用haproxy的也需要把配置文件的enable_haproxy设置为no,并取消注释。因为默认是开启状态。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Kolla-ansible部署OpenStack Train实践 的相关文章

  • 具有多个 SSH 密钥对的 Ansible

    我是 Ansible 的新手 我能够对其进行测试并且其工作正常 符合我的测试要求 为了在管理节点和客户端节点之间建立连接 我使用已经创建的 ssh 密钥对 如何使用具有不同 SSH 密钥对的另一个节点 作为参考 我正在考虑 3 个具有不同密
  • 如何在ansible中为变量分配随机数?

    这是一个 ansible 脚本 我希望它能打印出相同的随机数 3 次 相反 它打印出三个随机数 如何将随机数分配给 ansible 中的变量 以便它在整个剧本中固定 name Test random filter hosts localho
  • 使用 Ansible 从服务列表中仅启动特定的 systemd 服务

    我有清单systemd服务定义为 vars systemd scripts a service b service c service 现在我只想停下来a service从上面的列表中 如何使用来实现这一点systemd https doc
  • 如果定义了 item,则 Ansible with_items

    安塞布尔 1 9 4 该脚本应该仅在定义了某些变量的主机上执行某些任务 正常情况下可以正常工作 但与with items陈述 debug var symlinks when symlinks is defined name Create o
  • Ansible inventory:aws_ec2 模块——寻找工作“groups:”函数的示例

    我有一个使用 aws ec2 模块的动态 ansible 库存 一般来说 它运作得很好 然而 有一个问题 我曾多次尝试使用 groups 关键字创建组 但所有尝试都失败了 文档有点稀疏 事实上 完整的文档就在这里 groups dictio
  • Ansible sudo 在执行 5 个任务后挂起

    设置要求 本地用户 goagent1 ansible从GoCD启动 远程用户 myadmin myadmin 是一个需要密码的 sudoer 我们在剧本级别启用了 sudo Problem 该剧本似乎在执行了大约 5 个任务后停止了 发生得
  • Ansible:shell 脚本输出始终为空

    我试图将 Linux shell 的输出插入到变量中 但由于某种原因 该变量始终为空 这是 Ansible 代码 name Check PHP version shell php v 2 gt dev null awk print 2 ex
  • 根据磁盘可用空间获取节点IP

    我正在尝试编写一个 Ansible 剧本来检查多个服务器上的磁盘空间 到目前为止 这是我的 Ansible 剧本 hosts all become yes tasks name Check freespace shell df h awk
  • 无法在守护进程模式下运行 Ansible

    我可以运行 Ansible 像守护进程一样管理我的主机吗 例如 我有时会更改我的剧本 但我不想手动运行 ansible playbook main yml 请不要建议 crontab 有一个特定的点 我不能在生产服务器上使用 crontab
  • 使用 ansible SSH 到远程服务器

    我正在使用 ansible 来自动化一些任务 其中之一要求我ssh到服务器A 然后从A到B 然后从B到C 我似乎找不到任何方法来做到这一点 有什么建议么 鉴于您不使用 Paramiko 进行 ssh transport ssh https
  • 无法将属性与数字进行比较。错误:“‘AnsibleUnsafeText’和‘int’实例之间不支持”

    getent database passwd debug var getent passwd dict2items selectattr value 1 gt 1000 map attribute key list 输出是 TASK deb
  • 如何从用户定义的 ansible.cfg 设置 ansible_config 变量

    我有一个目录结构 在其中保存我的剧本 如下所示 home monk Ansible work ansible cfg playbook dir 1 playbook 1 yml playbook dir 2 playbook 2 yml p
  • 创建一个能够从容器注册表中提取的 Docker 就绪计算引擎

    我们使用 terraform 设置 GCE 实例 然后使用 ansible playbooks 来配置它们并将我们的服务转移到机器上 我正在我们的组织中运行一个项目 该项目需要从另一个项目中提取 Docker 映像 这些图像托管在另一个项目
  • 附加到 group_vars 中的 Ansible 字典而不使用 hash_behaviour = merge

    我想定义一个字典变量 各个主机组可以将自己的密钥添加到其中在group vars中 不使用set fact 例如 像这样的东西 group vars ftp servers yml important ports ftp 21 group
  • Ansible 循环直到条件匹配。

    我想进行一系列 API 调用 每次调用后检查结果中的特定参数 如果它大于特定值 则将其保存在寄存器中并继续进一步执行剧本 基本上 我正在对 RHEV 进行 API 调用来检查存储域 然后我想检查存储域是否有足够的空间 如果有 则将该存储域i
  • 如何配置 Ansible 跳过两个堡垒主机?

    我想编写一个 Ansible 剧本 使用 Ansible 2 7 5 它将在到达目标服务器之前跳过两个主机来执行诸如安装 docker 和 python 等操作 我能够让 Ansible 通过一台主机跳转到server1通过将其添加到我的h
  • ansible 用户模块总是显示已更改

    我正在努力正确使用 ansible 的用户模块 问题是每次我运行我的剧本时 我创建的用户always显示为已更改 即使我已经创建了它们 我在这里发现其他人也有同样的问题 https github com ansible ansible is
  • 使用 Ansible 将二进制文件添加到 PATH

    我正在尝试安装Kiex https github com taylor kiex版本管理器Elixir http elixir lang org install html使用 Ansible 的编程语言 这些是我为此使用的戏剧 name K
  • ansible 重新启动 2.1.1.0 失败

    我一直在尝试创建一个非常简单的 Ansible 剧本 它将重新启动服务器并等待它回来 我过去在 Ansible 1 9 上有一个可以运行的 但我最近升级到 2 1 1 0 并且失败了 我正在重新启动的主机名为 idm IP 为 192 16
  • Ansible local_action 指令

    我对 Ansible 很陌生 有一个简单的问题来了解我的理解local action指示 这是否意味着该命令完全在本地执行 假设你有这样的东西 local action command which nginx register check

随机推荐

  • Group by无法排序,但可以通过子查询实现

    lt pre name 61 34 code 34 class 61 34 sql 34 gt select from table where id in select max id from table where tid in 0 10
  • ext4文件系统恢复被删除的文件

    ext4magic工具 可以恢复出被rm f删除的文件 xff08 只要原始数据块未被新数据所覆盖 xff09 ext4magic device M d savedir 可参考 https sourceforge net projects
  • nginx反向代理经验整理

    location flag proxy pass http 127 0 0 1 19999 上面这段配置的反向代理实际访问路径是 usr www location flag proxy pass http 127 0 0 1 19999 上
  • Git一些使用注意事项

    Git创建远程空仓库时要注意加上 shared 61 group 即命令 xff1a 初始化远程空仓库 xff1a git init bare shared 61 group 给空仓库设置组共享 xff1a git config core
  • 使用WSL在Windows上安装Ubuntu

    1 清理环境 查看当前的wsl 状态 xff0c wsl list 可以列出当前系统中已安装的子系统 选择需要清理的系统 xff0c 然后用 wsl unregister lt DistributionName gt 即可完成卸载 将 ws
  • CentOS/Ubuntu/Debian常用版本更换国内源的方法

    Linux系统安装完后软件源一般都是国外服务器 xff0c 在国内特别慢 xff0c 这时候就需要更换国内的镜像源 如163 aliyun 还有各高校镜像源等 记住先备份原始源在更换源 xff0c 以防以后备用 一 centos 1 备份
  • C++ 的引用类型

    C 43 43 的引用类型 在翻旧文的时候 xff0c 发现这么一篇文章 xff1a 关于一道C 43 43 笔试题的纠结 xff0c 学计算机的伤不起啊 当时可能是觉得 Placement new 的语法1比较新鲜 xff0c 所以印象比
  • Debian 10(buster) 更换国内软件源

    今天安装了个debian10 xff0c 发现网上包括各大镜像网站提供的源地址都有点问题 xff0c 经测试 xff0c Debian 10 xff08 buster xff09 可用的国内软件源如下 xff08 阿里云源 xff09 xf
  • 华为交换机SNMP配置

    华为交换机SNMP配置 snmp服务配置 交换机内设置snmp一般只需要启动snmp服务和配置团体名称 xff0c 然后设置下版本就可以了 全局模式下 xff0c 配置命令 1 启动snmp服务 xff1a snmp agent 2 设置团
  • qt 菜单栏创建

    h文件内容 xff1a pragma once include lt QtWidgets QMainWindow gt include 34 ui QtWidgetsApplication2 h 34 include lt QLabel g
  • 立志学习编程的第一天 2021-05-06

    一直很遗憾大学没能报计算机专业 xff08 还一直觉得自己是被耽误的程序员来着 xff09 现在且用业余时间来试试 xff0c 且拭目以待吧 xff01 学习内容 xff1a Clojure for the Brave and True 工
  • 关于Clojure的Emacs配置 2021-05-07

    首先安装lein和Emacs xff1a https leiningen org http www gnu org software emacs 安装好Emacs之后 xff0c 找到 emacs d 对windows系统 xff0c 文件
  • Clojure基础语法学习笔记(一)

    首先推荐两个目前正在学的免费学习资源 xff1a Functional programming in Clojure Clojure for the Brave and True 都是英文的 xff0c 第一个是边学边练的形式 xff0c
  • matlab interp2函数详解

    切入正题 xff1a 下面是一个测试INTERP2 xff08 xff09 函数的MATLAB代码 function INTERP2 TEST I 61 2 3 6 8 3 5 1 7 4 2 9 6 6 8 1 3 X Y 61 mesh
  • word2016转mathtype

    用word2016自带公式编辑器给师兄敲了一堆公式之后 xff0c 发现毕业论文要求用mathtype 官网给的解决措施是 xff1a 1 http www mathtype cn wenti wordgongshi zhuanhuan h
  • 虚拟机中Linux扩容硬盘空间

    在初始安装CentOS时 xff0c 只给了硬盘空间30GB xff0c 现在因为需要 xff0c 所以需要扩容 1 关闭虚拟机中的系统 xff0c 打开虚拟机的设置 xff0c 修改磁盘空间到合适的大小 xff0c 再重启系统 2 打开终
  • Vue3 - setup语法糖

    与setup函数不同的是 xff0c 在script标签中添加setup 1 变量 方法不需要 return 出来 属性和方法也不用返回 xff0c 也不用写setup函数 xff0c 也不用写export default xff0c 甚至
  • Autoware 安装(源码)过程 与 踩坑记录(Ubuntu18.04)

    目录 autoware 源码安装 安装 ROS Melodic xff1a 设置软件源 设置密钥 xff1a 安装ROS xff1a rosdep xff1a 安装rosinstall 添加ROS环境变量 配置ROS环境变量 创建工作目录
  • 读论文:Feedback Network for Image Super-Resolution

    源码 xff1a https github com Paper99 SRFBN CVPR19 1 介绍 xff08 1 xff09 基于深度学习的方法的优势主要来自其两个关键因素 xff1a 深度和跳跃链接 第一 xff0c 保留更多的上下
  • Kolla-ansible部署OpenStack Train实践

    Kolla ansible部署OpenStack Train实践 前言系统环境设置安装pip和docker安装ansible安装kolla ansible配置文件修改执行部署 登录openstack写在最后部署过程中遇到的问题总结 前言 最