chef安装openstack文档

关于chef安装rackspace的openstack,rackspace的官网和陈沙克的日志都有所介绍,但是他们都精简掉了很多操作,对于一个有经验的人来说大概已经足够,但是对于像我这样只装过devstack又没听说过chef的菜鸟来说,中间实在是一段黑暗的记忆啊,所以写了这个傻瓜式的文档,也算是向前辈们学习,回报社会。主要给一些像我一样刚接触openstack的新手用吧,本人经验比较少,有的内容不能保证正确,必然有错漏的地方,欢迎指正,也请轻拍。

陈沙克日志:http://www.chenshake.com/rackspace-rackspace-private-cloud-public-cloud-testing-openstack/

rackspace:http://www.rackspace.com/knowledge_center/article/installing-openstack-with-rackspace-private-cloud-tools

张华博客:http://blog.csdn.net/quqi99/article/details/21247111

首先要知道chef是什么:

chef是一个配置管理工具,给我一台机器,我定义这个机器上的mysql版本和运行状态,rabbitmq的版本和状态,包括它的配置文件,这些软件的状态组合起来,叫做食谱,就好像一顿大餐有那些菜,每种菜的口味。chef安装食谱上的规定,把这些软件调成了指定的状态之后,自动化的完成openstack的安装。有想详细了解的,可以看上面张华的博客中参考部分的第一篇,很详细。


环境准备:

需要一台机器做chefserver,两台机器做chefclient,一台client做openstack的controller,一台做compute,这些都可以用虚拟机。chefclient也可以只有一台,最后安装的时候像devstack一样allinone。


基本配置:

1.首先在各个机器上selinux干掉,这东西对我们openstack没用,他做的一些东西又会影响我们openstack的安装,顺便说一句,cloudstack也是得先把他干掉。恩,如果你忘记干掉他,安装到后面会遇到这样的问题:ERROR: Server returned error forhttps://localhost/cookbooks/apache2/1.8.5, retrying 1/5 in 3s

这个时候,你把selinux干掉也来不及了,还是报原来的错误,只好重新做。

关闭selinux的方法:

执行setenforce 0 临时关闭selinux
修改/etc/selinux/config 文件
将SELINUX=enforcing改为SELINUX=disabled
2.在各个机器上配置hosts文件
/etc/hosts文件配置
chefseverchefclient上均配置主机名和对应的ip,如,服务器端配置如下:

3.配置无密码登录

ssh-keygen一路回车,制造密钥 
ssh-copy-id osk2.localdomain 这里osk2.localdomain为上一步中hosts文件里所配置的主机名
在服务器端,对所有的客户端重复上一步操作,使得,服务器端能够无密码登录到所要控制的所有chefclient上
4.防火墙

如果你不打算用openvswitch,neutron,直接干掉防火墙,如果用neutron的话,比较复杂,这里不说了,过段时间写另一篇

service iptables stop

chkconfig iptables off

如果你打算用,也可以先干掉,安装openstack的时候再打开,因为chefsever和client安装的过程是不需要这个的,开着防火墙,你会发现各种坑。

5.网桥配置:

如果你打算使用openvwitch,参考上面张华的博客,如果只使用最简单的网络,如下即可
在服务器端和客户端均配置eth0桥接到br100,示例如下:
这里要注意网关和掩码,根据各人环境的不同而不同,一定要保证正确

 

chefserver安装:

1.执行通用配置

2.虚拟机上不能直接联网,配置yum代理使yum可用

3.再次关闭防火墙 service iptables stop

chkconfig iptables off

4.升级系统yum update

5.官方的安装脚本要联网下载一个195MB的rpm包,每次失败都要重新下载,我最后注释掉了脚本中的下载部分,把提前下载好的包更名为chef-server.rpm放到/tmp目录下,能够提高执行成功概率。我把rpm包和更改后的脚本都放到了我本机的httpd服务器上地址为:内网地址,省略

6.将chef-server.rpm包放到/tmp目录下,执行bash install-chef-server.sh

7.如果执行失败,删除/root/.chef/knife.rb重新执行

8.
git clone https://github.com/rcbops/chef-cookbooks.git
cd chef-cookbooks
git checkout <version> #这里检出Havana版本
git submodule init
git submodule sync
git submodule update
 
9.
knife cookbook upload -a -o cookbooks 
knife role from file roles/*rb 
 
如果一切正常,则安装成功,可以用浏览器进入https://服务器ip/ 查看chefserver是否一切正常
 
 
 
chefclient安装:
到各个client机器上运行此安装脚本即可http://内网地址省略/chef/install.sh,参考上面的博客
 
使用chef完成openstack安装:
 

服务器端配置:

 
(1).在服务器端新建文件内容如下面的/root/rpc2.json,注释不要包含进去,按个人配置不同更改,这个文件一定要仔细编辑,有问题的话,后面会报很多坑爹错误。
执行knife environment from file /root/rpc2.json创建一个名为rpc2的环境
{

  "name": "rpc2", #environment name

  "description": "Environment for Rackspace Private Cloud (Havana)",

  "cookbook_versions": {

  },

  "json_class": "Chef::Environment",

  "chef_type": "environment",

  "default_attributes": {

  },

  "override_attributes": {

    "nova": {

      "network": {

        "public_interface": "br100" #上一步配置的网桥名称

      }, 

      "libvirt": {

        "virt_type": "qemu"

      },

      "networks": {

        "public": {

          "label": "public",

          "bridge_dev": "eth0",  #按上一步被桥接的网卡名配置

          "dns1": "192.168.131.203", #取决于网络环境

          "dns2": "192.168.131.203",

          "ipv4_cidr": "10.27.23.0/27",

          "bridge": "br100"    #按公共配置在配置的网桥名配置

        }

      }

    },

    "mysql": {

      "allow_remote_root": true,

      "root_network_acl": "%"

    },

    "osops_networks": {

      "nova": "10.27.23.0/24",#选取了已使用的网段可能会造成ip冲突 

      "public": "10.27.23.0/24",#实际上我已经遇到该问题

      "management": "10.27.23.0/24"

    }

  }

}


 
(6)将osk2.localdomain加载到rpc2中
knife bootstrap  osk2.localdomain -E rpc2 

(7)将osk2.localdomain身份分配为ha-controller

knife node run_list add osk2.localdomain 'role[ha-controller1]'
同样的方法osk3.localdomain为role[single-compute]
如果只有一台客户机,分配为role[allinone]

客户端安装

 
(1)到osk2.localdomain这台机器上,,如果你的机器不能直接联网,记得设置代理:
/etc/yum.conf中添加proxy=http://ip:port,
export http_proxy= http://ip:port,
export https_proxy= https://ip:port,
(2)
gem源设置,更换为淘宝源,更稳定
/opt/chef/embedded/bin/gem sources sources --remove http://rubygems.org/

/opt/chef/embedded/bin/gem sources source -l

/opt/chef/embedded/bin/gem sources sources -a http://ruby.taobao.org/

/opt/chef/embedded/bin/gem sources source -l

(3)因为很多时候由于网络问题,下载不到key,导致安装失败,所以手动导入一下key
从http://内网省略,google可以下载下载以下文件,google被封可以试下必应英文版:
RPM-GPG-KEY-EPEL-6
RPM-GPG-KEY-foreman
RPM-GPG-KEY-puppetlabs
RPM-GPG-KEY-RDO-Havana
RPM-GPG-OBS
RPM-GPG-RCB
将这些文件拷入/etc/pki/rpm-gpg/目录
(4)
执行chef-client,如果报错,重新执行,因为经常是由于网络的问题导致中断,一般重复执行一次就会跳过,如果重复报一个错误,再去解决。通常都可以安装成功。
 





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值