关于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]





   


阅读更多
想对作者说点什么?

博主推荐

换一批

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