OpenStack Ansible部署OpenStack

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。
img

部署主机

在部署主机安装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计算服务,以及网络和日志代理。
img
对于生产环境需要都的存储主机来运行Cinder调度器和Cinder卷服务,以提供存储服务。

0x02 OpenStack Ansible部署概览

参考文档:
https://docs.openstack.org/openstack-ansible/latest/

https://docs.openstack.org/openstack-ansible/rocky/

涉及以下两种主机

  • 部署主机,运行Ansible playbooks
  • 目标主机,Ansible安装OpenStack服务和基础架构组件
    1.一般安装工作流程
    img
    2.安装要求与建议

0x03 部署

准备部署节点

部署节点(deployment node)上运行着Ansible OpenStack工具,它将在目标节点(target node)上编排OpenStack云节点。这里部署节点安装Ubuntu 16.04.2 server版 64位操作系统。
要在部署节点上运行OpenStack Ansible,需执行以下步骤:

img

参考链接
https://docs.openstack.org/project-deploy-guide/openstack-ansible/rocky/deploymenthost.html

1.安装必要的依赖包

1
2
3
4
5
sudo 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
2
cd /opt//opt/openstack-ansible
./scripts/bootstrap-ansible.sh

6.创建SSH密钥
在部署节点上生成SSH密钥

1
2


7.安装完成
需要等待比较久的时间,中间因为python版本和pip的版本问题重新执行了几次bootstrap-ansible.sh脚本。
img

准备目标节点

目标节点包含:控制节点和计算节点等。
控制节点的部署准备,需要安装所有API服务,以及公共的和基础架构服务。下面会介绍用于部署控制节点的所有 OpenStack Ansible剧本(playbook)。
控制节点是OpenStack Ansible的目标主机(target host)中的一部分。
img

参考链接
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之前,请修改这些文件以定义目标环境。配置任务包括:

img

参考链接
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

img

安装过程需要运行三个主要的剧本:

  • 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
2
cd /opt/openstack-ansible/playbooks
openstack-ansible setup-infrastructure.yml --syntax-check

4.重新检查所有缩进是否正确。

运行剧本安装OpenStack

1.切换到/opt/openstack-ansible/playbooks目录。

2.运行主机设置手册:

1
2
cd /opt/openstack-ansible/playbooks
openstack-ansible setup-hosts.yml

验证OpenStack操作

参考链接
https://docs.openstack.org/project-deploy-guide/openstack-ansible/rocky/verify-operation.html

img

验证

验证仪表板

over

---本文结束感谢您的阅读---
北岸冷若冰霜 wechat
欢迎使用微信扫一扫上面的二维码,订阅我的公众号!
坚持原创分享,点击下方打赏,您的支持将鼓励我继续创作!