关闭

自动化配置服务器 — 配置管理系统

发表于:2015-5-12 11:14

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:王皓    来源:51Testing软件测试网采编

  在计划 Drupal 从头到尾这个系列课程的时候,我觉得我们的问题是,不仅仅是要把东西做出来,怎么去做,用什么方法,这个流程对不对,能不能简化,自动化,团队化,这些也非常重要。首先我想的是,能不能找一种自动化的方法,去在本地配置一个开发 Drupal 的环境,并且直接就把 Drupal 安装好了,甚至可以自动去安装一些常用的模块。
  我经常跟大伙说,您要在本地电脑上,用虚拟机手工去搭建一个开发环境,这个虚拟机用 Vagrant 去管理。按照 Web 开发环境这个学习手册,你应该可以做到手工去搭建这个环境。我推荐先亲自动手去搭建这个环境,是因为,您需要了解自己都做了什么,每一个步骤是什么意思,熟悉在命令行界面下工作。这些都了解了以后 ,我们就要用一种自动化的方式去做这些事了,重复的工作一点也不美。
  学过 Shell 的朋友,会觉得自动化搭建一个环境,简直是小菜,写一些 Shell 代码,然后让服务器去执行就行了。用过阿里云的朋友,也会有印象,他们提供了一键安装环境的小工具,那应该就是用 Shell 写的。Shell 当然很厉害,不过对于一般的用户,是不太友好的,您可能先要去学习这门语言。一个简单的 Shell 程序,也可以是我们平时操纵服务器执行的命令的列表,把它们放到一个 Shell 文件里,然后去执行它。
  继续寻找解决方案,应该就会遇见配置管理系统(Configuration Management System),以后简称为 CM。一般就是,您在自己电脑上,按照 CM 提供的方式,去创建一些脚本,也就是用特定的方法去描述一下配置环境的整个过程。这些脚本就像是剧本,把它交给服务器,服务器会按照剧本的要求,调出不同的演员(包管理工具,用户,文件 ... ),去完成你写的剧本。
  可以选择的 CM 工具有挺多的,Chef,Puppet,Salt,Ansible ...  我有个习惯,如果一个工具有多个选择,我开始又不知道到底哪个适合我,我会去对比这些工具的官方网站,还有他们写的文档。看网站的设计,大概就能猜到,Chef 跟 Puppet 一定是老牌的工具,从它们的网站设计的风格可以看出来。Salt 跟 Ansible 的官方网站比较现代,所以应该比较新。从直觉上,我想我应该选择 Salt 或者 Ansible,我觉得它们应该是我喜欢的工具。不过早就听过 Chef 的大名,所以,就先试了一下它,没能成。后来又试了下 Ansible ,觉得这个是我想要的 。
  Chef
  这些 CM ,有些会要求你把剧本上传到一个中央配置服务器,再由这台服务器去分配让哪一种服务器去演出你写好的剧本,同样, 你修改了剧本以后,配置服务器也会收到,然后再去分配让某些服务器去执行修改之后的剧本。Chef 用的就是这种方法,它的剧本叫 Cookbooks(烹饪书),剧本里的不同情节叫 Recipes(配方),这些 Recipes 就是配置你的服务器的一些步骤。挺形象,因为 Chef 就是大厨的意思。
  Chef 也有不需要中央配置服务器的,叫 Chef Solo ,就是把写好的剧本,直接放到服务器上去执行。不管怎么样,Chef 都要求你必须在要配置的服务器上安装 Chef 的客户端软件。Chef 是 Ruby 写的,所以你要安装 Ruby,然后用 gem 去安装 Chef。
  例子
  来看一个简单的 Chef 的配方,在服务器上创建一个文件,文件里的内容是一句问候语。把下面的内容放到一个叫 hello.rb 的文件里:
  file "#{ENV['HOME']}/example.txt" do
  action :create
  content "您好 #{ENV['USER']}!"
  end
  学过 Ruby 语言的朋友一看就知道,上面是一段 Ruby 代码。最开始的 file ,在 Chef 里面叫做资源,file 就是跟文件相关的资源,后面的 #{ENV['HOME']} ,表示当前登录用户的主目录,example.txt 是要处理的文件的名字。具体要做的事,是在 do 与 end 之间,action :create ,表示我要去创建一个文件,文件里的内容就是在 content 后面的东西。
  执行它:
  chef-apply hello.rb
  返回:
  Recipe: (chef-apply cookbook)::(chef-apply recipe)
  * file[/home/vagrant/example.txt] action create
  - create new file /home/vagrant/example.txt
  - update content in file /home/vagrant/example.txt from none to b4b23f
  --- /home/vagrant/example.txt2015-02-27 02:20:26.630982470 +0000
  +++ /home/vagrant/.example.txt20150227-2366-1hx9lnp2015-02-27 02:20:26.630982470 +0000
  @@ -1 +1,2 @@
  +您好 vagrant!
  - restore selinux security context
  结果:
  在当前登录的用户的主目录下,会有一个文件叫 example.txt,因为我当前登录到系统上的用户的名字是 vagrant,所以文件里的内容是:“ 您好 vagrant! ” 。
  再看一个 Chef 的 Recipe,比如我们要去安装一个包叫 Vim ,这个配方看起来像这样:
  package "vim" do
  action :install
  package_name "vim"
  end
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号