首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

使用 Chef 自动化部署一个 Web 服务器(2)

使用 Chef 自动化部署一个 Web 服务器(2)

“烹饪手册”(cookbook)和真实的烹饪一样,“烹饪手册”是用来组织“菜谱”的,在“烹饪手册”里,不光可以定义各种“菜谱”,也可以定义一些属性文件或模板,这些属性文件或模板可以在“菜谱”里直接引用。在实际工作中,我们往往使用的也是“烹饪手册”,而不是一个个单独的“菜谱”。
让我们在当前目录下新建一个文件夹 cookbooks,然后切换到该目录,调用 chef generate cookbook learn_chef_httpd 会自动为我们生成一个“烹饪手册”。“烹饪手册”的目录结构如下:
图 5. “烹饪手册”目录结构其中 recipes 目录下的 default.rb 是默认的“菜谱”,让我们将其中内容替换为之前编写的“菜谱”。
现在我们要将原来“菜谱”中的 HTML 代码移到一个外部文件中,使用 chef generate template learn_chef_httpd index.html 命令生成模板文件 index.html.erb,该文件被放置在 learn_chef_httpd/templates/default 目录下。然后将该文件内容替换为之前的 HTML,修改 default.rb,引用该模板,最终的“菜谱”变成了下面这个样子:
清单 3. default.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
package 'httpd'

service 'httpd' do
    action [:start, :enable]
end

template '/var/www/html/index.html' do
  source 'index.html.erb'
end

service 'iptables' do
  action :stop
end




在命令中执行 sudo chef-client --local-mode –runlist ‘recipe[learn_chef_httpd]’ ,打开浏览器,访问  ,如果能正常访问,那么恭喜您完成了自己的第一个“烹饪手册”!
真实环境下的 Chef上面的例子只是为了展示如何编写“菜谱”和“烹饪手册”,真实环境下的 Chef 却不是这样工作的。在真实环境下,系统管理员在一台电脑上编写 Chef 脚本,然后使用上述方式调试,调试成功后,将脚本上传至 Chef 服务器,我们从控制台向 Chef 服务器发命令,Chef 服务器会将配置下发到各个待配置服务器,在每个服务器上运行 Chef,完成对服务器的配置。
图 6.    Chef 原理为此,我们需做三点准备:一台用于编写 Chef 脚本的电脑、一台 Chef 服务器、很多待配置的服务器。我们已经有了一台可以编写 Chef 脚本的电脑,为了方便学习,Chef 服务器可以选用 ,另外需要几台待配置的服务器,记得不要在服务器上安装 Chef,当我们配置这些服务器时,Chef 会自动在上面安装所需的工具。
注册成功 Chef 的托管服务后,先创建一个组织,然后下载与之对应的 Starter Kit,解压到当前目录,该工具是用来做认证的,有了它,才可以从本地连接 Chef    服务器。现在让我们删除以前创建的“烹饪手册”,转而从  上下载一个现成的手册。Chef 超市是一个开发者交流“烹饪手册”的地方,因为配置服务器的很多操作都是通用的,所以人们把这些配置做成手册,放在一个地方,大家都能使用。我们编写 Chef 脚本,往往也是先上 Chef 超市去看看有没有可用的手册,如果有,直接拿过来,或者在此基础上修改一下就能用,如果没有,再考虑编写自己的手册。使用如下命令下载前面配置 Web 服务器的手册:
1
knife cookbook site download learn_chef_httpd




将下载后的手册解压到 cookbooks 目录,删除压缩包:
1
2
tar -zxvf learn_chef_httpd-0.1.0.tar.gz -C cookbooks
rm learn_chef_httpd*.tar.gz




接下来将该手册上传至 Chef 服务器,即我们刚才注册的 Chef 托管服务:
1
knife cookbook upload learn_chef_httpd




打开托管服务控制台,在 Policy 选项卡下就能看见刚刚上传成功的“烹饪手册”。接下来我们要做的工作是告诉 Chef 服务器来帮我们让服务器自举,这一步会通过 SSH 登录到待配置的服务器,下载并安装 Chef,然后下载执行刚刚上传到 Chef 服务器上的“烹饪手册”。该操作只在第一次配置服务器时需要,自举成功后,以后就再不需要自举了:
1
2
3
knife bootstrap {{address}} --ssh-user {{user}} --ssh-password '{{password}}' \
--sudo --use-sudo-password --node-name node1 \
--run-list 'recipe[learn_chef_httpd]'




将其中的{{address}}、{{user}}、{{password}}替换为待配置服务器的真实地址、用户名和密码。打开浏览器,输入服务器地址,看看是否能访问定制的主页?
返回列表