chef-server
这种方式,意味着你需要自己去架设一个Chef Server。
Chef Server分为企业版和开源版。我们以开源版本为示例。
介质准备
从 Chef 官网(http://www.opscode.com/chef/install)下载 Chef Server 和 Chef Client 的安装包以及 Chef Repository 包。
Chef Server 安装包
打开http://www.opscode.com/chef/install, 点击"Chef Server"页,选择合适的操作系统,版本等,选择最新的 Chef Server 版本下载。
Chef Client 安装包
打开http://www.opscode.com/chef/install, 点击"Chef Client"页,选择合适的操作系统,版本等,选择最新的 Chef Client 版本下载。
从https://github.com/opscode/chef-repo下载 Chef Repository (chef-repo-master.zip )
一个空的git库,用来构建你自己的chef。
安装Server
Chef Server分为两种,一种是企业版,一种是开源版本,我们用开源版本做示例。开源版本下载地址
目前最新版本为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 ,若能出现登录界面,说明 Chef Server 已经正确启动。
还有种方式,就是执行ps -ef|grep chef, 看看Chef Server相关的进程是否启动。
chef server UI
chef server UI
安装 Chef Workstation
经过较长的等待,我们的Chef Server安装好了之后,就可以配置我们的Chef Workstation环境了。
Chef Workstation,就是我们的工作台。它包含一系列工具,比如chef client、Ruby、Knife等。
安装Chef Client
安装chef-client有很多种方式:
第一种: 安装omnibus installer
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 - 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