花了几天终于搞定heat手动部署,其中涉及多处版本兼容问题,在此跟大家分享,希望能帮助大家解决heat部署问题。直接看下文!!!
执行环境: centos 6u3
heat版本:icehouse-eol
python版本:2.7.9
gcc环境:4.8.2
地址:https://github.com/openstack/heat
根据tag选定自己对应的openstack版本源码包
第二步:安装pip环境
1,下载easy_install https://pypi.python.org/pypi/setuptools
2,对应的zip包下载下来后,进到目录,解压,执行python setup.py install
3,easy_install -U pip
4,验证:pip -V
第三步:安装python和gcc环境
## python环境安装
python包地址:https://www.python.org/ftp/python/2.7.9/
./configure
make
make install
------------------------------------
## gcc环境安装
wget ftp://ftp.gnu.org/gnu/gcc/gcc-4.8.2/gcc-4.8.2.tar.gz # 下载gcc源码
tar zxvf gcc-4.8.2.tar.gz # 解压源码
cd gcc-4.8.2 # 进入源码目录
./configure
make; make install
export PATH={gcc路径}/bin/:$PATH #修改环境变量
第四步:构建python虚拟环境
为什么要走这一步:虚拟环境是一个将不同的项目所需求的环境依赖分别放在一个独立地方的工具,比如说项目A依赖与python2.7环境,项目2依赖python3.6环境,如果在一台机器上如何解决?这个时候这个工具就可以打包依赖环境,帮助解决这个难题。
1,pip install virtualenv #安装virtualenv工具
2,为一个工程创建一个虚拟环境:
cd my_project_folder
virtualenv -p /usr/local/bin/python2.7 test_project
3,要开始使用虚拟环境,其需要被激活:
source test_project/bin/activate (如果要停止使用,执行deactivate)
4,如果命令行开头出现(test_project)打头,说明已经进入虚拟环境,可以执行python -V, 看下当前python版本是否与指定的一致。
第四步:编译安装heat包
1,将heat源码放入test_project目录下
2,cd test_project/heat, pip install -r requirements.txt #安装heat环境所需的依赖。
3,sh install.sh #将heat源码放入site-package中
4,利用 tox 生成配置文件
cd {heat 源码路径}
pip install tox
tox -egenconfig
查看config-generator.conf, 上面有注明配置文件产出路径。
5,deactivate环境,打包test_project。传入要安装heat的机器中。
第五步:安装mysql, rabbitmq
1,安装mysql步骤省略,自行百度。。
2,创建heat数据库 create database heat
3,安装rabbitmq
源码包地址:http://www.rabbitmq.com/releases/rabbitmq-server/v3.3.5/rabbitmq-server-generic-unix-3.3.5.tar.gz
tar -zxvf rabbitmq-server-generic-unix-3.3.5.tar.gz。进入rabbitmq_server-3.3.5/sbin ,rabbitmq的操作命令均在此目录下
安装依赖:
erlang,python-simplejson
开启服务:
./rabbitmq-server & #默认端口5672
增加用户并给用户设定域访问权限:
./rabbitmqctl add_user rabbit rabbit
./rabbitmqctl set_user_tags rabbit administrator
./rabbitmqctl set_permissions -p / rabbit "." "." ".*"
验证是否开启:
netstat -npl | grep 5672
第六步:在keystone中创建heat的服务和账号
Configure service user and role:
keystone user-create --name=heat --pass=service_pass
keystone user-role-add --user=heat --tenant=service --role=admin
第七步:配置heat配置文件
文件路径默认是在/etc/heat/heat.conf
[keystone_authtoken]
admin_password = xxx
admin_tenant_name = service
admin_user = heat
auth_host = xxxx
auth_port = 35357
auth_protocol = http
auth_uri = xxx
auth_version = v2.0 #这个可以注释掉,需要依据你的keystone配置。我是使用了默认的3
[DEFAULT]
rpc_backend = rabbit
[database]
connection = mysql+pymysql://root:xxx@xxx/heat
第八步:生成数据库
进入python虚拟环境包的bin目录下
./python2.7 heat-manage db_sync
第九步:启动heat-api heat-api-cfn heat-engine服务
进入python虚拟环境包的bin目录下
./python2.7 heat-api &
./python2.7 heat-api-cfn &
./python2.7 heat-engine &
服务起来了,可以ps -ef 查下对应进程。这个里面写的还是不完美,后续会持续更新,包括封装一个启动bin文件(包含服务的start, stop), 指定配置文件和日志的路径等。