一、packstack

    packstack是红帽RDO项目的一个,主要用进行概念性,测试性的openstack搭建,一般作为测试验收。它有着原生openstack的所有组件,可以使用all in one的方式,将所有计算节点和控制节点都部署在一台服务器上,目前已经更新到queen版本。官网地址为https://www.rdoproject.org/install/packstack/。可以按照官网说明搭建,但是有坑。


二、环境准备

    采用基于kvm的虚拟机,kvm平台为nutanix,天生支持虚拟化嵌套。

    操作系统,centos7 自小化安装

    cpu   2路4核心

    硬盘300G

    内存 16G

    网卡  一块 要保证能上外网

centos7上使用脚本的方式一键搭建packstack all in one_第1张图片

虚拟按照最小化安装即可

centos7上使用脚本的方式一键搭建packstack all in one_第2张图片

等待安装完毕进行初始化配置


三、初始化配置

主要是禁用selinux,关闭防火墙,更新yum源等,我采用脚本执行,如下所:

#!/bin/bash
#change yum source 
#disable selinux
#name=start.sh

echo "========start============="
cd /etc/yum.repos.d/
sed -i '/SELINUX/s/enforcing/disabled/' /etc/sysconfig/selinux
iptables -F
systemctl disable firewalld
systemctl stop firewalld

echo "====dowload tools========="
yum install -y net-tools vim wget


echo "====backup repo==========="
mv CentOS-Base.repo CentOS-Base.repo.bak


echo "====dowload aliyum-repo===="
wget http://mirrors.aliyun.com/repo/Centos-7.repo


echo "====upgrade aliyum-repo===="
mv Centos-7.repo CentOS-Base.repo



echo "====upgrade yum============"
yum clean all
ange yum source

echo "========start============="
cd /etc/yum.repos.d/

echo "====dowload tools========="
yum install -y net-tools vim wget


echo "====backup repo==========="
mv CentOS-Base.repo CentOS-Base.repo.bak


echo "====dowload aliyum-repo===="
wget http://mirrors.aliyun.com/repo/Centos-7.repo


echo "====upgrade aliyum-repo===="
mv Centos-7.repo CentOS-Base.repo



echo "====upgrade yum============"
yum clean all
yum makecache

yum update -y
echo "========start============="
cd /etc/yum.repos.d/

echo "====dowload tools========="
yum install -y net-tools vim wget


echo "====backup repo==========="
mv CentOS-Base.repo CentOS-Base.repo.bak


echo "====dowload aliyum-repo===="
wget http://mirrors.aliyun.com/repo/Centos-7.repo


echo "====upgrade aliyum-repo===="
mv Centos-7.repo CentOS-Base.repo

echo "====upgrade yum============"
yum clean all
yum makecache
yum update -y
yum makecache
yum makecache
yum update -y

cd ~

echo "=========finish============"

记得脚本需要加上可执行权限,,耐心等待

在完成后,建议制作一次快照,当后面部署除了问题后,直接快照回滚


三、packstack安装脚本

编写脚本,自动安装packstack all in one,同时可以进行neutron网络配置,方便一键执行。关于packstack网络配置,请参考官方手册说明

https://www.rdoproject.org/networking/neutron-with-existing-external-network/

#/bin/bash
#identity user is a superuser
#script_mane=ops-allinone-nodemo-custnetwork-v3.sh
if [ `id -u` != 0 ];then
	echo "Please Run it using User root"
	exit 10
fi
#env check
	echo "Run environment check......."
	rpm -qa |grep yum-utils &> /dev/null  || yum -y install yum-utils &> /dev/null && echo "environment check complete" ||(echo "no yum-utils package exist,Please install it manual";exit 10)

#enable and disabled Services
echo "Disable and Enable SomeService......."
systemctl disable firewalld &> /dev/null
if [ $? = 0 ];then
	systemctl stop firewalld &> /dev/null
	if [ $? = 0 ];then
		systemctl disable NetworkManager &> /dev/null
		if [ $? = 0 ];then
			systemctl stop NetworkManager &> /dev/null	
			if [ $? = 0 ];then
				systemctl enable network &> /dev/null
				if [ $? = 0 ];then
					 systemctl start network &> /dev/null
					 if [ $? = 0 ];then
						echo "All Service's Status is normal"
					 else
						echo "Start network service failed"
						exit 10
					 fi
				else
					echo "Enable network service failed"
					exit 10
				fi
			else 
				echo "Stop NetworkManager Service failed"
				exit 10
			fi
		else 
			echo "Disabled  NetworkManager Service failed"
			exit 10
		fi
	else
		echo "Stop firewalld Servie failed"
		exit 10 
	fi
else 
	echo "Disabled firewalld failed"
	exit 10
fi
#testing network 
echo "Now Testing your Ineternet Netowrk ......."	
	ping -c 3 8.8.8.8 &> /dev/null  && echo "Network test is complete" ||(echo "Network test is failed,Please make sure your network can connect Internet " ;exit 10)
#yum install openstack queens
echo "Now install openstack queens's software repo......"
	yum install -y centos-release-openstack-queens &> /dev/null  && echo "Install repo complete,Next will enabled this repo"|| (echo "Install repo failed. Please check your network"; exit  10)
#enabled yum repo
echo "enabled yum repo......"
	yum-config-manager --enable openstack-queens &> /dev/null && echo "yum repo enabled ."||(echo "enabled repo failed";exit 10)
#now to update your software  to lastest 
	echo "now to update your software  to lastest......"
	yum update -y &> /dev/null  && echo "Update  complete "||(echo "Update failed";exit 10)
#now to install openstack-packstack tools
echo "now to install openstack-packstack tools....."	
	yum install -y openstack-packstack &> /dev/null && echo  "Install  packstack  complete"||(echo "Install packstack failed";exit 10)
	
#configure external network nic
NICS=$(ip link sh|grep ^[0-9]|cut -d: -f 2|grep -v lo|nl)
echo "$NICS"   > nicinfo.txt
echo -n  -e "Please Select a NIC set uplink for br-ex:\n$NICS\n"
read NUM
NIC=$(cat  nicinfo.txt |sed 's/^[ \t]*//g'|grep ^[$NUM]|awk -F" " '{print $2}')
echo -n -e "Your Select NIC is $NIC ,Please Makesure use it [yes/no]\n"
read N
N1=$(echo $N|tr 'A-Z' 'a-z')
case $N1 in
	yes)
#now start using packstack deploy Allinone Openstack 
echo "now start using packstack deploy Allinone Openstack"
packstack --allinone --provision-demo=n --os-neutron-ovs-bridge-mappings=extnet:br-ex --os-neutron-ovs-bridge-interfaces=br-ex:$NIC --os-neutron-ml2-type-drivers=vxlan,flat,vlan 
	if [ $? = 0 ];then
	echo -n -e "Now,Start to configure your network switch br-ex useing $NIC\n"
        IP=$(ip add sh $NIC|grep -w inet|cut -d' ' -f 6|cut -d'/' -f 1)
        MASK=$(ip add sh $NIC|grep -w inet|cut -d' ' -f 6|cut -d'/' -f 2)
        GW=$(route -n|grep ^0.0.0.0|awk -F' ' '{print $2}')
        DNS=$(cat /etc/resolv.conf|grep ^nameserver|cut -d' ' -f 2)

        cat > /etc/sysconfig/network-scripts/ifcfg-br-ex <<-EOF
TYPE=OVSBridge
BOOTPROTO=none
DEVICE=br-ex
ONBOOT=yes
DEVICETYPE=ovs 
IPADDR=$IP
PREFIX=$MASK
GATEWAY=$GW
DNS1=$DNS
EOF
        cat >/etc/sysconfig/network-scripts/ifcfg-$NIC <<-EOF
TYPE=OVSPort
DEVICE=$NIC
ONBOOT=yes
DEVICETYPE=ovs
OVS_BRIDGE=br-ex
EOF

echo "Please using service network restart common to restart your network "
else
	echo "Install Failed Please Check Your network and run this script again"
fi
	;;
	no)
	echo "Please rerun this script"
	exit 10
	;;
esac

记得加上可执行权限,耐心等待。

centos7上使用脚本的方式一键搭建packstack all in one_第3张图片

注意:

1、在安装过程中,耗时2~4小时安装组件,根据网络情况不定

2、有时候报错,无视,直接重新运行脚本

3、脚本采用交互方式确认网络信息,按照提示执行

centos7上使用脚本的方式一键搭建packstack all in one_第4张图片

4、脚本会自动配置网桥,ovs等l2neutron配置

如果能显示这个界面,则说明基本配置成功,耐心等待即可

centos7上使用脚本的方式一键搭建packstack all in one_第5张图片

5、登录

完成安装后,在浏览器输入http://yourip/dashboard即可进入horizen登录界面,登录的帐号密码在keystonerc_admin的文件中。如下所示


centos7上使用脚本的方式一键搭建packstack all in one_第6张图片



centos7上使用脚本的方式一键搭建packstack all in one_第7张图片


进入后,愉快的玩耍吧 

centos7上使用脚本的方式一键搭建packstack all in one_第8张图片

使用这个拿来学习openstack,想必也是极好的