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
setenforce 0
vi /etc/selinux/config(修改为disabled)
安装pip和docker
1、pip是python的包管理器,ansible是基于python开发的,因此需要安装pip,安装相应的python包,默认系统都不带pip。
wget https://bootstrap.pypa.io/pip/2.7/get-pip.py --no-check-certificate
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
yum -y install docker-ce
systemctl enable docker
systemctl start 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是必须部署。
yum install epel-release -y
yum install ansible
安装kolla-ansible
pip install pbr
pip install kolla-ansible --ignore-installed PyYAML
mkdir -p /etc/kolla
chown $USER:$USER /etc/kolla
cp /usr/share/kolla-ansible/ansible/inventory/* .
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_release: "train"
openstack_tag_suffix: ""
kolla_internal_vip_address: "XXXX"
network_interface: "eth0"
neutron_external_interface: "eth1"
neutron_plugin_agent: "linuxbridge"
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]
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
kolla-ansible -i ./multinode pull
kolla-ansible -i ./multinode deploy
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(使用前将#替换为@)