kolla-ansible|kolla-ansible 部署openstack(vmware,all-in-one)

前言 使用vmware虚拟机充当服务器。
使用kolla-ansible工具部署opnestack单节点模式。
按照官方文档步骤安装。
镜像使用CentOS-7-x86_64-Minimal-1708.iso。
全程使用root权限操作。
已测试queens。
常见问题解决

  1. Cannot uninstall 'ipaddress'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.
    此类问题强制升级此安装包即可。(已发现PyYAML,ipaddress)
    pip install --ignore-installed ipaddress
  2. ImportError: cannot import name decorate
    pip install -U decorator
环境准备 启动虚拟机
配置如下:
  • 内存: 8G(建议再高点)
  • 处理器:2核(开启嵌套虚拟化后,虚拟机才能正常创建,这里不开暂时不影响部署)
  • 硬盘:100G(系统盘) + 20GB(创建cinder lvm时使用)
  • 网络:2个nat网络,1个仅主机网络(网络适配器、网络适配器2为nat,网络适配器3为仅主机模式)
kolla-ansible|kolla-ansible 部署openstack(vmware,all-in-one)
文章图片
image.png 配置网络
虚拟机启动后,网络情况如下:

kolla-ansible|kolla-ansible 部署openstack(vmware,all-in-one)
文章图片
image.png 上图中得ens33,ens34,ens35,3张网卡规划如下:
  1. ens33: nat网卡,服务器上网用,static,配置ip,可以上网。
  2. ens34: nat网卡,opnestack public网,static,不配置ip。
  3. ens35: 仅主机模式网卡,opnestack管理网,static,配置ip,无法上网。
编辑ens33 vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=static # 原dhcp DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=ens33 UUID=f0ce559b-e74a-4c9a-bb69-fc7f46f03244 DEVICE=ens33 ONBOOT=yes # 原no # 增加如下内容 GATEWAY=10.10.10.2 # vmware nat模式得网关 IPADDR=10.10.10.80 # 与vmware nat模式网关处于同一网段 NETMASK=255.255.255.0 DNS1=114.114.114.114

重启网络:systemctl restart network
重启后,可以ping通百度。
编辑ens34 注意,此网卡不配置ip。自带得配置刚好合适,若不小心修改可参考如下配置改回原样。
vi /etc/sysconfig/network-scripts/ifcfg-ens34
TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=dhcp DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=ens34 UUID=2523942d-4141-45d8-8d58-debc36e5af07 DEVICE=ens34 ONBOOT=no

重启网络:systemctl restart network
编辑ens35 vi /etc/sysconfig/network-scripts/ifcfg-ens35
TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=static # 原dhcp DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=ens35 UUID=7933698a-9938-4809-b6db-2f80983a2214 DEVICE=ens35 ONBOOT=yes # 原no # 增加如下内容 IPADDR=192.168.10.80 # vmware 仅主机模式网段 NETMASK=255.255.255.0

【kolla-ansible|kolla-ansible 部署openstack(vmware,all-in-one)】重启网络:systemctl restart network
查看网络 ip a

kolla-ansible|kolla-ansible 部署openstack(vmware,all-in-one)
文章图片
image.png
配置cinder存储
虚拟机上的20GB硬盘在本实验中为 sdb
pvcreate /dev/sdb vgcreate cinder-volumes /dev/sdb

配置加速源
yum 加速源(centos7 阿里源)
yum install -y wget mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo yum clean all yum makecache

pip 加速源(阿里源)
mkdir ~/.pip cat > ~/.pip/pip.conf << EOF [global] trusted-host=mirrors.aliyun.com index-url=https://mirrors.aliyun.com/pypi/simple/ EOF

docker 加速源(阿里源)
mkdir /etc/docker cat > /etc/docker/daemon.json << EOF { "registry-mirrors": ["https://jzngeu7d.mirror.aliyuncs.com"] } EOF

配置iptables
yum install iptables -y yum install iptables-services -y systemctl start iptables.service systemctl enable iptables.serviceiptables -F iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT service iptables save systemctl restart iptables.service

至此基础环境准备完成。
kolla-ansible 部署 参考文档: https://docs.openstack.org/kolla-ansible/latest/
安装软件环境
yum install -y epel-release yum install -y python-pip pip install -U pip yum install -y python-devel libffi-devel gcc openssl-devel libselinux-python yum install -y ansible pip install -U ansible

编辑ansible配置文件,在defaults中添加3个属性
vim /etc/ansible/ansible.cfg
[defaults] host_key_checking=False pipelining=True forks=100

安装 kolla-ansible
pip install kolla-ansible==7.0.0 cp -r /usr/share/kolla-ansible/etc_examples/kolla /etc/ cp /usr/share/kolla-ansible/ansible/inventory/* /opt/

配置主要文件
这里有4个文件,简单介绍:
  • /etc/kolla/globals.yml 决定你要装什么组件和openstack基础配置
  • /etc/kolla/passwords.yml 可以定义openstack各组件得密码
  • /opt/all-in-one 决定openstack组件安装得物理位置
  • /opt/multinode 决定openstack组件安装得物理位置
开始配置:
  1. passwords.yml。这里可使用命令生成随机码作为密码使用
    kolla-genpwd
  2. globals.yml。
    此文件包含两部分内容:openstack基础配置,选择安装的openstack组件。
    vim /etc/kolla/globals.yml
kolla_base_distro: "centos"# 基础容器镜像版本 kolla_install_type: "source"# 源码安装方式安装组件 openstack_release: "queens"# openstack版本,选择你需要的 network_interface: "ens35"# 管理网使用得网卡 neutron_external_interface: "ens34"# public网使用得网卡 kolla_internal_vip_address: "192.168.10.81"# ha或者keepalived代理的服务内部地址。 kolla_external_vip_address: "10.10.10.81"# ha或者keepalived代理的服务外部地址。 enable_cinder: "yes" enable_cinder_backend_lvm: "yes" cinder_volume_group: "cinder-volumes" enable_horizon: "yes"

  1. all-in-one
    不修改
  2. multinode
    不修改
开始部署
kolla-genpwd kolla-ansible -i /opt/all-in-one bootstrap-servers kolla-ansible -i /opt/all-in-one prechecks kolla-ansible -i /opt/all-in-one deploy

操作相关解释:
  • bootstrap-servers 步骤:安装基础依赖。
  • prechecks 步骤:检查基础依赖、端口等。
  • deploy 步骤:生成配置文件,下载镜像,启动容器等具有改动操作的一系列动作。
基本使用
安装命令行工具:
pip install python-openstackclient python-glanceclient python-neutronclient

确认部署(会生成管理员密码等):
kolla-ansible post-deploy

官方脚本,创建使用示例,可不执行:
. /usr/share/kolla-ansible/init-runonce

执行命令
  1. 导入环境变量
. /etc/kolla/admin-openrc.sh

  1. 查看服务状态
openstack service list --long

访问horizon 使用chrome浏览器访问ha代理的外部地址。
例如本实验浏览器输入 10.10.10.81 即可访问。
管理员用户名密码在 cat /etc/kolla/admin-openrc.sh

kolla-ansible|kolla-ansible 部署openstack(vmware,all-in-one)
文章图片
image.png
日志在哪看? /var/lib/docker/volumes/kolla_logs/_data/
每个节点在这个目录下存放了所有组件的日志,规划的很清晰。
但是这个路径是不是有点长,创建一个link吧。
创建link:
ln -s /var/lib/docker/volumes/kolla_logs/_data/ /var/log/kolla

现在可以直接到 /var/log/kolla目录下查看日志了。

    推荐阅读