Chef - 单机设置



Chef-Solo 是一款开源工具,可在本地运行,并允许使用 Chef Cookbook 配置虚拟机,而无需复杂的 Chef 客户端和服务器配置。它有助于在自行创建的服务器上执行 Cookbook。

在本地机器上运行 Chef-Solo 之前,需要在本地机器上安装以下两个文件。

  • Solo.rb - 此文件告诉 Chef 在哪里可以找到 Cookbook、角色和数据包。

  • Node.json - 此文件设置运行列表和任何节点特定的属性(如果需要)。

solo.rb 配置

以下是配置 solo.rb 的步骤。

步骤 1 - 在 Chef 仓库中创建一个 solo.rb 文件。

current_dir       = File.expand_path(File.dirname(__FILE__)) 
file_cache_path   "#{current_dir}" 
cookbook_path     "#{current_dir}/cookbooks" 
role_path         "#{current_dir}/roles" 
data_bag_path     "#{current_dir}/data_bags" 

步骤 2 - 将文件添加到 git 仓库。

$ git add solo.rb 

步骤 3 - 在 Chef 仓库中创建一个 node.json 文件,内容如下。

{ 
   "run_list": [ "recipe[ntp]" ] 
} 

步骤 4 - 使用 knife 获取 Chef 仓库中的 ntp cookbook。

vipin@laptop:~/chef-repo $ knife cookbook site install ntp 
Installing ntp to /Users/mma/work/chef-repo/cookbooks 
…TRUNCATED OUTPUT… 
Cookbook ntp version 1.3.0 successfully installed 

步骤 5 - 将 node.json 文件添加到 Git。

$ git add node.json 

步骤 6 - 提交并将文件推送到 git 仓库。

vipin@laptop:~/chef-repo $ git commit -m "initial setup for Chef Solo" 
vipin@laptop:~/chef-repo $ git push 
Counting objects: 4, done. 
Delta compression using up to 4 threads. 
...TRUNCATED OUTPUT... 
To [email protected]:mmarschall/chef-repo.git 
b930647..5bcfab6 master -> master 

在节点上运行 Cookbook

步骤 1 - 登录到要配置 Chef-Solo 的节点。

步骤 2 - 在机器上克隆 Chef 仓库。

$ git clone $URL_PATH 

步骤 3 - cd 到 Chef 仓库。

$ cd chef-repo 

最后,运行 Chef-Solo 以使节点收敛 -

$ sudo chef-solo -c solo.rb -j node.json 
[2017-20-08T22:54:13+01:00] INFO: *** Chef 11.0.0 *** 
[2017-20-08T22:54:13+01:00] INFO: Setting the run_list to 
["recipe[ntp]"] from JSON 
...TRUNCATED OUTPUT... 
[2012-12-08T22:54:16+01:00] INFO: Chef Run complete in 2.388374 
seconds 
[2012-12-08T22:54:16+01:00] INFO: Running report handlers 

solo.rb 将 Chef-Solo 配置为在其当前目录(Chef 仓库)中查找其 Cookbook、角色和数据包。

Chef-Solo 从 JSON 文件中获取其节点配置。在我们的示例中,我们将其称为 node.json。如果要管理多个服务器,则每个节点都需要一个单独的文件。然后,Chef-Solo 只会根据在 solo.rb 和 node.json 中找到的配置数据执行 Chef 运行。

广告