使用 Chef 自动化部署一个 Web 服务器(3)
 
- UID
- 1066743
|

使用 Chef 自动化部署一个 Web 服务器(3)
获取服务器信息Chef 不光可以管理服务器,同时服务器将自己的信息上传至 Chef 服务器。使用如下命令查看当前组织里被管理的服务器:
使用如下命令查看服务器信息,包括服务器的 IP 地址、机器名、操作系统等信息:
有了这些信息后,我们可以重新修改模板,让其显示给定服务器的信息:
清单 4. index.html.erb1
2
3
4
5
| <html>
<body>
<h1>hello from <%= node['fqdn'] %></h1>
</body>
</html>
|
再将“烹饪手册”上传至 Chef 服务器,然后使用如下命令配置服务器:
1
2
| knife ssh {{address}} 'sudo chef-client' --manual-list \
--ssh-user {{user}} --ssh-password '{{password}}'
|
同理,将{{address}}、{{user}}、{{password}}替换为待配置服务器的真实地址、用户名和密码。打开浏览器,输入服务器地址,看看改动是否生效?
只要一台服务器配置成功,我们便可以用同样的方法配置几十台、上百台。而且一旦配置发生变化,我们只需修改脚本,所有服务器便可以获得相同的更新,这个时候,Chef 的威力就显示出来了。
chef 还是 knife?细心的您可能会注意到,上面的命令,一些是 chef *****,一些却是 knife *****。初次接触 Chef,很容易被这些命令搞混。这里有一个简单的规则:本地执行的命令以 chef 打头,需要远程连接到 Chef 服务器或待配置服务器的命令以 knife 打头。
最后,让我们再复习一遍本文中所使用到的命令:
- 运行“菜谱”
1
| chef-client --local-mode hello.rb
|
- 使用 Chef 生成“烹饪手册”
1
| chef generate cookbook learn_chef_httpd
|
- 使用 Chef 生成模板
1
| chef generate template learn_chef_httpd index.html
|
- 使用 Chef 运行“烹饪手册”
1
| chef-client --local-mode –runlist ‘recipe[learn_chef_httpd]’
|
- 从 Chef 超市下载“烹饪手册”
1
| knife cookbook site download learn_chef_httpd
|
- 向 Chef 服务器上传“烹饪手册”
1
| knife cookbook upload learn_chef_httpd
|
- 服务器自举
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]'
|
- 获取当前组织下的服务器列表
- 显示服务器信息
- 使用 Chef 远程运行“烹饪手册”,配置服务器
1
2
| knife ssh {{address}} 'sudo chef-client' --manual-list \
--ssh-user {{user}} --ssh-password '{{password}}'
|
结束语随着云计算和 DevOps 技术的发展,有人断言系统管理员和 DBA 会面临失业,未来的云计算公司和数据库公司只会雇佣少数系统管理员和 DBA 管理他们的 IT 基础设施和数据库。虽然作者不大赞成“机器替代人工”这一观点,但提早下手,学点东西总不是坏事,所谓技多不压身嘛。
Chef 能够实现服务器配置的自动化,在 DevOps 运动中占有重要的位置。本文通过一个配置 Web 服务器的例子,一步步引导大家如何使用 Chef。希望您读完本文,能编写出自己的第一个“烹饪手册”。 |
|
|
|
|
|