通过OpenStack-Ansible
安装All-in-one (AIO) 用于:
尽管这种方式不适合在生产部署,但是比较适合实验开发环境。
最小配置:
推荐的服务器配置:
bootstrap_host_data_disk_device
参数。可以在虚机中进行AIO安装进行,但是如果你的虚机不支持嵌套虚拟化的话,性能将会很差。如果是生产环境,推荐使每个角色进行多节点部署。
下面是创建AIO的步骤,如果要自定义构建,则需要配置好第一步:
当在一个新服务器上创建AIO版本的时候,建议升级系统包到最新版本,并且重启到新内核。
注:
/etc/sysconfig/selinux
应该被置为SELINUX=disabled
。CentOS/RHEL中OpenStack-Ansible
目前不支持SELinux。## Ubuntu / Debian
# apt-get update
# apt-get dist-upgrade
# reboot
## CentOS
# dnf upgrade
# dnf install git-core
# systemctl stop firewalld
# systemctl mask firewalld
# reboot
复制OpenStack-Ansible
repo并且切换到gen种方式不适合在生产部署,但是比较适合实验开发环境。
最小配置:
推荐的服务器配置:
bootstrap_host_data_disk_device
参数。可以在虚机中进行AIO安装进行,但是如果你的虚机不支持嵌套虚拟化的话,性能将会很差。如果是生产环境,推荐使每个角色进行多节点部署。
下面是创建AIO的步骤,如果要自定义构建,则需要配置好第一步:
当在一个新服务器上创建AIO版本的时候,建议升级系统包到最新版本,并且重启到新内核。
注:
/etc/sysconfig/selinux
应该被置为SELINUX=disabled
。CentOS/RHEL中OpenStack-Ansible
目前不支持SELinux。## Ubuntu / Debian
# apt-get update
# apt-get dist-upgrade
# reboot
## CentOS
# dnf upgrade
# dnf install git-core
# systemctl stop firewalld
# systemctl mask firewalld
# reboot
复制OpenStack-Ansible
repo并且切换到repo的根目录。
# git clone https://opendev.org/openstack/openstack-ansible /opt/openstack-ansible
# cd /opt/openstack-ansible
下一步切换到要部署的适用的branch/tag中。从一个分支的head进行部署可能会导致安装有问题。如果是用于测试,最好先使用最新的标记的版本。
# # 列出所有目前的标签.
# git tag -l
## 找出稳定分支和最新标签
# git chec kout master
# git describe --abbrev=0 --tags
# # 取回最新标签
# git checkout master
注:Wallaby版本只和Debian 10 (buster), Ubuntu 18.04 (Bionic Beaver), Ubuntu 20.04 (Focal Fossa) 还有CentOS 8兼容。目前无法在CentOS Stream上安装.许多关键依赖项来自于EPEL资源库,并且不能用于CentOS Stream主机. 注意一下在CentOS 8上部署的生命周期问题。
下一步就是使用ansible启动脚本和roles来搭建环境。
运行以下ansible启动脚本和所需的roles:
# scripts/bootstrap-ansible.sh
注:你在使用ANSIBLE脚本构建PYTHON扩展功能的时候(例如pycrypto),可能会遇到以下报错:
configure: error: cannot run C compiled programs.
原因可能在于是由于与/tmp
关联的文件系统使用了noexec挂载标志,可以通过运行以下命令来检查该标志:
# mount | grep $(df /tmp | tail -n +2 | awk ‘{print $1}‘) | grep noexec
你也可以指定一个没有此挂载选项的备用路径:
# TMPDIR=/var/tmp scripts/bootstrap-ansible.sh
为了使所有服务启动,主机必须要配置适当的磁盘分区,安装包,网络配置和OpenStack开发配置。
默认AIO启动脚本会以一些默认的配置值去部署一些列的OpenStack服务,以满足一些环境要求和构建开发测试系统。可以查看bootstrap-host role defaults默认文件来了解一些变量的配置。开发人员可以选择更改引导方式。当你希望AIO使用第二块磁盘或者使用相同roles去启动多节点的开发环境时,这些信息将很有用。
启动脚本已经将环境变量BOOTSTRAP_OPTS
作为一个附加选项传递给启动进程中。比如,如果你希望将启动脚本在第二块盘(/dev/sdb
)上进行重分区,可以执行以下命令,这也将会导致设备上的数据被擦除:
# export BOOTSTRAP_OPTS="bootstrap_host_data_disk_device=sdb"
其他的选项都可以通过空格简单的连接起来执行,比如:
# export BOOTSTRAP_OPTS="bootstrap_host_data_disk_device=sdb"
# export BOOTSTRAP_OPTS="${BOOTSTRAP_OPTS} bootstrap_host_data_disk_fs_type=xfs"
如果你安装时没有网络连接或者没有默认路由,你需要手动指定一个接口或者出向的连接。
# export BOOTSTRAP_OPTS="bootstrap_host_public_interface=eth1"
对于默认的AIO方案,可以通过执行以下命令进行配置:
# scripts/bootstrap-aio.sh
在合适的bootstrap-aio
默认服务之上添加OpenStack服务,可以复制以.aio
为扩展名的conf.d
文件到/etc/openstack_deploy
中,然后将扩展名改为.yml
文件。例如要启动openstack的Telemetry服务:
# cd /opt/openstack-ansible/
# cp etc/openstack_deploy/conf.d/{aodh,gnocchi,ceilometer}.yml.aio /etc/openstack_deploy/conf.d/
# for f in $(ls -1 /etc/openstack_deploy/conf.d/*.aio); do mv -v ${f} ${f%.*}; done
可以在运行启动脚本和运行前更改这些SCENARIO环境变量。关键词aio
会确保一系列基础OPENSTACK配置会被部署(cinder块存储, glance镜像服务, horizon面板, neutron网络服务, nova计算服务)。关键词lxc
和nspawn
能够被用于设置容器后端,而关键词metal
会在没有容器的情况下部署所有的服务。为了部署其他的服务,请将conf.d
文件的名字(去掉.yml.aio
扩展名)添加到SCENARIO环境变量中。每个关键字都应该用下划线限定,以下命令会实施一个带有barbican(key管理服务), cinder, glance, horizon, neutron, 和nova的AIO。它将会设置cinder存储后端为ceph
并且会使用LXC作为容器后端。
# export SCENARIO=‘aio_lxc_barbican_ceph‘
# scripts/bootstrap-aio.sh
注:如果metal
和aio
关键词在一起使用的话,horizon不会被部署,因为haproxy和horizon的监听端口是冲突的。
如果要在默认配置基础上添加其他更适用的global overrides,需要编辑/etc/openstack_deploy/user_variables.yml
的内容。为了了解可以替换roles,playbook和组变量中列出的默认值的各种方法,请参阅override默认配置。
如果想用个性化配置而不是使用AIO引导程序,详细说明请参阅《 Deployment Guide 》。
最后,运行Playbook
# cd /opt/openstack-ansible/playbooks
# openstack-ansible setup-hosts.yml
# openstack-ansible setup-infrastructure.yml
# openstack-ansible setup-openstack.yml
这个安装过程可能需要一些时间,下面是正常情况下的时间消耗:
/etc/openstack_deploy/user_variables.yml
中进行各种设置更改,并且只需要运行这一个playbook。# cd /opt/openstack-ansible/playbooks
# openstack-ansible os-keystone-install.yml
由于AIO包括MariaDB/Galera的所有三个集群成员,因此在重新引导主机后必须重新初始化集群。
命令:
# cd /opt/openstack-ansible/playbooks
# openstack-ansible -e galera_ignore_cluster_state=true galera-install.yml
如果数据库集群启动失败,请查看Galera Cluster Recovery手册。
有时候需要删除所有容器重建AIO。但是一般无法完整地摧毁AIO。可以执行以下命令:
# # 移动到playbooks目录.
# cd /opt/openstack-ansible/playbooks
# # 摧毁所有容器
# openstack-ansible lxc-containers-destroy.yml
# # 停止所有本地不在容器里的服务
# for i in $(ls /etc/init | grep -e "nova\|swift\|neutron\|cinder" | awk -F‘.‘ ‘{print $1}‘); do service $i stop; done
# # 卸载核心服务.
# for i in $(pip freeze | grep -e "nova\|neutron\|keystone\|swift\|cinder"); do pip uninstall -y $i; done
# # 删除其余目录
# rm -rf /openstack /etc/{neutron,nova,swift,cinder} /var/log/{neutron,nova,swift,cinder}
# # 删除PIP配置文件
# rm -rf /root/.pip
# # 移除APT包管理
# rm /etc/apt/apt.conf.d/00apt-cacher-proxy
删除AIO最好的方式就是重新安装系统,所以最好在虚拟机中或者云环境中创建。
这里有个基础图示去尝试展示AIO部署。
此图未按比例绘制,甚至没有100%准确,该图仅出于提供信息的目的而构建,仅供参考。
------->[ ETH0 == Public Network ]
|
V [ * ] Socket Connections
[ HOST MACHINE ] [ <>v^ ] Network Connections
* ^ *
| | |-------------------------------------------------------
| | |
| |---------------->[ HAProxy ] |
| ^ |
| | |
| V |
| (BR-Interfaces)<------ |
| ^ * | |
*-[ LXC ]*--*----------------------|-----|------|----| |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | V * | |
| * | | [ Galera x3 ] |
| [ Memcached ]<------------| | | |
*-------*[ Rsyslog ]<--------------|--| | * |
| [ Repos Server x3 ]<------| ---|-->[ RabbitMQ x3 ] |
| [ Horizon x2 ]<-----------| | | |
| [ Nova api ec2 ]<---------|--| | |
| [ Nova api os ]<----------|->| | |
| [ Nova console ]<---------| | | |
| [ Nova Cert ]<------------|->| | |
| [ Cinder api ]<-----------|->| | |
| [ Glance api ]<-----------|->| | |
| [ Heat apis ]<------------|->| | [ Loop back devices ]*-*
| [ Heat engine ]<----------|->| | \ \ |
| ------>[ Nova api metadata ] | | | { LVM } { XFS x3 } |
| | [ Nova conductor ]<-------| | | * * |
| |----->[ Nova scheduler ]--------|->| | | | |
| | [ Keystone x3 ]<----------|->| | | | |
| | |--->[ Neutron agents ]*-------|--|---------------------------*
| | | [ Neutron server ]<-------|->| | | |
| | | |->[ Swift proxy ]<----------- | | | |
*-|-|-|-*[ Cinder volume ]*----------------------* | |
| | | | | | |
| | | ----------------------------------------- | |
| | ----------------------------------------- | | |
| | -------------------------| | | | |
| | | | | | |
| | V | | * |
---->[ Compute ]*[ Neutron linuxbridge ]<---| |->[ Swift storage ]-
原文:https://www.cnblogs.com/felix-zong/p/14646290.html