ansible与kolla-ansible部署OpenStack多节点
ansible https://zerosun.top/2019/08/12/openstack-deploying-by-OSA/
https://www.bookstack.cn/read/deployopenstackwithpuppet/deployment_tool-fuel.md
https://www.bookstack.cn/read/deployopenstackwithpuppet/deployment_tool-osa.md
推荐 https://www.bookstack.cn/read/deployopenstackwithpuppet/deployment_tool-packstack.md
三个OpenStack自动化部署工具:Devstack,OSA,Kolla对比_筋斗云计算-程序员宝宝_openstack自动化部署工具
特色 |
劣势 |
|
Devstack |
安装简单 |
不支持添加和减少单个组件。只能将整个环境卸载再重新安装 |
OSA (OpenStack-Ansible)
|
基于ansible和LXC容器部署OpenStack |
|
Kolla |
基于ansible和Docker容器部署OpenStack 所需软件包被封装到专门的Docker镜像中,安装速度很快,半个钟头左右就能安装完成。 最新的Ocata 版本的OpenStack使用Kubernetes 平台来管理容器 |
后2个部署工具都支持容器,容器的好处就是方便升级,方便运维等。
Docker容器和LXC容器的最大区别是Docker容器迁移更容易。
kolla-ansible如下
1、准备环境:
物理机或者虚拟机三台(本文使用CentOS7系统,虚拟机环境)
一台deploy,两块网卡(ens192、ens224)
一台control+network,两块网卡(ens192、ens224)
一台compute+storage,三块网卡(ens192、ens224、ens256)
compute计算节点加一块硬盘
1.1 网络配置
- deploy:
vim /etc/sysconfig/network-scripts/ifcfg-ens192 BOOTPROTO=static DEVICE=ens192 ONBOOT=yes IPADDR=10.24.3.10 NETMASK=255.255.255.0 GATEWAY=10.24.3.254
- control:
ens-192配置ip:vim /etc/sysconfig/network-scripts/ifcfg-ens192 TYPE=Ethernet BOOTPROTO=static DEVICE=ens192 ONBOOT=yes IPADDR=10.24.3.12 NETMASK=255.255.255.0 GATEWAY=10.24.3.254
ens-224网卡配置三个子接口(xvlan),分别为:
- ens-224.10
vim /etc/sysconfig/network-scripts/ifcfg-ens224.10
VLAN=yes
DEVICE=ens224.10
BOOTPROTO=static
ONBOOT=yes
TYPE=Ethernet
IPADDR=192.168.10.20
NETMASK=255.255.255.0
vim /etc/sysconfig/network-scripts/ifcfg-vlan10
VLAN=yes
VLAN_NAME_TYPE=VLAN_PLUS_VID_NO_PAD
DEVICE=vlan10
PHYSDEV=ens224
BOOTPROTO=static
ONBOOT=yes
TYPE=Ethernet
IPADDR=192.168.10.20
NETMASK=255.255.255.0
- ens-224.20
vim /etc/sysconfig/network-scripts/ifcfg-ens224.20
VLAN=yes
DEVICE=ens224.20
BOOTPROTO=static
ONBOOT=yes
TYPE=Ethernet
IPADDR=192.168.20.20
NETMASK=255.255.255.0
vim /etc/sysconfig/network-scripts/ifcfg-vlan20
VLAN=yes
VLAN_NAME_TYPE=VLAN_PLUS_VID_NO_PAD
DEVICE=vlan20
PHYSDEV=ens224
BOOTPROTO=static
ONBOOT=yes
TYPE=Ethernet
IPADDR=192.168.20.20
NETMASK=255.255.255.0
- 3ns-224.30
vim /etc/sysconfig/network-scripts/ifcfg-ens224.30
VLAN=yes
DEVICE=ens224.30
BOOTPROTO=static
ONBOOT=yes
TYPE=Ethernet
IPADDR=192.168.30.20
NETMASK=255.255.255.0
vim /etc/sysconfig/network-scripts/ifcfg-vlan30
VLAN=yes
VLAN_NAME_TYPE=VLAN_PLUS_VID_NO_PAD
DEVICE=vlan30
PHYSDEV=ens224
BOOTPROTO=static
ONBOOT=yes
TYPE=Ethernet
IPADDR=192.168.30.20
NETMASK=255.255.255.0
ens256配置ip:
# 外网网卡配置
vim /etc/sysconfig/network-scripts/ifcfg-ens256
DEVICE=ens256
BOOTPROTO=none
ONBOOT=yes
TYPE=Ethernet
- compute:
ens192和ens224配置和control一样,ens224配置三个子接口,子接口ip网段,VLAN不换,只更改IP:
vim /etc/sysconfig/network-scripts/ifcfg-ens192
BOOTPROTO=static
DEVICE=ens192
ONBOOT=yes
IPADDR=10.24.3.11
NETMASK=255.255.255.0
GATEWAY=10.24.3.254
vim /etc/sysconfig/network-scripts/ifcfg-ens224.10
IPADDR=192.168.10.10
vim /etc/sysconfig/network-scripts/ifcfg-ens224.20
IPADDR=192.168.20.10
vim /etc/sysconfig/network-scripts/ifcfg-ens224.30
IPADDR=192.168.30.10
1.2 重启网卡
systemctl restart network
ip a 查看网卡信息
ping命令检测,主机是否连通,例:[root@compute ~]# ping 192.168.20.10
1.3 compute新添加硬盘分区初始化
fdisk -l
pvcreate /dev/sdb
vgcreate cinder-volumes /dev/sdb
【deploy上操作以下内容,部署节点服务器】
2、准备部署
2.1 安装依赖关系
yum install -y epel-release
yum install -y python-pip
pip install -U pip
yum install python-devel libffi-devel gcc openssl-devel libselinux-python
2.2 安装部署工具【ansible、kolla-ansible】
yum install ansible
pip install kolla-ansible
2.3
将globals.yml和passwords.yml复制到/etc/kolla目录
cp -r /usr/share/kolla-ansible/etc_examples/kolla /etc/kolla/
2.4 将all-in-one和multinode库存文件复制到当前目录。
cp /usr/share/kolla-ansible/ansible/inventory/* .
3、下载kolla源码
若没有git命令,手动安装yum install -y git
3.1 获取Kolla和Kolla-Ansible存储库
git clone https://github.com/openstack/kolla
git clone https://github.com/openstack/kolla-ansible
3.2 Kolla-ansible在etc/kolla中保存配置文件(globals.yml和passwords.yml)将配置文件复制到/etc/kolla目录
cp -r kolla-ansible/etc/kolla /etc/kolla/
3.3 Kolla-ansible将库存文件(all-in-one和multinode)保存在ansible / inventory中。
现将清单文件复制到当前目录
cp kolla-ansible/ansible/inventory/* .
4、准备部署
4.1 部署中使用的密码存储在/etc/kolla/passwords.yml文件中。通过运行下面命令生成随机密码:
kolla-genpwd
初始化之后,可手动更改keystone_admin_password密码(OpenStack登录密码)
vim /etc/kolla/passwords.yml
keystone_admin_password:admin
4.2 配置multinode文件
[control]
10.24.3.12 ansible_user=root ansible_password=1234 ansible_become=true
[network]
10.24.3.12 ansible_user=root ansible_password=1234 ansible_become=true
[external-compute]
10.24.3.11 ansible_user=root ansible_password=1234 ansible_become=true
[monitoring]
10.24.3.12 ansible_user=root ansible_password=1234 ansible_become=true
[storage]
10.24.3.11 ansible_user=root ansible_password=1234 ansible_become=true
[deployment]
localhost ansible_connection=local
检测:确认inventory配置文件是否正确:
ansible -m ping all
结果:
[root@deploy /]# ansible -m ping all
10.24.3.11 | SUCCESS => {
"changed": false,
"ping": "pong"
}
10.24.3.12 | SUCCESS => {
"changed": false,
"ping": "pong"
}
4.3 编辑globals.yml配置文件
kolla_base_distro: "centos"
# binary使用像apt或yum这样的软件仓库,source使用原始源代码归档,git存储库或本地源代码目录
kolla_install_type: "source"
openstack_release: "queens" # 使用的版本
kolla_internal_vip_address: "192.168.10.120" # 内部VIP
kolla_external_vip_address: "10.24.3.120" # 外部VIP
network_interface: "ens224.10"
kolla_external_vip_interface: "ens192"
api_interface: "ens224.10"
storage_interface: "ens224.20"
cluster_interface: "ens224.20"
tunnel_interface: "ens224.30"
# 接口是活动的,没有IP地址。否则,实例将无法访问外部网络
neutron_external_interface: "ens256"
enable_cinder: "yes"
5、开始部署
''' 1、带有kolla的引导服务器部署依赖关系'''
kolla-ansible -i ./multinode bootstrap-servers
''' 2、对主机执行预部署检查'''
kolla-ansible -i ./multinode prechecks
''' 3、执行OpenStack部署'''
kolla-ansible -i ./multinode deploy
6、使用OpenStack
6.1 OpenStack需要一个openrc文件,其中设置了admin用户的凭证。
要生成这个文件运行以下命令:
kolla-ansible post-deploy
. /etc/kolla/admin-openrc.sh
6.2 安装基本的OpenStack CLI客户端:
pip install python-openstackclient python-glanceclient python-neutronclient
6.3 运行脚本创建示例网络,图像等
. /usr/share/kolla-ansible/init-runonce
打开浏览器输入10.24.3.120(外部VIP),用户admin ,密码admin 可登录openstack_dashboard,如图所示:
作者:不二啊1
链接:https://www.jianshu.com/p/6b7ebcb82196
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。