kolla部署all-in-one环境(N版)
简单介绍:
Kolla 是 OpenStack 大帐篷模式下的官方子项目之一,其主要目标是通过利用 Docker 容器以及 Ansible 自动化部署工具,来为 OpenStack 云平台提 供一个简单而灵活的部署和管理的方式。它允许完全的自主化,使得用户可以根据自身的特殊需求自行修改注: 社区从ocata版本开始将kolla代码拆分成kolla和kolla-ansibe两个仓库以明细分工
kolla用来build OpenStack镜像
kolla-ansibe用来部署任一 OpenStack 服务的配置项。
宿主机配置建议
- 2 个或以上网卡
- 至少 8GB 内存
- 至少 40GB 磁盘空间
这里需要解释的是,在 OpenStack 中,宿主机上不同网卡的作用一般可归为如下几种:
- eth0 默认的第一块网卡,可作为管理网络使用,即登录管理本宿主机,或不同宿主机间通信。
- eth1 可作为数据网络(VLAN/VXLAN)使用,不同虚拟机之间进行通信时(东西向流量),经过此物理网卡。
- eth2 可作为外部网络使用,即当虚拟机需要与外网进行通信时(南北向流量),经过此物理网卡。
- eth3 可作为存储网络使用,即当虚拟机与后端存储设备进行交互时,经过此物理网卡。
当然,理论上如果只使用一块网卡的话也是可以的,只是将网络流量这样细分开来后,可分担物理网卡的压力,也便于后期的问题定位。 根据 Kolla 的配置项解释,此处我们暂时使用两块网卡:
- eth0 192.168.0.10 作为管理网络 + 数据网络 + 存储网络,用于 OpenStack 集群内部通信
- eth1 172.16.0.10 作为外部网络,用于虚拟机与外部通信
安装
关闭selinux,firewald
centos7.3
初始配置
yum install -y epel-release
yum upgrade -y
yum install -y python-pip
pip install –U pip
yum install -y ansible
安装依赖
yum install -y python-devel libffi-devel openssl-devel gcc git -y
hosts文件
[root@openstack tools]# systemctl stop firewalld
[root@openstack tools]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.64.8.176 kolla.openstack.com openstack.com openstack
安装docker
curl -sSL https://get.docker.io | bash
查看版本(查看)
[root@kolla ~]# docker --version
Docker version 17.06.0-ce, build 02c1d87
修改MountFlags选项
mkdir -p /etc/systemd/system/docker.service.d
tee /etc/systemd/system/docker.service.d/kolla.conf <<-'EOF'
[Service]
MountFlags=shared
EOF
开启docker服务
systemctl daemon-reload&&systemctl enable docker &&systemctl start docker
下载kolla代码
[root@kolla ~]#git clone https://github.com/openstack/kolla.git
[root@kolla ~]# cd kolla/
查看远程分支
[root@kolla kolla]# git branch -a
* (detached from origin/stable/newton)
master
remotes/origin/HEAD -> origin/master
remotes/origin/master
remotes/origin/stable/newton
remotes/origin/stable/ocata
# 切换至 stable/liberty 分支
[root@kolla kolla]#git checkout remotes/origin/stable/newton
安装依赖(下面步骤在 Kolla 项目的目录操作)
[root@kolla kolla]#pip install -r requirements.txt -r test-requirements.txt
[root@kolla kolla]#pip install tox
生成配置文件
[root@kolla kolla]#tox -e genconfig
[root@kolla kolla]#cp -rv etc/kolla /etc/
[root@kolla kolla]# ls /etc/kolla/
globals.yml kolla-build.conf passwords.yml
生成镜像(这个步骤很重要,docker镜像build不出来后面部署也会失败,这里也可以不用加-p镜像全下载)
[root@kolla kolla]#./tools/build.py -p default
参数中的 -p default 是指定了只 build 主要的 image, 包括 : mariadb, rabbitmq, cinder, ceilometer, glance, heat, horizon, keystone, neutron, nova, swift 等 . 这些可以只生成的 kolla-build.conf 里找到。
镜像超级多,这只是上面的基础镜像,如果不加-p直接build会生产非常多的镜像
编辑globals.yml
[root@kolla kolla]# vi /etc/kolla/globals.yml
kolla_internal_vip_address: "10.64.8.177" //haproxy的虚拟IP,需要用户可以直接通信
neutron_external_interface: "ens224" //按照openstack文档配置成vm的网卡
network_interface: "ens192" //这个API服务将默认,vxlan流量也进过这个网卡,all-in-one这里就无所谓了,我就随便写了一个
openstack_release: "3.0.4" //docker镜像tag版本,看你的是多少这里就该多少
kolla_install_type: "binary" //docker pull下来的镜像类型分为binary或source,docker ps上镜像的名字上有体现
keepalived_virtual_router_id: “51” //keepaliverd id
生成密码文件passwords.yml
这个密码文件可以使用工具自动生成,也可以手动输入但是手动输入需要注意格式,在:后需要空一格再输入;而且ssh_key也比较麻烦所以推荐使用工具自动生成但是直接输入
[root@kolla kolla]#.tox/genconfig/bin/kolla-genpwd
修改dashboard登录密码
[root@kolla kolla]#vi /etc/kolla/passwords.yml
keystone_admin_password: admin
检查配置
[root@kolla kolla]#./tools/kolla-ansible prechecks
开始部署
[root@kolla kolla]#./kolla-ansible deploy
部署完成:
生成admin.sh文件
[root@openstack]# kolla-ansible post-deploy
[root@openstack ~]# cat /etc/kolla/admin-openrc.sh
export OS_PROJECT_DOMAIN_NAME=default
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_NAME=admin
export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=admin
export OS_AUTH_URL=http://10.64.8.177:35357/v3
export OS_IDENTITY_API_VERSION=3
kolla自带了一个初始化openstack的脚本:
[root@openstack ~]# vi kolla/tools/init-runonce
这个就是float ip配置
neutron subnet-create --name 1-subnet --disable-dhcp --allocation-pool start=10.64.8.90,end=10.64.8.95 public1 10.64.8.0/24 --gateway 10.64.8.254
然后运行战歌脚本即可。
部署中的 一些错误:
msg: Unexpected failure during module execution.
An exception occurred during task execution. The full traceback is:
Traceback (most recent call last):
File "/usr/lib/python2.7/site-packages/ansible/executor/task_executor.py", line 119, in run
res = self._execute()
File "/usr/lib/python2.7/site-packages/ansible/executor/task_executor.py", line 431, in _execute
self._task.post_validate(templar=templar)
File "/usr/lib/python2.7/site-packages/ansible/playbook/task.py", line 248, in post_validate
super(Task, self).post_validate(templar)
File "/usr/lib/python2.7/site-packages/ansible/playbook/base.py", line 371, in post_validate
value = templar.template(getattr(self, name))
File "/usr/lib/python2.7/site-packages/ansible/template/__init__.py", line 359, in template
d[k] = self.template(variable[k], preserve_trailing_newlines=preserve_trailing_newlines, fail_on_undefined=fail_on_undefined, overrides=overrides)
File "/usr/lib/python2.7/site-packages/ansible/template/__init__.py", line 331, in template
result = self._do_template(variable, preserve_trailing_newlines=preserve_trailing_newlines, escape_backslashes=escape_backslashes, fail_on_undefined=fail_on_undefined, overrides=overrides)
File "/usr/lib/python2.7/site-packages/ansible/template/__init__.py", line 507, in _do_template
res = j2_concat(rf)
File "<template>", line 11, in root
File "/usr/lib/python2.7/site-packages/jinja2/filters.py", line 740, in do_list
return list(value)
File "/usr/lib/python2.7/site-packages/jinja2/filters.py", line 839, in do_map
for item in seq:
File "/usr/lib/python2.7/site-packages/jinja2/filters.py", line 931, in _select_or_reject
if modfunc(func(transfunc(item))):
File "/usr/lib/python2.7/site-packages/jinja2/filters.py", line 925, in <lambda>
name, item, args, kwargs)
File "/usr/lib/python2.7/site-packages/jinja2/environment.py", line 438, in call_test
raise TemplateRuntimeError('no test named %r' % name)
TemplateRuntimeError: no test named 'equalto' fatal: [worker-02]: FAILED! => {
"failed": true,
"msg": "Unexpected failure during module execution.",
"stdout": ""
}
jinjia2版本问题更新一下:
pip install -U Jinja2
重新运行kolla-ansible deploy
注: 社区从ocata版本开始将kolla代码拆分成kolla和kolla-ansibe两个仓库以明细分工
kolla用来build OpenStack镜像
kolla-ansibe用来部署
最新文章
- 【Java EE 学习 77 下】【数据采集系统第九天】【使用spring实现答案水平分库】【未解决问题:分库查询问题】
- jpa语句报 org.springframework.dao.InvalidDataAccessApiUsageException: Parameter with that position [2] did not exist; nested exception is java.lang.IllegalArgumentException: Parameter with that position
- js出错总结
- 转:DLL教程
- C++ STL pair
- 六分钟学会创建Oracle表空间的步骤
- 【转】cocos2d-x学习笔记03:绘制基本图元
- 翻译一篇SpiderMonkey GC的文章
- Load ContextCLR 探测
- 连连看(dfs)
- asp.net -mvc框架复习(2)-创建ASP.NET MVC 第一个程序以及MVC项目文件夹说明
- .net framework 4.5 +steeltoe+ springcloud 实现服务注册功能
- [LeetCode] Perfect Number 完美数字
- 精通CSS+DIV网页样式与布局--制作实用菜单
- 3.JavaScript-语法、关键保留字及变量
- [转载] java多线程总结(三)
- HDU 4185 Oil Skimming 【最大匹配】
- Java内存模型学习笔记
- 初识Spring Security
- python3 判断字符串是否为IP