企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# chef-server 这种方式,意味着你需要自己去架设一个Chef Server。 Chef Server分为企业版和开源版。我们以开源版本为示例。 #### 介质准备 从 Chef 官网([http://www.opscode.com/chef/install)下载](http://www.opscode.com/chef/install)下载) Chef Server 和 Chef Client 的安装包以及 Chef Repository 包。 - Chef Server 安装包 打开[http://www.opscode.com/chef/install,](http://www.opscode.com/chef/install,) 点击"Chef Server"页,选择合适的操作系统,版本等,选择最新的 Chef Server 版本下载。 - Chef Client 安装包 打开[http://www.opscode.com/chef/install,](http://www.opscode.com/chef/install,) 点击"Chef Client"页,选择合适的操作系统,版本等,选择最新的 Chef Client 版本下载。 - 从[https://github.com/opscode/chef-repo下载](https://github.com/opscode/chef-repo下载) Chef Repository (chef-repo-master.zip ) 一个空的git库,用来构建你自己的chef。 #### 安装Server Chef Server分为两种,一种是企业版,一种是开源版本,我们用开源版本做示例。[开源版本下载地址](http://www.getchef.com/download-open-source-chef-server-11/) 目前最新版本为Chef11, 是OpsCode和Facebook合作开发的,Chef Server的核心Api也用Erlang进行了重写,所以Chef11开始,Chef是Ruby+Erlang的混合体。 这里我推荐大家使用vagrant。 我是以vagrant + VirtualBox + ubuntu12.04 x86_64版本来做示例的, Vagrantfile配置如下。 ~~~ Vagrant.configure("2") do |config| config.vm.box = "ubuntu" config.vm.box_url = "http://files.vagrantup.com/precise64.box" config.vm.hostname = "chef-server" config.vm.network "public_network" # ... end ~~~ 对于vagrant,本书不做介绍, 大家可以去网上搜罗各种相关文章。 安装: ~~~ 1 Install the file using the correct method for your system (i.e. "dpkg -i chef-server.deb" for Debian) 因为我用的是ubuntu, 所以我执行命令安装 Chef Server 安装包: sudo dpkg -i chef-server_11.1.4-1_amd64.deb 2 sudo chef-server-ctl reconfigure 此命令会创建 Chef Server11.x 的所有必需组件,包括 Erchef、RabbitMQ,、PostgreSQL 等。 ~~~ 验证 Chef Server 11.x 是否安装成功。可通过两种方式验证: - 一是在 Chef Server 上运行"$ sudo chef-server-ctl test"命令,此命令会运行 chef-pedant 的测试组件并报告所有组件正常工作,安装正确。 - 二是直接在浏览器中打开 Chef Server 的页面: 安装好以后, 在本地机器设置hosts: ~~~ 192.168.33.11 local.chef.com ~~~ [https://local.chef.com](https://local.chef.com) ,若能出现登录界面,说明 Chef Server 已经正确启动。 - 还有种方式,就是执行ps -ef|grep chef, 看看Chef Server相关的进程是否启动。 ![Chef Server UI](https://box.kancloud.cn/2015-08-23_55d9d7ad67b9d.png) *chef server UI* ![Chef Server UI](https://box.kancloud.cn/2015-08-23_55d9d7ad7ba14.png) *chef server UI* #### 安装 Chef Workstation 经过较长的等待,我们的Chef Server安装好了之后,就可以配置我们的Chef Workstation环境了。 Chef Workstation,就是我们的工作台。它包含一系列工具,比如chef client、Ruby、Knife等。 - 安装Chef Client 安装chef-client有很多种方式: - **第一种**: 安装[omnibus installer](http://docs.getchef.com/install_omnibus.html) Ominibus Installer是一个Chef的安装脚本。执行命令: ~~~ $ curl -L https://www.opscode.com/chef/install.sh | sudo bash ~~~ 以上命令不只会在机器上安装chef-client,还会安装Ruby语言,Knife等一系列工具,安装结束后输入以下命令来确认安装没有问题: ~~~ $ chef-client -v Chef: 11.12.8 ~~~ chef-client安装完成之后,会在/opt生成如下的目录结构: ~~~ /opt /chef /bin /embedded /bin /include /lib /share /ssl ~~~ - **第二种方法**,直接下载Chef Client 安装包。 - **第三种方法**, 先安装Ruby, 然后执行gem install chef 因为我是一个Rubyist,所以我倾向于第三种方法。 - 配置chef repo - 直接使用opscode的chef-repo就可以了。 ~~~ ``` mkdir chef-repo cd chef-repo git clone https://github.com/opscode/chef-repo.git . ``` - 在chef-repo目录下创建.chef目录 - 将 Chef Server 上的 admin.pem 和 chef-validator.pem 文件(位于/etc/chef-server) 拷贝到.chef 目录中 - 运行"knife configure --initial" 命令配置 Chef Workstation, 根据提示来输入配置信息。 ~~~ - 验证Chef Workstation是否配置成功 ~~~ # knife client list chef-validator chef-webui # knife user list admin vagrant ~~~ ~~~ 说明:knife,是Chef提供的命令行工具,用于对集群中节点进行管理。此命令在后面还会有介绍。 ~~~ ### 注册一个node 现在我们已经装好了Chef Server和Chef Workstation, 我们接下来就可以创建一个Chef node, 也就是你要用chef来管理配置的那台机器。 我们使用另外一台vagrant虚拟机来当作node ~~~ Vagrant.configure("2") do |config| config.vm.box = "ubuntu" config.vm.box_url = "http://files.vagrantup.com/precise64.box" config.vm.hostname = "chef-node" config.vm.network :private_network, ip: "192.168.33.12" # ... end ~~~ 执行命令: ~~~ knife bootstrap 192.168.33.12 --sudo -x vagrant -P vagrant -N node2 ~~~ 这样,我们就把这个虚拟机注册为名叫node2的Chef节点。 ![Chef Node](https://box.kancloud.cn/2015-08-23_55d9d7ad8ce73.png) *chef node - node2* ### 总结 到此为止,我们就装好了Chef 的整个环境。就可以使用Chef来管理各个node了。 在安装的过程中有一些需要注意的地方: - 执行knife configure --initial的时候, 要注意你的配置。 因为knife是通过pem文件和Chef Server交互的,以及要注意knife.rb中设置的登陆用户名,可以执行knife user list命令查看 - 如果Chef Server Webui有错误,可以去查看日志: ~~~ sudo vi /var/log/chef-server/chef-server-webui/current ~~~ 如果要重启Chef Server Webui,可以去 /opt/chef-server/init目录下, 使用命令 ~~~ sudo ./chef-server-webui restart ~~~