关于chef的安装的使用

        chef的安装网上说的很多,但是也往往不能适用于所有环境,我们在参考IBM的安装过程中就遇到了很多的麻烦。此处先附上IBM的安装教程连接 http://www.ibm.com/developerworks/cn/cloud/library/1407_caomd_chef/ 

        先介绍一下我们的环境,Centos7系统,阿里云的主机,8G内存。(有必要说一下chef这货在安装过程中非常的吃内存,他会自动安装java、消息队列、数据库、nginx等好多东西)

       根据IBM的安装流程,我们下载最新的安装包 chef-server-core-12.3.1-1.el7.x86_64.rpm,以及 chef-12.6.0-1.el7.x86_64.rpm  还有 chef-repo-master.zip (chef-repo可以在后面通过git clone 一样),好像chef的网站还被墙了,需要翻墙才能下载,幸好win下面有好多翻墙工具。

      安装chef-server最好在一台没有nginx的机子上进行,因为一开始因为端口问题一直安装不成功,reconfigure之后运行chef-server-ctl test 跑了几分钟后提示一切OK,用IP访问web页面提示没有安装knife-manage,根据提示下载安装chef-manege后就可以用之前配置时新建的管理员账号密码登陆了。这里还需要说明一下的是chef配置的nginx在访问80端口时会用301重定向的https的443端口。

    接下来安装workstation,这里是在同一台服务器上,关键点是在当前账号(我没用root账号)的家目录的chef-repo目录下建.chef 目录,并将 Chef Server 上的 admin.pem 和 chef-validator.pem 文件(位于/etc/chef-server) 拷贝到 Chef Repository 的.chef 目录中。 注意这两个pem文件就是一串私钥,名字可以不一样。

    knife configure --initial 会在。chef下生成knife.rb 配置文件,根据实际情况修改一下这个文件,我这里主要修改 chef_server_url  'https://***********/organizations/*****/' 这个与IBM的不一样,是参照官网的配置教程。

    安装chef-client很简单,在此表过。

    到这里就差不多都配置完了,剩下的就是真正的部署客户端。

   

    根据 IBM的教程 knife bootstrap Chef_Client_IP -x username -P password ,值得注意的是这里的username和password是Chef_Client_IP这台主机上的真实存在的用户名密码,最好还是root,因为在安装client时需要一些权限。这里可以把workstation 当前账号的公钥拷贝到chef_client_IP的主机root用户.ssh/authorized_keys文件中,然后就不需要加-P参数指定密码了,knife bootstrap Chef_Client_IP -x root,此外根据官方教程还需要加一个-N 参数指定 client-node的名称,最终 “ knife bootstrap Chef_Client_IP -x root -N node_****  ”,可是在运行时依然是坑,

首先提示 No knife configuration file found,是因为没有在chef-repo目录下运行上述命令,

第二个坑是在chef-repo目录下运行上述命令,一开始一切正常,后来会停留很长世间一直在trying curl 或者 trying wget之类的,貌似是在获取chef-12.6.0-1.el7.x86_64.rpm 安装包,理解没错的话应该是被墙了访问不到,每次都要这种方式从官网下载下来部署客户端岂不疯了,根据IBM的安装教程有一个 “自定义 bootstrap 模板” 可以参考,我们这里是将https://www.opscode.com/chef/install.sh 下载下来加以修改,将里面download_url 改成本机的,然后将chef-12.6.0-1.el7.x86_64.rpm可以访问的地方,这样就不需要联网下载客户端安装包了,直接从本机就可以部署客户端。当然需要指定修改后的install模板  命令如下 knife bootstrap Chef_Client_IP  -x root -N node_****  --bootstrap-template install.sh

第三个坑是客户端部署了chef-client后运行命令 chef-client 提示 Did not find config file: /etc/chef/client.rb,私钥等信息没有拷贝过来,解决方法是 不带--bootrap-template参数运行 knife bootstrap Chef_Client_IP  -x root -N node_**** 。


到此,客户端就可以正常运行了,可以在客户端执行chef-client更行cookbook或者在workstation执行  knife ssh Chef_Client_IP  'chef-client' -m -x root 。


ps 1、给某一个node添加某一个cookbook中的某一个recipe  应该是  knife node run_list add node1  recipe[cookbook1::recipe1]  而不是像IBM中那样 knife node run_list add node1  recipe[cookbook1::recipe1.rb]





   


阅读更多

为什么要使用Chef安装CloudFoundry?Chef的原理是什么?

09-03

在自己的Iaas上部署CloudFoundry有使用dev_setup和BOSH两种方法,其中前者就是一个典型的使用chef来安装基于源码的多组件系统的案例。rnrn假如你也是参考过这个文档:[url=http://support.cloudfoundry.com/entries/20407923-single-multi-node-vcap-deployment-using-chef][/url],你会发现文章给出Option 1非常之简单:就一行bash。。。rnrn但是,楼主表示从来没成功过。。。rnrn所以我一直用的是Option 2rnrn失败原因主要有三:国内用git clone源码非常慢,经常timeout;安装过程的各种依赖总是有下不到的;安装脚本常常会有些隐藏bug。rnrn其实,成也Chef,败也Chef。Chef可以让我们的安装简化成为一句bash,但是越是自动化的东西,也越容易跑偏。。。rnrn所以,我会在接下来的安装系列指导(coming soon哦)里告诉大家,我们国内用户(墙内),或者需要遵守公司防火墙的用户,该怎么来安装CloudFoundry。rnrn但是在此之前,你必须了解Chef在CF中的工作方式,才能在遇到Error、看到一堆令人头大的track时,迅速定位到哪里出了问题,瞬间看出的是什么类型的问题,然后打开出错的文件或脚本,直接fix掉或者另辟蹊径。rnrn来,先温习下安装过程:rnrn使用git clone下来vcap包。rnrn完事儿后你有可能会发现dea,router,uaa,acm甚至cloudcontroller目录下是空的,没关系,手动cd到该目录下,执行git clone https://github.com/cloudfoundry/uaa.git(以uaa为例子,其余的同理)。或者cd 到vcap下,执行git submodule update --recursive --initrnrn然后执行安装脚本: ../vcap/dev_setup/bin/vcap_dev_setuprnrn后面省略,因为很可能在某个地方就error了。这时候呢,你就需要Chef的知识啦,本文的干货来了:rnrnChef知识传送门:[url=http://blog.csdn.net/cherry_sun/article/details/7711913][/url]rnrn备注:链接中文章的作者是我们Team的大牛cherry_sun(姑且就这个名字吧,他昵称比较多。。。),他博客里的文章,我会在最近按类别转到社区上来。rnrn广告:cherry_sun马上就要找工作了,PaaS的主们你们还在等什么?Offer速来!rnrn祝大家学习愉快,搭建顺利!

没有更多推荐了,返回首页