目录
环境
MacOS + Parallels Desktop + CentOS 7
CentOS换源
备份原文件
1 | mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup |
下载阿里云镜像源文件,并替换。
1 | wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo |
清除缓存
1 | yum clean all |
生成缓存
1 | yum makecache |
pip换源
1 | mkdir .pip |
pip.conf
1 | [global] |
网络配置
Network 1(Shared)
子网:172.88.0.0/24
用途:用于虚拟机连接外网。Network 2(Host Only)
子网:10.88.88.0/24
用途:管理网络,用作OpenStack内部网络。Network 3(Host Only)
子网:10.88.188.0/24
用途:外部网络,用作OpenStack Floating IP使用的外网网卡。
nmcli
nmcli
nmcli是redhat7或者centos7之后的命令,该命令可以完成网卡上所有的配置工作,并且可以写入配置文件,永久生效。
查看所有设备。
1 | nmcli d |
设置网卡一。
1 | nmcli c modify eth0 ipv4.address 172.88.0.3/24 |
设置网卡二,静态IP。
1 | nmcli c modify eth1 ipv4.address 10.88.88.3/24 |
设置网卡三,网卡三不需要设置IP。
1 | nmcli c modify eth2 ipv4.method disabled |
重启网络,激活配置。
1 | systemctl restart network |
安装依赖
安装pip
1 | yum install epel-release |
安装python等依赖
1 | yum install python-devel libffi-devel gcc openssl-devel libselinux-python |
安装ansible
1 | yum install ansible |
1 | pip install ansible == 2.4 |
配置ansible。
1 | # /etc/ansible/ansible.cfg |
安装kolla-ansible
设虚环境
1 | pip install virtualenv |
源码安装
源码安装。
1 | git clone https://github.com/openstack/kolla-ansible |
添加别名
1 | # /root/.zshrc |
安装完成后,使用pip命令查看一下kolla-ansible的版本
1 | kolla-ansible-pip list | grep kolla |
复制globals.yml和passwords.yml到/etc/kolla。
1 | cp -r /root/kolla-ansible/etc/kolla /etc/ |
复制all-in-one和multinode到当前目录。
1 | cp /root/kolla-ansible/ansible/inventory/* . |
部署前配置
节点配置
All-In-One
CPU:2核
Memory:4G
OS:CentOS 7
网卡一(eth0):Network 1 IP:DHCP
网卡二(eth1):Network 2 IP:10.88.88.10/2
网卡三(eth2):Network 3 IP:无IP
1 | eth1|10.0.0.10 |
Multinode
1 | ------------+---------------------------+---------------------------+------------ |
节点配置文件
All-In-One
因为是部署all-in-one,所以all-in-one配置文件不需要做任何修改。
Multinode
1 | [control] |
密码
使用命令生成OpenStack组件的密码,文件位于/etc/kolla/passwords.yml。
1 | kolla-genpwd |
在/etc/kolla/passwords.yml找到keystone_admin_password,将它修改成你常用的密码。
1 | keystone_admin_password: 199412 |
OpenStack配置文件
主要配置位于/etc/kolla/globals.yml。
我的配置文件。
1 | # /etc/kolla/global.yaml |
字段解释。
镜像相关
kolla_base_distro
镜像系统版本,建议centos或者ubuntu。
kolla_install_type
可选binary:二进制镜像。
可选source:源代码镜像。
openstack_release
OpenStack的版本。
网络相关
network_interface
OpenStack管理网络的网卡。
neutron_external_interface
OpenStack外部网络使用的网卡,不能有IP。
kolla_internal_vip_address
高可用的虚拟的IP地址,为管理网络提供的一个Floating IP,和管理网络同网段且没有被占用。
nova_compute_virt_type
由于在虚拟机中部署OpenStack,不支持KVM,所以这里要改成qemu。
部署
All-In-One
部署引导程序
1 | source /opt/kolla-ansible/virtualenv/bin/activate |
部署检查
1 | source /opt/kolla-ansible/virtualenv/bin/activate |
真正部署
部署时需要从docker镜像仓库中拉取镜像,此步骤比较耗时,可以先将镜像拉至本地。
1 | source /opt/kolla-ansible/virtualenv/bin/activate |
部署
1 | source /opt/kolla-ansible/virtualenv/bin/activate |
销毁
1 | source /opt/kolla-ansible/virtualenv/bin/activate |
Multinode
Docker Registry
这里先生成一个Docker的本地仓库。首先先用kolla-ansible命令将Openstack的相关镜像拉到本地。
1 | source /opt/kolla-ansible/virtualenv/bin/activate |
启动Docker Registry容器。
1 | docker run -d \ |
使用curl访问本地镜像仓库。
1 | curl -X GET http://10.88.88.10:4000/v2/_catalog | python -m json.tool |
把拉取到的镜像上传到本地仓库。
1 |
|
使用curl访问本地镜像仓库。
1 | curl -X GET http://10.88.88.10:4000/v2/_catalog | python -m json.tool |
上传成功后,编辑/etc/kolla/globals.yml文件,添加。
1 | docker_registry = 10.88.88.10:4000 |
执行部署引导程序。
1 | source /opt/kolla-ansible/virtualenv/bin/activate |
查看每个节点上的/etc/systemd/system/docker.service.d/kolla.conf文件应该和下面一致。
1 | [Service] |
将镜像仓库中的镜像拉取到每一个节点上。
1 | source /opt/kolla-ansible/virtualenv/bin/activate |
查看镜像列表。
1 | # 网络节点 |
部署引导程序
在创建Docker镜像仓库时已经完成,可以略过。
1 | source /opt/kolla-ansible/virtualenv/bin/activate |
部署检查
1 | source /opt/kolla-ansible/virtualenv/bin/activate |
真正部署
在创建Docker镜像仓库时已经完成,可以略过。
1 | source /opt/kolla-ansible/virtualenv/bin/activate |
部署
1 | source /opt/kolla-ansible/virtualenv/bin/activate |
销毁
1 | source /opt/kolla-ansible/virtualenv/bin/activate |
使用OpenStack
安装OpenStack命令行包。
1 | pip install python-openstackclient python-glanceclient python-neutronclient |
生成admin-openrc文件,生成后的admin-openrc.sh位于/ect/kolla/下。
1 | source /opt/kolla-ansible/virtualenv/bin/activate |
1 | source /etc/kolla/admin-openrc.sh |
kolla-ansible中还带有一次初始化的工具。
1 | . /root/kolla-ansible/tools/init-runonce |
创建虚拟机。
1 | openstack server create --image cirros --flavor m1.tiny --key-name mykey --network demo-net demo1 |
出错整理
bootstrap-servers出错
1 | TASK [baremetal : Install apt packages] *********************************************************************************************************************** |
pull出错
pull超时
1 | TASK [placement : Pulling placement images] ******************************************************************************************************************* |
拉取镜像超时,可以配置docker镜像加速器。
镜像找不到
1 | TASK [placement : Pulling placement images] ******************************************************************************************************************* |
在Rocky版本中placement-api是nova组件的一部分,kolla-ansible版本过高导致的。
原因
1 | # /usr/share/kolla-ansible/ansible/roles/placement/defaults/main.yml |
deploy出错
1 | TASK [mariadb : Writing hostname of host with existing cluster files to temp file] **************************************************************************** |
原因
1 | Since Ansible 2.5, the use of jinja tests as filters has been deprecated. |
方案一:
安装ansbile时,需要指定版本2.4.0。
方案二:
修改
1 | # /opt/kolla-ansible/virtualenv/share/kolla-ansible/ansible/roles/mariadb/tasks/lookup_cluster.yml |
1 | # /opt/kolla-ansible/virtualenv/share/kolla-ansible/ansible/roles/mariadb/tasks/lookup_cluster.yml |
mariadb启动错误
1 | InnoDB: Cannot allocate memory for the buffer pool |