Chef
chef
- 环境管理
- 以自动化的方式进行服务器环境初始化或变更工作
environment
Chef环境由三个部分组成:Chef server,Workstation, Node(Client)。
Chef server是Chef环境的中枢,其中存储了基础设施环境的信息。你可以使用开源Chef server,也可以使用Chef官方提供的商业服务:Enterprise Chef。
Workstation是你的工作台,一般情况下就是你的开发机器。你会在Workstation中创建cookbook,并且上传到Chef server,以及其他与Chef相关的工作。
一个Node就是你基础设施环境中的一台服务器,也就是你用Chef来管理的机器。
一个Node可以是一台物理机器,一个虚拟机,也可以是cloud环境中的一个instance,甚至是你网络环境中的一个交换机或路由器。
如果你想要在Node上部署环境,那么Node会与Chef server进行交互获取信息,并在Node上执行环境初始化操作。
recipe
每个cookbook都会包含一到多个recipe(默认是default.rb)。一个recipe就是实现cookbook所描述场景的步骤。看以下这个简单的recipe:
package 'apache2' do
action :install
end
service 'apache2' do
action [ :enable, :start ]
end
cookbook_file '/var/www/index.html' do
source 'index.html'
mode '0644'
end
可以看出这个recipe分为三个步骤,分别是安装apache2、启动apache2、拷贝文件。
resource和provider
resource就是recipe中的配置项,可以是package、service、bash等等。provider就是为这些resource提供实现的程序。以编程语言来描述的话,resource定义了接口,provider提供了不同平台的实现。