OpenStack Ansible(OSA)时一个正式的OpenStack大帐篷项目。聚焦于提供多个角色(role)和playbook,用于部署可扩展的、可立即投入生产的OpenStack环境。
持续更新中。
项目地址:https://github.com/openstack/openstack-ansible
0x00 关于OSA
OSA项目的一个独特功能是使用容器来隔离和管理OpenStack服务。
OSA在LXC容器中安装OpenStack服务,为每个服务提供隔离环境。
LXC是一个操作系统级容器,它包含一个完整的操作系统环境,包括单独的文件系统、网络堆栈,并使用cgroups进行资源隔离。
LXC是Linux中非常流行的容器实现,允许隔离包括文件系统在内的资源,以运行多个应用程序和一组层序,并且不会相互干扰。
0x01 OpenStack Ansible部署架构
OSA部署过程开始于一台部署主机,我们记为:deployment host。
部署主机
在部署主机安装Ansible,运行OSA playbook,并负责编排目标主机上的OpenStack安装。
目标主机
Ansible目标主机 target host 是用来运行OpenStack服务的主机。目标主机上可以安装Ubuntu 14.04 LTS操作系统(或者Ubuntu 16.04.2,Ubuntu 18.04.2)。后面我会使用Ubuntu 16.04.2 server版64位进行部署过程的详解。在目标主机需要配置基于SSH密钥的身份验证,以允许从部署主机上登录。
OSA架构将目标主机分为以下几组:
- 基础架构个控制平面主机
- 日志主机
- 计算主机
- (可选的)存储主机
基础架构和控制平面主机
建议至少使用三台基础架构和控制平面主机提供冗余服务。基础架构主机安装一下常用服务: - 数据库服务器:装有MySQL Galera集群
- 消息服务器:RabbitMQ
- Memcached
- 代码仓库服务器
- OpenStack控制平面服务
- 认证服务Keystone
- 镜像服务Glance
- 计算管理服务Nova
- 网络服务Neutron
- 其他API服务,如Heat,Ceilmeter等。
日志主机
日志服务器使用Logstash和Elasticsearch托管一个集中式日志服务器(如rsyslog)和一个日志分析器。可以在计算主机上运行Nova计算服务,以及网络和日志代理。
对于生产环境需要都的存储主机来运行Cinder调度器和Cinder卷服务,以提供存储服务。
0x02 OpenStack Ansible部署概览
参考文档:
https://docs.openstack.org/openstack-ansible/latest/
https://docs.openstack.org/openstack-ansible/rocky/
涉及以下两种主机
- 部署主机,运行Ansible playbooks
- 目标主机,Ansible安装OpenStack服务和基础架构组件
1.一般安装工作流程
2.安装要求与建议
0x03 部署
准备部署节点
部署节点(deployment node)上运行着Ansible OpenStack工具,它将在目标节点(target node)上编排OpenStack云节点。这里部署节点安装Ubuntu 16.04.2 server版 64位操作系统。
要在部署节点上运行OpenStack Ansible,需执行以下步骤:
参考链接
https://docs.openstack.org/project-deploy-guide/openstack-ansible/rocky/deploymenthost.html
1.安装必要的依赖包1
2
3
4
5sudo apt-get install aptitude build-essential git ntp ntpdate openssh-server python-dev -y
注意先要检查系统python版本而后安装更新pip版本
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py
2.配置NTP同步网络时间
3.配置网络
使得目标主机可以从部署主机上访问到。
4.克隆OpenStack Ansible代码仓库1
git clone -b TAG https://github.com/openstack/openstack-ansible.git /opt/openstack-ansible
或者1
git clone -b 18.1.9 https://git.openstack.org/openstack/openstack-ansible / opt / openstack-ansible
5.运行OpenStack Ansible引导脚本
1 | cd /opt//opt/openstack-ansible |
6.创建SSH密钥
在部署节点上生成SSH密钥1
2
7.安装完成
需要等待比较久的时间,中间因为python版本和pip的版本问题重新执行了几次bootstrap-ansible.sh脚本。
准备目标节点
目标节点包含:控制节点和计算节点等。
控制节点的部署准备,需要安装所有API服务,以及公共的和基础架构服务。下面会介绍用于部署控制节点的所有 OpenStack Ansible剧本(playbook)。
控制节点是OpenStack Ansible的目标主机(target host)中的一部分。
参考链接
https://docs.openstack.org/project-deploy-guide/openstack-ansible/rocky/targethosts.html
系统配置
1.更新包源列表1
apt-get update
2.升级系统包和内核
1
apt-get dist-upgrade
3.重新启动主机
1
reboot
4.安装软件
1
apt-get install bridge-utils debootstrap ifenslave ifenslave-2.6 lsof lvm2 chrony openssh-server sudo tcpdump vlan python
5.配置目标节点与NTP服务器同步
SSH配置
ansible使用SSH和公钥身份验证来连接部署主机和目标主机。要在Ansible操作期间减少用户交互,请不要包含密钥对的密码。
接下来,从OpenStack Ansible主机向目标节点部署ssh密钥。可以通过将部署主机的公钥添加到每个目标主机上的authorized_keys文件来实现。
网络配置
参考链接:
https://docs.openstack.org/project-deploy-guide/openstack-ansible/rocky/deploymenthost.html
目标节点的网络设置必须为以下服务提供通信路径
- 管理网络
- 存储管理
- 租户网络
OpenStack Ansible使用网桥(bridge)在目标节点上提供上述通信路径。租户网络既可以实现为基于VLAN的网段,也可以使用隧道网络 (如VXLAN)。可通过从单个网卡或多个绑定的网卡上创建子接口来 提供到网桥的物理链接。管理网络由br-mgmt网桥提供,存储网络由brstorage网桥提供,租户网络由br-vlan和br-vxlan网桥提供。
尽管多网卡和绑定接口不是必需的,但我们建议在生产环境中采用这种配置。
配置部署
Ansible引用一些包含强制和可选配置指令的文件。在运行Ansible playbooks之前,请修改这些文件以定义目标环境。配置任务包括:
参考链接
https://docs.openstack.org/project-deploy-guide/openstack-ansible/rocky/configure.html
- 目标主机网络以定义网桥接口和网络。
- 要安装软件的目标主机列表。
- OpenStack Networking(neutron)的虚拟和物理网络关系。
- 所有服务的密码。
初始化环境配置
OpenStack-Ansible(OSA)依赖于用于为Ansible构建库存的各种文件。在部署主机上执行以下配置。
1.将/opt/openstack-ansible/etc/openstack_deploy目录的内容复制 到该 /etc/openstack_deploy目录。
2.切换到/etc/openstack_deploy目录。
3.将openstack_user_config.yml.example文件复制到 /etc/openstack_deploy/openstack_user_config.yml。
4.查看该openstack_user_config.yml文件并更改OpenStack环境的部署。
5.查看该user_variables.yml文件以配置全局和特定于角色的部署选项。该文件包含一些示例变量和注释,但您可以在每个角色的特定文档中获取完整的变量列表
安装附加服务
高级服务配置
配置服务凭证
运行OpenStack-Ansible playbooks
参考链接
https://docs.openstack.org/project-deploy-guide/openstack-ansible/rocky/run-playbooks.html
安装过程需要运行三个主要的剧本:
- The setup-hosts.yml Ansible foundation playbook prepares the target hosts for infrastructure and OpenStack services, builds and restarts containers on target hosts, and installs common components into containers on target hosts.
- The setup-infrastructure.yml Ansible infrastructure playbook installs infrastructure services: Memcached, the repository server, Galera, RabbitMQ, and rsyslog.
- The setup-openstack.yml OpenStack playbook installs OpenStack services, including Identity (keystone), Image (glance), Block Storage (cinder), Compute (nova), Networking (neutron), etc.
检查配置文件的完整性
在运行任何playbook之前,请检查配置文件的完整性。
1.确保/etc/openstack_deploy目录中编辑的所有文件都符合 Ansible YAML。
2.检查YAML文件的完整性。
3.切换到/opt/openstack-ansible/playbooks目录,然后运行以下命令:
1 | cd /opt/openstack-ansible/playbooks |
4.重新检查所有缩进是否正确。
运行剧本安装OpenStack
1.切换到/opt/openstack-ansible/playbooks目录。
2.运行主机设置手册:1
2cd /opt/openstack-ansible/playbooks
openstack-ansible setup-hosts.yml
验证OpenStack操作
参考链接
https://docs.openstack.org/project-deploy-guide/openstack-ansible/rocky/verify-operation.html