声明:
本博客欢迎转载,但请保留原作者信息!
作者:姜飞
团队:华为杭州OpenStack团队
最近在学习tripleo来部署openstack,那么tripleO是什么, 他的主要目标就是使用oepnstack来管理openstack,达到安装、维护、升级的目标。
那么,如何来使用tripleo来部署openstack呢。
tripleO部署openstack支持的几种角色:
controler : openstack的控制节点
computer : openstack的计算节点
Block-storage : opentack的块存储节点
Object-storage : openstack的对象存储节点
环境:
ps:由于物理环境所限,只有一台物理服务器,我就部署一个控制节点。
2285服务器一台 (被管理的物理服务器)
ESXI 虚拟机 (种子节点,官方说法叫undercloud或者seed)
操作系统:Fedora 20 x86-64
安装步骤:
1、安装种子节点
2、部署种子节点
3、部署openstack节点
安装种子节点:
在ESXI上创建一个虚拟机,选择下载好的fedora的iso文件进行安装。
安装过程这里就不在描述,等系统安装完毕。
部署种子节点
使用root用户登录fedora系统,增加stack用户
useradd stack passwd stack echo "stack ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/stack chmod 0440 /etc/sudoers.d/stack
sudo yum install -y http://rdo.fedorapeople.org/openstack-juno/rdo-release-juno.rpm sudo yum -y install instack-underclou cp /usr/share/instack-undercloud/instack.answers.sample ~/instack.answers ##修改文件内容再执行下面一个步骤 instack-install-undercloud
在执行instack-install-undercloud命令之前需要~/instack.answers文件修改~/instack.answers的文件内容,主要是要修改LOCAL_INTERFACE 这个配置,其他的DHCP的一些配置,还有如果要使用自定义的密码的话,如果不设置,则会调用os-make-password 生成默认密码在 /root/tripleo-undercloud-passwords文件里。
这里修改LOCAL_INTERFACE为ens192,系统上第二个网口,这个网口作为DHCPserver的网口。
执行完instack-install-undercloud的话,会打印出来 instack-install-undercloud complete. 同时也可以查看日志文件:~/.instack/install-undercloud.log
到这里的话,环境上的种子节点的openstack的服务已经起来了。
至此,openstack的种子节点已经启动成功了。
部署openstack节点
首先需要准备部署openstack节点的相关镜像, 可以使用diskimage-build来制作,这里就直接使用fedora提供的几个镜像:
下载地址:https://fedorapeople.org/groups/repos/openstack-m/tripleo-images-rdo-icehouse/
下载好的镜像文件,拷贝到/home/stack目录下
使用stack用户重开一个shell窗口执行如下命令
command $(sudo cat /root/stackrc | xargs) instack-prepare-for-overcloud
创建/home/stack/deploy-overcloudrc文件:
我只部署一个controller节点,所以COMPUTESCALE,BLOCKSTORAGESCALE,SWIFTSTORAGESCALE都为0 。
NeutronPublicInterface 这个网口要填跟刚才设置的ens192在一个网络里面,可以从ens192进行PXE
MACS就是NeutronPublicInterface 这个网卡的mac地址,如果有多个服务器,则以空格隔开。
PM_IPS PM_USERS PM_PASSWORDS 是物理服务器的BMCIP、用户名和密码, 如果有多个服务器,则以空格隔开。
如果只有1个节点需要部署的话,需要修改如下文件:
sudo vi /usr/bin/instack-deploy-overcloud
for mac in $MACS; do if [ -n "${PM_IPS:-}" -a -n "${PM_USERS:-}" -a -n "${PM_PASSWORDS:-}" ]; then JSON=$(jq ".nodes=(.nodes + [{mac:[\"$mac\"], cpu:\"$CPU\", memory:\"$MEM\", disk:\"$DISK\", arch:\"$ARCH\", pm_user:\"$PM_USERS\", pm_addr:\"$PM_IPS\", pm_password:\"$PM_PASSWORDS\"}])" <<< $JSON) else JSON=$(jq ".nodes=(.nodes + [{mac:[\"$mac\"], cpu:\"$CPU\", memory:\"$MEM\", disk:\"$DISK\", arch:\"$ARCH\", pm_user:\"$USER\", pm_addr:\"ssh_host\", pm_password:\"ssh_key\"}])" <<< $JSON) fi count=$((count + 1)) done
将PMUSER[$COUNT] --》PMUSER 去掉Count。
开始部署openstack
这个地方会等待物理服务器PXE完成,部署完成。
等待物理单板PXE 重启:
物理单板已经PXEOK,进入OS cloud-init
部署成功:
查看虚拟机状态,已经ACTIVE 。
heat-admin登录到物理机,查看物理机的control节点,可以正常工作。
物理机启动时,会调用cloud-init的进行用户数据的初始化,如果发生如下的错误:
1、cloud-init failed, Route info failed
2、/var/lib/heat-cfntools/cfn-userdata Userdata empty or not executable: [Errno 8] Exec format error
则执行service cloud-init restart 进行重新初始化。 因为os-refresh-config会不停的进行配置和服务的安装和部署,直到成功。